• Aucun résultat trouvé

Corrig´ e de la Composition d’Informatique

N/A
N/A
Protected

Academic year: 2022

Partager "Corrig´ e de la Composition d’Informatique"

Copied!
4
0
0

Texte intégral

(1)

Corrig´ e de la Composition d’Informatique

Les Principes des Langages de Programmation (INF 321) Promotion 2005

Sujet propos´e par Gilles Dowek 11 juillet 2006

Exercice 1

1.

static boolean membre (int x, List l) { if (l == null) return false;

if (x == l.hd) return true;

return membre(x,l.tl);}

2.

static List supprime (int x, List l) { if (l == null) return l;

if (x == l.hd) return l.tl;

return new List (l.hd, supprime(x,l.tl));}

3.

static int communs (List l1, List l2) { if (l1 == null) return 0;

if (membre(l1.hd,l2)) return 1 + communs(l1.tl,supprime(l1.hd,l2));

return communs(l1.tl,supprime(l1.hd,l2));}

4.n2. Il faut commencer par trier les deux listes.

static int communs1 (List l1, List l2) { if (l1 == null) return 0;

if (l2 == null) return 0;

if (l1.hd == l2.hd) return 1 + communs1 (l1.tl,l2.tl);

if (l1.hd < l2.hd) return communs1 (l1.tl,l2);

return communs1 (l1,l2.tl);}

static int communs (List l1, List l2) { return(communs1(tri(l1),tri(l2)));}

(2)

Exercice 2

1. On ajoute l’´el´ement en tˆete de la liste l2. Temps constant.

2. On lit le premier ´el´ement de la liste l1et on le retire. Temps constant.

3. On retourne la liste l2qui devient la nouvelle listel1, puis on lit le premier ´el´ement de cette liste et on le retire. La complexit´e est proportionnelle `am.

4. La nouvelle liste l1a la longueur m - 1, les m - 1prochains acc`es au premier ´el´ement de la file se feront en temps constant. La complexit´e moyenne de cesmacc`es au premier ´el´ement de la liste est donc(c m + d (m - 1))/m. L’acc`es au premier ´el´ement de la liste se fait donc en temps constant en moyenne.

Exercice 3

1.e = [r1/a],

m = [r2/r1, (0,r3,r4)/r2, (2,r4,r2)/r3, (1,r2,r3)/r4]

2.

a

0

2 1

3.2.

Exercice 4

1.

static void paires1 (int v, List l) { if (l != null) {

System.out.println(v + " " + l.hd);

paires1(v,l.tl);}}

static void paires (List l) { if (l != null) {

paires1(l.hd, l.tl);

paires (l.tl);}}

2.

2

(3)

static void operations (int x, int y) { System.out.println (x + y);

if (x >= y) System.out.println (x - y);

if (y >= x) System.out.println (y - x);

System.out.println (x * y);

if (y != 0 && x % y == 0) System.out.println (x / y);

if (x != 0 && y % x == 0) System.out.println (y / x);}

static void paires1 (int v, List l) { if (l != null) {

operations(v,l.hd);

paires1(v,l.tl);}}

static void paires (List l) { if (l != null) {

paires1(l.hd, l.tl);

paires (l.tl);}}

3.

static void resultat (int x, List r) { System.out.println(x);

tous (new List(x,r));}

static void operations (int x, int y, List r) { resultat (x + y, r);

if (x >= y) resultat (x - y, r);

if (y >= x) resultat (y - x, r);

resultat (x * y, r);

if (y != 0 && x % y == 0) resultat (x / y,r);

if (x != 0 && y % x == 0) resultat (y / x,r);}

static void paires1 (int v, List l, List r) { if (l != null) {

operations(v,l.hd,List.revappend(l.tl,r));

paires1(v,l.tl,new List (l.hd,r));}}

static void paires (List l, List r) { if (l != null) {

paires1(l.hd, l.tl,r);

paires (l.tl,new List(l.hd,r));}}

static void tous (List l) { paires (l,null);}

3

(4)

Exercice 5

1. Σ(throw ;,e,m) = (exception, w)

2. Σ(x := t,e,m) = (normal, m + (v/e(x)))o`uv = Θ(t,e,m) 3. Si Σ(p1,e,m) = (normal, m’)alors Σ(p1 p2,e,m) = Σ(p2,e,m’)

Et si Σ(p1,e,m) = (exception, m’)alors Σ(p1 p2,e,m) = (exception, m’) 4. Si Σ(p1,e,m) = (normal, m’)alors Σ(try p1 handle p2,e,m) = (normal, m’)

Et si Σ(p1,e,m) = (exception, m’)alors Σ(try p1 handle p2,e,m) = Σ(p2,e,m’)

Exercice 6

Parce qu’en C la valeur d’un terme de typestruct Listest un couple et non une r´ef´erence associ´ee `a un couple dans la m´emoire, comme c’est le cas en Java.

4

Références

Documents relatifs

Utiliser une poulie et un poids m pour ´ etudier le d´ eplacement d’un chariot de masse M ayant une acc´ el´ eration non nulle.. La figure 2 d´ ecrit la trajectoire

Cet ´ ecart peut s’expliquer en partie par le fait que la masse du fil (qui n’a pas ´ et´ e prise en compte) n’est pas n´ egligeable par rapport ` a la masse

[r]

(2) En d´ eduire la fonction supprime qui prend en arguments une liste L et un nombre n et supprime le premier ´ el´ ement de la liste ´ egal ` a n.. Cette fonction renverra True si

(2) En d´ eduire la fonction supprime qui prend en arguments une liste L et un nombre n et supprime le premier ´ el´ ement de la liste ´ egal ` a n... Avec la fonction random

Observons que chaque classe est non vide ; que deux classes sont disjointes ou confondues ; et que la r´eunion de toutes les classes est E.. Dans cette situation, nous dirons que

• premièrement c’est avoir une idée approfondie sur l’application de l’approche théorique dans le milieu professionnel ce qui nous permettra de comprendre et de maîtriser

L'avantage de la méthode boothroyd est complètement prédictive rapide et qu'elle peut être adaptée à différents matériaux, et nous avons conclu avec se modèle