Une fonction imbriquée ou fonction interne est une fonction dont la définition est encapsulée dans une autre fonction.
Elle ne peut être appelée que par la fonction englobante ou par des fonctions imbriquées directement ou non dans la même fonction
englobante.
En d'autres termes, la portée de la fonction imbriquée est limitée par la fonction englobante; elle offre un contrôle très strict de leur visibilité (scope) par le reste du programme.
Un exemple avec la syntaxe de Pascal :
function E(x: integer): integer
function F(y: integer): integer
begin
F := x + y
end
begin
E := F(3)
end
Et le même exemple avec une syntaxe façon C :
int E(int x)
{
int F(int y)
{
return x + y;
}
return F(3);
}
Remarque : Le langage C standard ne supporte pas cette construction. Mais certains compilateurs l'acceptent.
La fonction F est imbriquée dans E (notez que x est visible dans F, mais y est invisible en dehors de F).
Exemple en python :
def pourcentages(a,b,c):
def pc(x):
return (x*100.0)/(a+b+c)
return pc(a),pc(b),pc(c)
Les fonctions imbriquées sont une forme d'encapsulation et sont utilisées pour diviser des tâches procédurales en sous-tâches qui n'ont de signification que locale. Elle permet d'éviter la pollution de l'espace global de noms par des noms de fonctions, variables... dont l'usage est restreint à une petite partie du programme.
Parmi les langages les plus connus qui supportent les fonctions imbriquées, il y a
Algol, PL/I, Pascal, Ada, Fortran, Scheme, Common Lisp, Python, D et Perl.
En Scheme et la plupart des langages fonctionnels,
les fonctions imbriquées sont une manière commune d'implanter des fonctions comportant des boucles.
Une simple fonction imbriquée récursive ou récursion terminale est créée,
qui se comporte comme la boucle principale, alors que la fonction englobante effectue les actions qui ne doivent être faites qu'une fois.
Dans les cas plus complexes, plusieurs fonctions mutuellement récursives peuvent être créées comme des fonctions imbriquées.
Référence circulaire
Pile d'appel
Catégorie:Code source
Ca
Cette page est générée automatiquement et peut contenir des informations qui ne sont pas correctes, complètes, à jour ou pertinentes par rapport à votre recherche. Il en va de même pour toutes les autres pages de ce site. Veillez à vérifier les informations auprès des sources officielles de l'EPFL.
En informatique, un sous-programme est un sous-ensemble du programme dans sa hiérarchie fonctionnelle. Un sous-programme doit pouvoir mémoriser l'adresse du code appelant pour permettre, à l'aide d'une instruction spécifique, de charger le pointeur de programme avec cette adresse de retour. Cela correspond bien souvent à une routine. Cependant, la notion de sous-programme est un peu plus générale, car il ne possède pas nécessairement son propre espace de noms. C'est le cas par exemple des sous-programmes appelés par l'instruction en BASIC.
Euclid is an imperative programming language for writing verifiable programs. It was designed by Butler Lampson and associates at the Xerox PARC lab in the mid-1970s. The implementation was led by Ric Holt at the University of Toronto and James Cordy was the principal programmer for the first implementation of the compiler. It was originally designed for the Motorola 6809 microprocessor. It was considered innovative for the time; the compiler development team had a $2 million budget over 2 years and was commissioned by the Defense Advanced Research Projects Agency of the U.
C# (C sharp en anglais britannique) est un langage de programmation orientée objet, commercialisé par Microsoft depuis 2002 et destiné à développer sur la plateforme Microsoft .NET. Il est dérivé du C++ et très proche du Java dont il reprend la syntaxe générale ainsi que les concepts, y ajoutant des notions telles que la surcharge des opérateurs, les et les délégués. Il est utilisé notamment pour développer des applications web sur la plateforme ASP.NET, ainsi que des jeux vidéo avec le moteur de jeux Unity.
The course introduces digital design and fabrication methods by combining the transfer of technical skills with theoretical knowledge and critical reflection. Topics include: scripting/programming for
We teach the fundamental aspects of analyzing and interpreting computer languages, including the techniques to build compilers. You will build a working compiler from an elegant functional language in
Ce cours aborde les concepts fondamentaux de la programmation et de la programmation orientée objet (langage JAVA). Il permet également de se familisarier avec un environnement de développement inform
Learn to optimize on smooth, nonlinear spaces: Join us to build your foundations (starting at "what is a manifold?") and confidently implement your first algorithm (Riemannian gradient descent).
The purpose of this Thesis is to develop, test, and characterize different models attempting to tackle the problem of measurement of galaxy shapes applied in interferometric observations. Shape measurement is a tool for estimating the underlying shear due ...
This paper presents a first implementation of gradient, divergence, and particle tracing schemes for the EMC3 code, a stochastic 3D plasma fluid code widely employed for edge plasma and impurity transport modeling in tokamaks and stellarators. These scheme ...
Weinheim2024
, ,
Embedded systems confront two opposite goals: low-power operation and high performance. The current trend to reach these goals is toward heterogeneous platforms, including multi-core architectures with heterogeneous cores and hardware accelerators. The lat ...