Traduction de l’arbre programmatique en programme ADA
Déclaration des variables
Les assertions de déclaration regroupent toutes les variables qui sont utilisées dans le programme, il faudra les « déclarer » de la manière suivante :
nom_variable : type_variable ;
type_variable
Entiers integer
réels float
caractères character
booléens boolean (prendra 2 valeurs True, False)
Tableaux de N éléments Array(1..N) of type_variable
Exemples :
a entier => a : integer ;
T tableau de 50 réels => T : array(1..50) of float ;
Attention !!! En ADA, l’écriture des noms de variable ou de programme doit respecter certaines règles : lettres, chiffres (0 à 9) et trait bas sont autorisés et le nom doit commencer par une lettre. (Exemple : « fonction1 » est interdit, mais « fonction_1 » est autorisé) .
Structures de l’arbre programmatique
Tous les caractères ou mots en gras sont des mots réservés dans le langage ADA.
§Expression : une expression peut être réduite à une seule constante (comme dans le tableau) , mais aussi être composée d’une ou plusieurs opérations. L’expression sera calculée et sa valeur pourra alors être affectée à la variable donnée.
Exemple : a := 3*b ; dans un premier temps l’ordinateur multipliera la valeur de b par 3, le résultat de l’expression dépendra donc de la valeur stockée dans la variable b ; puis dans un deuxième temps la valeur de l’expression sera affectée à (stockée dans) la variable a.
Une expression a un certain type et on ne pourra pas affecter à une variable le résultat d’une expression de type différent (exemple : si dans notre exemple précédent b est un entier, alors la multiplication sera la multiplication de 2 entiers, donc l’expression est entière et ne peut être affectée à une variable réelle par exemple.)
Exemples du cours
1. Moyenne de 3 nombres
Programme Moyenne de 3 nombres
with Ada.integer_Text_Io ; use Ada.integer_Text_Io; pour lire/écrire des entiers with Ada.float_Text_Io ; use Ada.float_Text_Io; pour lire/écrire des flottants with Text_Io; use Text_Io; pour lire/écrire des caractères
with Ada.Numerics.Elementary_Functions; use Ada.Numerics.Elementary_Functions; pour utiliser les fonctions mathématiques (sqrt, sin, …)
procedure Moyen3Nombres is Début du programme que vous avez nommé « nom_à_mettre »
a,b,c : float ;
res, moyenne : float ;
begin
– Saisie des 3 nombres (a,b,c)
put (« Entrer a : « ) ; ajout par rapport à l’AP, l’utilisateur doit savoir ce que le programme attend. Le texte entre guillemets est écrit tel quel à l’écran
get(a) ; lire(a)
put (« Entrer b : « ) ; ajout par rapport à l’AP
get(b) ; lire(b)
put (« Entrer c : « ) ; ajout par rapport à l’AP
get(c) ; lire(c)
– Calcul moyenne res := a+b+c ;
moyenne := res / 3.0 ; il faut avoir une division réelle
– affichage du résultat
put (« La moyenne est : « ) ; ajout par rapport à l’AP. Le texte entre » » est écrit à l’écran put (moyenne) ; la valeur stockée dans moyenne est affichée à l’écran
end Moyen3Nombres ;
2. Résolution de ax+b=0
Programme Résolution de ax+b=0
with Ada.integer_Text_Io ; use Ada.integer_Text_Io; pour lire/écrire des entiers with Ada.float_Text_Io ; use Ada.float_Text_Io; pour lire/écrire des flottants with Text_Io; use Text_Io; pour lire/écrire des caractères
with Ada.Numerics.Elementary_Functions; use Ada.Numerics.Elementary_Functions; pour utiliser les fonctions mathématiques (sqrt, sin, …)
procedure ResEqDegre1 is Début du programme que vous avez nommé « nom_à_mettre »
a,b,c : float ;
x : float ;
begin
– Saisie des 2 nombres (a,b)
put (« Entrer a : « ) ; ajout par rapport à l’AP, l’utilisateur doit savoir ce que le programme attend. Le texte entre guillemets est écrit tel quel à l’écran
get(a) ; lire(a)
put (« Entrer b : « ) ; ajout par rapport à l’AP
get(b) ; lire(b)
– Résolution de ax+b=0 et affichage du résultat if (a /= 0) then
x := b/a ;
put (« La solution est : « ) ; ajout par rapport à l’AP. Le texte entre » » est écrit à l’écran put (x) ; la valeur stockée dans x est affichée à l’écran
else
if (b = 0) then
put (« Il y a une infinité de solutions « ) ;
else
put (« Il n’y a pas de solution « ) ;
end if ;
end if;
end ResEqDegre1 ;
3. Saisie d’un nombre positif
Programme Saisie d’un nombre positif entier (précision supplémentaire par rapport au cours)
with Ada.integer_Text_Io ; use Ada.integer_Text_Io; pour lire/écrire des entiers with Ada.float_Text_Io ; use Ada.float_Text_Io; pour lire/écrire des flottants with Text_Io; use Text_Io; pour lire/écrire des caractères
with Ada.Numerics.Elementary_Functions; use Ada.Numerics.Elementary_Functions; pour utiliser les fonctions mathématiques (sqrt, sin, …)