Rapport de retour

Dans la programmation par ordinateur , un rapport de retour fait laisser l'exécution la sous-routine courante et le résumé au point la sous-routine s'est appelé -- connu en tant que son adresse de retour . L'adresse de retour est sauvée, habituellement sur la pile des appels de du du processus , en tant qu'élément de l'opération de faire l'appel de sous-routine. Les rapports de retour dans beaucoup de langues permettent à une fonction de spécifier une valeur de retour de à passer de nouveau au code qui a appelé la fonction.

Dans le C++ , exp de return ; (où le exp de est une expression ) est un rapport qui indique une fonction renvoyer l'exécution du programme à la fonction d'appel, et rapporte la valeur du exp de . Si une fonction n'a pas un type de retour (c., son type de retour est le vide), le rapport de retour peut être employé sans valeur, dans ce cas le programme juste éclate de la fonction courante et revient à appelante.

Dans le Pascal il n'y a aucun rapport de retour. Une sous-routine retourne automatiquement quand l'exécution atteint son dernier rapport exécutable. Des valeurs peuvent être retournées par l'attribution à une marque qui a le même nom que la sous-routine (une fonction de en terminologie de Pascal).

Certains langages de programmation, tels que Perl et rubis permettent au programmeur d'omettre un rapport de retour explicite, spécifiant à la place que la dernière expression évaluée est la valeur de retour de la sous-routine. Des valeurs retournées par le programme quand elle se termine sont souvent capturées par les programmes par lots .

Syntaxe

Les rapports de retour viennent dans beaucoup de formes. Les syntaxes suivantes sont les plus communes :

Comme utilisé dans le C , C++ , Java , PHP , C# , Windows PowerShell :

lang=" de return ;

Comme utilisé dans la causerie :

lang=" de ^ value

Comme utilisé dans le blèsent :

lang=" de (valeur de retour)

Comme utilisé en BASIC :

lang=" de RETURN

Comme utilisé dans le Visual Basic .NET

lang=" de Return Value

Critique

Quelques lotisseurs et éducateurs de programmation par ordinateur évitent l'utilisation du rapport de retour explicite excepté à la fin textuelle d'une sous-routine - considérant que, quand elle est employée au " ; early" de retour ; , il souffre de la même sorte de problèmes de lisibilité que le rapport GOTO du . Comme avec GOTO, il y a un problème que dans le dernier développement, un rapport de retour pourrait être négligé par un réalisateur, et une action qui devrait être effectuée à la fin d'une sous-routine (par exemple : une force de rapport de trace) ne pas être exécuté (dans tous les cas).

Cependant, il est courant que le rapport de retour ne devrait pas être considéré en tant que nocif comme GOTO, puisqu'il laisse seulement sauter à un endroit particulier dans la sous-routine - et en conséquence, tend à être employé moins fréquemment. D'ailleurs, la valeur de retour d'une fonction habituellement (dans des langages de programmation contemporains populaires) explicitement est spécifiée dans le rapport de retour.

En outre, dans les langues telles que le Java , la construction de l'essai.finally de peut être employée pour effectuer toujours une action à la fin d'une sous-routine, après que n'importe quelle instruction de retour ait été exécutée. Finalement la clause sera exécutée même si une exception a été jetée (l'exception est automatiquement attrapée, et alors re-jetée après que finalement la clause ait été exécutée, à moins que finalement le lui-même de clause jette une exception). Une fois utilisé convenablement (par exemple pour les poignées de dossier fermantes), ceci évite le besoin pour trouver tous les points de sortie et pour ajouter des rapports superflus juste avant eux, ou au refactor la sous-routine pour enlever les rapports de retour - qui sont des procédures potentiellement sujettes aux erreurs.

de programmation Aspect-orienté par peut également être employé pour réaliser un travail semblable à l'essai.finally de - avec ou sans le comportement exception-contagieux automatique - bien qu'on le prévoie davantage pour exprimer avec concision les comportements qui " ; crosscut" ; plus d'une sous-routine.

Random links:Relier quatre | Chasse à Marsha (chanteur et romancier) | Tourisme de drogue | Declaración_de_vuelta