Traduction des arbres programmatiques en programmes ADA


Traduction des arbres programmatiques en programmes ADA

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 : « fonction­1 » 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, …)

Télécharger le cours complet