Université des Sciences et Technologies de Lille
Licence Miage - Programmation 1 - TP
Premiers contacts avec ADA
Le but de ce premier TP est d'écrire un petit paquetage
arithmetique qui implante des fonctions sur les entiers.
La spécification du paquetage, contenue dans le fichier arithmetique.ads, que vous créerez, est
package Arithmetique is
function Calculatrice return Positive;
end Arithmetique;
1. La fonction Calculatrice simule le fonctionnement
d'une calculatrice de poche avec les deux opérations +
et *, sans ordre de priorité. Les nombres et les opérateurs sont
lus à la volée et la fin est signalée par le signe =.
C'est-à-dire que si on entre la suite
3
+
5
*
11
=
le résultat retourné est 88.
Écrivez le corps de cette fonction,
qui doit figurer dans un fichier arithmetique.adb.
Vous testerez le paquetage à l'aide d'un programme principal qui
ressemblera à ceci :
with Arithmetique; use Arithmetique;
with Ada.Integer_Text_Io; use Ada.Integer_Text_Io;
with Text_Io; use Text_Io;
procedure Principal is
N : Positive;
begin
Put_line("Taper votre calcul : ");
N:=Calculatrice;
Put(N);
end Principal;
2. Vous allez maintenant ajouter une deuxième fonctionnalité
au paquetage, la procédure Developper de type
procedure Developper(N: in Positive);
Developper prend en argument un
entier et affiche sa décomposition en facteurs premiers. Par
exemple, pour l'entier 98, le développement obtenu est 1 * 2 * 7^ 2.
Pour l'affichage des entiers entrant en jeu dans la décomposition,
vous pouvez utiliser integer'image(...) qui convertit un entier
en une chaîne de caractères.
3. S'il vous reste le temps, complétez le paquetage avec
fonction Pgcd de type
function Pgcd(A,B: Positive) return Positive;
qui calcule le plus grand commun diviseur de deux entiers. Pour
cette fonction, vous pouvez utiliser la propriété suivante
| pgcd(n, m) |
= |
n, |
si n=m, |
| pgcd(n, m) |
= |
pgcd(n-m, m), |
si n>m, |
| pgcd(n, m) |
= |
pgcd(n, m-n), |
si m>n. |
Hélène Touzet - octobre 2001