Instrucció de retorn

declaració de programació que atura l'execució de la subrutina actual, retornant opcionalment un valor de retorn al codi que va cridar la subrutina From Wikipedia, the free encyclopedia

Remove ads

A la programació d'ordinadors, una instrucció de retorn fa que l'execució abandoni la subrutina actual i es reprengui en el punt del codi immediatament després de la instrucció que va cridar la subrutina, coneguda com la seva adreça de retorn. L'adreça de retorn es desa mitjançant la rutina de crides, avui normalment a la pila de crides del procés o en un registre. Les declaracions de retorn en molts llenguatges de programació permeten que una funció especifiqui un valor de retorn que es retornarà al codi que va cridar la funció.

Remove ads

Visió general

En C i C++, return exp ; (on exp és una expressió) és una instrucció que diu a una funció que retorni l'execució del programa a la funció de crida i que informi del valor de exp. Si una funció té el tipus de retorn void, la instrucció de retorn es pot utilitzar sense valor, en aquest cas el programa només surt de la funció actual i torna a la que fa la crida.[1][2] Una sintaxi similar s'utilitza en altres idiomes com Modula-2[3] i Python.[4]

A Pascal no hi ha cap declaració de retorn. Les funcions o procediments tornen automàticament en arribar a la seva última declaració. El valor de retorn d'una funció es proporciona dins de la funció fent una assignació a un identificador amb el mateix nom que la funció.[5] Tanmateix, algunes versions de Pascal proporcionen una funció especial Exit( exp ); que es pot utilitzar per retornar un valor immediatament des d'una funció o, sense paràmetres, per retornar immediatament des d'un procediment.[6] Igual que Pascal, FORTRAN II, Fortran 66, Fortran 77 i versions posteriors de Fortran especifiquen valors de retorn mitjançant una assignació al nom de la funció, però també tenen una instrucció de retorn; aquesta instrucció no especifica un valor de retorn i, per a una funció, fa que es retorni el valor assignat al nom de la funció.[7][8][9]

En alguns altres idiomes s'utilitza un paràmetre de sortida definit per l'usuari en lloc de l'identificador de funció.[10] Oberon (Oberon-07) té una clàusula de retorn en lloc d'una instrucció de retorn. La clàusula de devolució es col·loca després de l'última declaració de l'òrgan del procediment. Això permet la comprovació en temps de compilació del retorn adequat i el valor de retorn del procediment.


Alguns llenguatges de programació orientats a expressions, com Lisp, Perl i Ruby, permeten al programador ometre una instrucció de retorn explícita, especificant en canvi que l'última expressió avaluada és el valor de retorn de la subrutina. En altres casos, es retorna un valor nul si no hi ha una declaració de retorn explícita: a Python, el valor None es retorna quan s'omet la instrucció de retorn,[11] mentre que a JavaScript es retorna el valor undefined. A Windows PowerShell, totes les expressions avaluades que no es capturen (p. ex., assignades a una variable, emeses a void o canalitzades a $null) es retornen des de la subrutina com a elements en una matriu, o com un únic objecte en el cas que només hi hagi un objecte. no ha estat capturat.

A Perl, un valor de retorn o valors d'una subrutina poden dependre del context en què es va cridar. La distinció més fonamental és un context escalar on el codi de crida espera un valor, un context de llista on el codi de crida espera una llista de valors i un context buit on el codi de crida no espera cap valor de retorn. Una subrutina pot comprovar el context utilitzant la funció wantarray. S'utilitza una sintaxi especial de retorn sense arguments per retornar un valor no definit en un context escalar i una llista buida en un context de llista. El context escalar es pot dividir encara més en contextos booleà, nombre, cadena i diversos tipus de referència. A més, un objecte sensible al context es pot retornar mitjançant una seqüència de retorn contextual, amb una avaluació mandrosa dels valors escalars.

Remove ads

Referències

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads