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