next up previous contents
Next: Les fonctions Up: Les sous-programmes et les Previous: Les sous-programmes et les   Contents

Les procédures (externes)

Une procédure contient toujours des arguments qui correspondent à des informations qui lui sont transmises ou à des informations qu'elle produit en retour d'appel.

Exemple. création d'une unité de compilation (SUBROUTINE)

 
       SUBROUTINE trinome(a,b,c,x,res1, res2)
          IMPLICIT NONE 
          REAL, INTENT(IN)  :: a,b,c,x
          REAL, INTENT(OUT) :: res1, res2

          res1= a*x*x+b*x+c
          res2= a*x +b
       END SUBROUTINE trinome

C'est une procédure qui fournit dans $ res1$ la valeur de $ a
x^2+bx+c$ et dans $ res2$ la valeur de $ a*x+b$

Les types d'arguments.

Exemple. Programme appel d'une procédure.

 
       PROGRAM calcul
          IMPLICIT NONE
          REAL  :: a = 1., b = 2. ,c = 5. ,x = 33., y= 1.5
          REAL  :: res1, res2, z

          CALL trinome (1.1, 2.2, 3.3, 4.4, res1, res2)  
          print*,'res1=',res1, 'res2 = ',res2
          CALL trinome (a,b,c,y,res1,z)          
          print*,'res1=',res1, 'z = ', z
          CALL trinome (c,b,a,x,z, y)            
          print*,'z=',z, 'y = ',y
          CALL trinome (x,y,res,a,b,c)          
          print*,'b=',b, 'c = ',c
          CALL trinome (x+z,y*x,z*z,a-x,b,c)          
          print*,'b=',b, 'c = ',c
       END PROGRAM calcul
Ce qui importe lors de l'appel de la subroutine trinome est non pas les noms des arguments mais l'ordre et le type dans lequel ils ont été déclaré. Ainsi dans l'exemple précédent
 
       CALL trinome (1.1,2.2,3.3,4.4,res1, res2)
fournit $ res1 = 1.1*4.4*4.4+ 2.2*4.4+3.3$ et $ res2 = 1.1*4.4+ 2.2$
 
       CALL trinome (a,b,c,y,res1,z)
fournit $ res1 = ay^2+by+c$ et $ z = a*y+b$
       CALL trinome (c,b,a,x,z, y)
fournit $ z=cx^2+bx+a$ et $ y = cx+b$
       CALL trinome (x,y,res,a,b,c)
fournit $ b=xa^2+ya+res$ et $ c = xa+y$.
       CALL trinome (x+z,y*x,z*z,a-x,b,c)
fournit ...



Mazen Saad 2002-12-12