Garde (informatique)

Garde (informatique)
Page d'aide sur l'homonymie Pour les articles homonymes, voir Garde.

En informatique, une garde est une expression de type booléen qui a pour valeur vrai si l'exécution du programme doit continuer dans la branche en question.
Le terme est utilisé notamment dans les langages informatiques Haskell et Clean.
Dans Mathematica, les gardes sont appelés contraintes. Les gardes sont un concept fondamental des commandes gardées, un langage de méthode formelles.
Les gardes peuvent être utilisées pour augmenter le filtrage par motif avec la possibilité de sauter un motif même si la structure passe le filtre. Les expressions booléennes dans une instruction conditionnelle répondent aussi à la définition de garde mais elles sont appelées conditions.

Dans l'exemple suivant en langage Haskell, les gardes apparaissent entre chaque paire de "|" et "=" :

f x
  | x > 0     = 1
  | otherwise = 0

C'est similaire à la notation mathématique suivante :


f(x) = \left\{ \begin{matrix} 
               1   & \mbox{si } x>0 \\ 
               0   & \mbox{sinon} 
               \end{matrix} 
       \right.

Dans la notation Haskell les gardes sont dans les clauses « si » et « sinon ».

S'il y a des gardes parallèles, comme dans l'exemple ci-dessous, elles sont tentées dans l'ordre de la première à la dernière. La première branche qui passe la garde est choisie. Les gardes d'une liste de cas sont typiquement parallèles. Mais, dans une compréhension de liste en Haskell, les gardes sont en série. Si l'une d'elle échoue, la liste d'éléments n'est pas produite. Cela équivaut à combiner les différentes gardes avec un et logique, sauf qu'il peut y avoir d'autres clauses de compréhension de liste parmi les gardes.

Évolution

Une simple expression conditionnelle, déjà présente dès 1963 en CPL, comporte une garde dans la première sous-expression, et une autre sous-expression à utiliser dans le cas où la première ne l'est pas. Quelques façons communes d'écrire ceci :

(x>0) → 1/x; 0
x>0 ? 1/x : 0

Si la seconde sous-expression peut être une expression conditionnelle encore plus simple, nous pouvons donner plusieurs alternatives supplémentaires à essayer avant la chute (fall-through) :

(x>0) → 1/x; (x<0) → -1/x; 0

Déjà en 1966, ISWIM supporte une forme d'expression sans un cas obligatoire de chute, séparant ainsi la garde du concept de choix de forme soit cela/soit ceci. Dans le cas de ISWIM, si aucune des alternatives ne peut être utilisée, la valeur devient alors undefined , qui signifie de ne jamais calculer une valeur.

SASL (1976) est un des premiers langages informatiques à utiliser le terme de garde. Dans ce langage, les fonctions peuvent avoir plusieurs définitions et celle qui est appliquée est choisie selon les gardes qui suivent chaque définition :

fac n = 1,             n = 0
      = n * fac (n-1), n > 0


Motif de garde

En plus d'une garde attachée à un motif, une garde par motif peut désigner l'utilisation de filtrage par motif dans le contexte d'une garde. En effet, la reconnaissance par un motif signifie le succès de la garde. Cette signification a été introduite par une proposition pour Haskell de Simon Peyton Jones titrée (en)a new view of guards en avril 1997 et été implantée. Cette fonctionnalité permet d'utiliser des motifs dans les gardes d'un motif.

Un exemple d'Haskell ainsi étendu :

clunky env var1 var2
  | Just val1 ← lookup env var1

, Just val2 ← lookup env var2

  = val1 + val2

…other equations for clunky…

On le lit ainsi : "Clunky pour un environnement et deux variables, si le lookups(?) des variables de l'environnement produit des valeurs, est la somme des valeurs.…" Comme dans une compréhension de liste, les gardes sont en série, et si l'une d'elle échoue la branche n'est pas suivie.


Références


Wikimedia Foundation. 2010.

Contenu soumis à la licence CC-BY-SA. Source : Article Garde (informatique) de Wikipédia en français (auteurs)

Игры ⚽ Нужно сделать НИР?

Regardez d'autres dictionnaires:

  • Chien De Garde (Informatique) — Pour les articles homonymes, voir Chien de garde (homonymie). Un chien de garde, encore désigné sous l anglicisme watchdog, est un circuit électronique ou un logiciel utilisé en électronique numérique pour s assurer qu un automate ou un… …   Wikipédia en Français

  • Chien de garde (informatique) — Pour les articles homonymes, voir Chien de garde (homonymie). Un chien de garde, encore désigné sous l anglicisme watchdog, est un circuit électronique ou un logiciel utilisé en électronique numérique pour s assurer qu un automate ou un… …   Wikipédia en Français

  • Informatique Légale — On désigne par informatique légale ou investigation numérique légale l application de techniques et de protocoles d investigation numériques respectant les procédures légales et destinée à apporter des preuves numériques à la demande d une… …   Wikipédia en Français

  • Informatique legale — Informatique légale On désigne par informatique légale ou investigation numérique légale l application de techniques et de protocoles d investigation numériques respectant les procédures légales et destinée à apporter des preuves numériques à la… …   Wikipédia en Français

  • Informatique légiste — Informatique légale On désigne par informatique légale ou investigation numérique légale l application de techniques et de protocoles d investigation numériques respectant les procédures légales et destinée à apporter des preuves numériques à la… …   Wikipédia en Français

  • INFORMATIQUE ET SCIENCES HUMAINES - Le droit de l’informatique — Nombreuses sont aujourd’hui les interactions du droit et de l’informatique. Si l’informatique juridique documentaire devient indispensable au juriste qui doit apprendre à interroger les grandes banques de données, d’un autre côté, comme tout… …   Encyclopédie Universelle

  • INFORMATIQUE - L’informatique de gestion — L’informatique peut être utilisée pour répondre à des besoins divers, tels que le contrôle de processus industriels, le calcul scientifique et technique, la gestion des organisations. Parmi ces applications, il en est une qui revêt une importance …   Encyclopédie Universelle

  • garde-barrière — ● n. m. ►COP Syn. de firewall. Système logiciel ou matériel utilisé pour empêcher les intrusions non autorisées sur un réseau. On rencontre plus souvent l autre version française: pare feu …   Dictionnaire d'informatique francophone

  • Informatique légale — On désigne par informatique légale ou investigation numérique légale l application de techniques et de protocoles d investigation numériques respectant les procédures légales et destinée à apporter des preuves numériques à la demande d une… …   Wikipédia en Français

  • Informatique — Les moyens de calcul informatique peuvent établir une prévision météorologique à plusieurs jours grâce à la modélisation climatique. L informatique est le domaine d activité scientifique, technique et industriel concernant le traitement… …   Wikipédia en Français

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”