• Aucun résultat trouvé

Licence Informatique 3

N/A
N/A
Protected

Academic year: 2021

Partager "Licence Informatique 3"

Copied!
4
0
0

Texte intégral

(1)

Licence Informatique 3 e année

Langages de Programmation II - Partie ADA

Examen 2e session - 27/07/2006 - 1h00

Les notes de cours et de TD sont autorisées. Il sera tenu compte pour la notation de la qualité de rédaction et de la lisibilité des copies. Le barême est donné à titre indicatif.

1 Ensembles encore (10 points)

On donne la spécification suivante du paquetagePaquetage_Liste: generic

type Data is (<>);

with function toString(e : Data) return String is <>;

package Paquetage_Liste is

type Liste is limited private;

LISTE_VIDE : constant Liste;

OutOfListBounds : Exception;

procedure init(l : out Liste); – place dans l une LISTE_VIDE procedure affiche(l : in Liste);

function getSize(l : Liste) return Natural;

– retourne le ième élément de la liste, peut lancer une exception – OutOfListBounds si i dépasse la taille de la liste

function getElement(l : Liste; i : Integer) return Data;

– renvoie vrai si e est dans l, faux sinon

function isElement(l : Liste; e : Data) return Boolean;

– Ajoute un élément en queue de liste

procedure addElement(l : in out Liste; i : in Data);

– Retire de la liste le premier élément rencontré égal à i procedure removeElement(l : in out Liste; i : in Data);

private ...

end Paquetage_Liste;

1

(2)

1. Écrire la spécification d’un paquetagePaquetage_Ensemble, sous-paquetage dePaquetage_Liste, définissant un typeEnsembleet les fonctionsunion(a : Ensemble; b : Ensemble), etintersection(a : Ensemble; b : Ensemble) qui renvoient desEnsemble.

2. Écrire le corps du paquetagePaquetage_Ensemble.

3. Écrire un programme de test qui crée deuxEnsembleet affiche leur union et leur intersection.

2

(3)

Ensembles encore

Question 3.1 : generic

package Paquetage_Liste.Paquetage_Ensemble is subtype Ensemble is Liste;

ENSEMBLE_VIDE : constant Ensemble;

function union(a : Ensemble;b : Ensemble) return Ensemble;

function intersection(a : Ensemble;b : Ensemble) return Ensemble;

private

ENSEMBLE_VIDE : constant Ensemble := LISTE_VIDE;

end Paquetage_Liste.Paquetage_Ensemble;

Question 3.2 :

package body Paquetage_Liste.Paquetage_Ensemble is

function union(a : Ensemble;b : Ensemble) return Ensemble is e : Ensemble := ENSEMBLE_VIDE;

d : Data;

begin

for i in 1..getSize(a) loop

addElement(e,getElement(a,i));

end loop;

for i in 1..getSize(b) loop d := getElement(b,i);

if not isElement(a,d) then addElement(e,d);

end if;

end loop;

return e;

end union;

function intersection(a : Ensemble;b : Ensemble) return Ensemble is e : Ensemble := ENSEMBLE_VIDE;

d : Data;

begin

for i in 1..getSize(a) loop d := getElement(a,i);

if isElement(b,d) then addElement(e,d);

end if;

end loop;

return e;

end intersection;

end Paquetage_Liste.Paquetage_Ensemble;

Question 3.3 :

with Ada.Text_IO;with Ada.Integer_Text_IO;

use Ada.Text_IO;use Ada.Integer_Text_IO;

3

(4)

with Paquetage_Liste;with Paquetage_Liste.Paquetage_Ensemble;

procedure Test is

function toString(e : Integer) return String is begin

return Integer’IMAGE(e);

end toString;

package Paquetage_Liste_Integer is new Paquetage_Liste(Integer);

use Paquetage_Liste_Integer;

package Paquetage_Ensemble_Integer is

new Paquetage_Liste_Integer.Paquetage_Ensemble;

use Paquetage_Ensemble_Integer;

e,f : Ensemble;

begin

init(e);addElement(e,1);addElement(e,2);

addElement(e,3);addElement(e,4);addElement(e,5);

init(f);addElement(f,7);addElement(f,8);addElement(f,3);

affiche(e);affiche(f);

affiche(union(e,f));

affiche(intersection(e,f));

end Test;

4

Références

Documents relatifs

Construire le diagramme de classes modélisant la situation suivant : un contrat d'édition est un accord entre un auteur et un éditeur au sujet d'un ouvrage.. Un auteur peut

Construire le diagramme d'activités correspondant au texte suivant extrait d'un mode d'emploi d'un meuble en kit à monter soi-même : L'assemblage n'est possible

Construisez le diagramme de classe du code contenu dans le fichier Scrabble.zip et le diagramme de séquence correspondants à une partie de Scrabble (on peut omettre

 Montrer votre intérêt pour le poste proposé et décrire la façon dont vous vous le représentez.  Conforter l’impression positive que vous avez su éveiller chez

C’est une relation d’´ equivalence dont les classes d’´ equivalence sont param´ etr´ ees par le nom de chaque section (PCSI5, MPSI1,...). ˆ On note

Réciproquement, si une racine double |3 donne un carré parfait, les solutions i et 3 du facteur P &lt;3 sont aussi solutions du facteur P24, qui, dès lors, admet les quatre

Cela résulte du théorème I. Enfin le second théorème nous apprend que le premier cône aura un plan tangent commun avec le second. Les deux cônes se touchent donc le long

Dans cette communication, trois transformations sont proposées afin d’assister cette intégration et d’améliorer les modèles : la première produit un modèle d’alignement mon-