Section courante

A propos

Section administrative du site

Dans le langage Ada, la façon d'écrire une procédure et une fonction est vraiment différente. En Ada on pense à la manière d'un algorithme, la syntaxe est très explicite.

Procédure

Voici tout d'abord la syntaxe d'une procédure :

Procedure nomdeprocédure(paramètres) is
Definition de constante;
Definition de variable;
Begin
  instruction_exécuté1;
  instruction_exécuté2;
  instruction_exécuté3;
  ...
End nomdeprocédure;

Exemple

Voici un exemple d'une utilisation typique de cette instruction :

  1. with TEXT_IO; use TEXT_IO;
  2.  
  3. PROCEDURE ProcedureSamples IS 
  4.    
  5.    PROCEDURE Mafonction IS BEGIN
  6.        PUT_LINE("Fonction sans retour de valeur !");
  7.    END Mafonction; 
  8.  
  9. BEGIN
  10.   mafonction;
  11. END ProcedureSamples;

on obtiendra le résultat suivant :

Fonction sans retour de valeur !

Fonction

La fonction de son côté, utilise le nom de la fonction pour retourner la valeur de retour et ne fait pas sortir de la fonction après avoir insérer une valeur. Il n'y a pas de position obligatoire n'y de nombre limite d'utilisation d'une valeur de retour. Voici sa syntaxe :

Function nomdefonction(paramètres) Return typedefinition is
Definition de constante;
Definition de variable;
Begin
  instruction_exécuté1;
  ...;
  Return valeurderetour;
End;

Exemple

Voici un exemple permettant d'afficher le logarithme inférieurs à 2 en utilisant le mot réservé «FUNCTION» :

  1. WITH TEXT_IO; 
  2. WITH Ada.Numerics.Generic_Elementary_Functions;
  3. USE TEXT_IO;
  4.  
  5. PROCEDURE FunctionSamples IS 
  6.    I:Float;
  7.       
  8.    FUNCTION Ln(X:Float) RETURN Float IS 
  9.       PACKAGE Math IS NEW Ada.Numerics.Generic_Elementary_Functions (Float);
  10.    BEGIN
  11.       RETURN Math.Log(X);
  12.    END Ln; 
  13.  
  14. BEGIN
  15.    I:=0.1;   
  16.    WHILE I <= 2.0 LOOP      
  17.       PUT_LINE("Ln(" & FLOAT'IMAGE(I) & ")=" & FLOAT'IMAGE(Ln(I)));      
  18.       I := I + 0.1;      
  19.    END LOOP;  
  20. END FunctionSamples;

on obtiendra le résultat suivant :

LOG(0.100000)=-2.302585
LOG(0.200000)=-1.609438
LOG(0.300000)=-1.203973
LOG(0.400000)=-0.916291
LOG(0.500000)=-0.693147
LOG(0.600000)=-0.510826
LOG(0.700000)=-0.356675
LOG(0.800000)=-0.223143
LOG(0.900000)=-0.105360
LOG(1.000000)=0.000000
LOG(1.100000)=0.095310
LOG(1.200000)=0.182322
LOG(1.300000)=0.262364
LOG(1.400000)=0.336472
LOG(1.500000)=0.405465
LOG(1.600000)=0.470004
LOG(1.700000)=0.530628
LOG(1.800000)=0.587787
LOG(1.900000)=0.641854


Dernière mise à jour : Samedi, le 25 août 2012