[ << Tutoriel Scheme ] | [Top][Contents][Index] | [ Interfaces pour programmeurs >> ] |
[ < Scheme et les calculs ] | [ Up : Introduction à Scheme ] | [ Définition de procédures > ] |
1.1.6 Scheme et les procédures
Une procédure Scheme est une expression Scheme qui renverra une valeur issue de son exécution. Les procédures Scheme sont capables de manipuler des variables qui ne sont pas définies en leur sein.
Définition de procédures | ||
Prédicats | ||
Valeurs de retour |
[ << Tutoriel Scheme ] | [Top][Contents][Index] | [ Interfaces pour programmeurs >> ] |
[ < Scheme et les procédures ] | [ Up : Scheme et les procédures ] | [ Prédicats > ] |
Définition de procédures
En Scheme, on définit une procédure à l’aide de l’instruction
define
:
(define (nom-fonction argument1 argument2… argumentn) expression-scheme-qui-donnera-une-valeur-en-retour)
Nous pourrions, par exemple, définir une procédure calculant la moyenne de deux nombres :
guile> (define (moyenne x y) (/ (+ x y) 2)) guile> moyenne #<procedure moyenne (x y)>
Une fois la procédure définie, on l’appelle en la faisant suivre, dans une liste, des arguments qui doivent l’accompagner. Calculons maintenant la moyenne de 3 et 12 :
guile> (moyenne 3 12) 15/2
[ << Tutoriel Scheme ] | [Top][Contents][Index] | [ Interfaces pour programmeurs >> ] |
[ < Définition de procédures ] | [ Up : Scheme et les procédures ] | [ Valeurs de retour > ] |
Prédicats
Une procédure Scheme chargée de retourner une valeur booléenne s’appelle un « prédicat » (predicate). Par convention, plutôt que par nécessité, le nom d’un prédicat se termine par un point d’interrogation :
guile> (define (moins-de-dix? x) (< x 10)) guile> (moins-de-dix? 9) #t guile> (moins-de-dix? 15) #f
[ << Tutoriel Scheme ] | [Top][Contents][Index] | [ Interfaces pour programmeurs >> ] |
[ < Prédicats ] | [ Up : Scheme et les procédures ] | [ Scheme et les conditions > ] |
Valeurs de retour
Une procédure Scheme doit toujours renvoyer une valeur de retour, en l’occurrence la valeur de la dernière expression exécutée par cette procédure. La valeur de retour sera une valeur Scheme valide, y compris une structure de donnée complexe ou une procédure.
On peut avoir besoin de regrouper plusieurs expressions Scheme dans une
même procédure. Deux méthodes permettent de combiner des expressions
multiples. La première consiste à utiliser la procédure begin
,
qui permet l’évaluation de plusieurs expressions et renvoie la valeur de
la dernière expression.
guile> (begin (+ 1 2) (- 5 8) (* 2 2)) 4
Une deuxième méthode consiste à combiner les expressions dans un bloc
let
. Ceci aura pour effet de créer une série de liens, puis
d’évaluer en séquence les expressions susceptibles d’inclure ces
liens. La valeur renvoyée par un bloc let est la valeur de
retour de la dernière clause de ce bloc :
guile> (let ((x 2) (y 3) (z 4)) (display (+ x y)) (display (- z 4)) … (+ (* x y) (/ z x))) 508
[ << Tutoriel Scheme ] | [Top][Contents][Index] | [ Interfaces pour programmeurs >> ] |
[ < Prédicats ] | [ Up : Scheme et les procédures ] | [ Scheme et les conditions > ] |