• Aucun résultat trouvé

Composition d’Informatique Les Principes des Langages de Programmation (INF 321) Promotion 2007

N/A
N/A
Protected

Academic year: 2022

Partager "Composition d’Informatique Les Principes des Langages de Programmation (INF 321) Promotion 2007"

Copied!
2
0
0

Texte intégral

(1)

Composition d’Informatique

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

Sujet propos´e par Gilles Dowek 7 juillet 2008

Les exercices qui suivent sont ind´ependants et peuvent ˆetre trait´es dans n’importe quel ordre.

On attachera une grande importance `a la clart´e, `a la pr´ecision et `a la concision de la r´edaction.

Exercice 1 (2 points)

On consid`ere des entiers repr´esent´es en base dix par des listes de chiffres, chaque chiffre ´etant de typeintet le chiffre de poids faible ´etant en tˆete de la liste.

1. ´Ecrire une fonction qui ajoute1`a un entier ainsi repr´esent´e.

2. ´Ecrire une fonction qui ajoute deux entiers ainsi repr´esent´es.

Exercice 2 (5 points)

Pour chaque entiern, on se donne deux symboles, la parenth`ese ouvrante(n et la parenth`ese fermante)n, et on appelle motune suite finie form´ee de tels symboles.

L’ensemble des mots bien form´es est d´efini par les trois r`egles suivantes : – le mot vide est bien form´e,

– si west un mot bien form´e, alors (nw)n est un mot bien form´e,

– si wetw’sont des mots bien form´es alors, ww’est un mot bien form´e.

1. Le mot (0(1)1)0(1)1 est-il bien form´e ? 2. Et le mot (1(0)0)0(1)1?

3. On veut ´ecrire une fonction qui v´erifie qu’un mot est bien form´e. Pour cela, on parcourt le mot de gauche `a droite. Quand on rencontre un symbole (n, on empile l’entier n, et quand on rencontre un symbole )n, on v´erifie que l’entier au sommet de la pile estnet on le d´epile.

Montrer que si un mot est bien form´e, alors si on commence son parcours avec une pile dans un ´etat p, on ach`eve ce parcours avec une pile dans le mˆeme ´etatp. En d´eduire que si un mot est bien form´e, alors en commen¸cant son parcours avec une pile vide on ach`eve ce parcours avec une pile vide ´egalement. (On admettra le r´eciproque).

4. D´efinir le type des mots.

5. ´Ecrire une fonction qui v´erifie qu’un mot est bien form´e.

Exercice 3 (5 points)

Une liste d’entiers est dite croissante si chaque entier de la liste est inf´erieur ou ´egal `a l’´el´ement qui le suit dans la liste.

(2)

1. ´Ecrire une fonction qui imprime toutes les listes croissantes dep entiers compris entre0 etm.

2. Montrer que le nombre de listes affich´ees est ´egal `a (p + m) !/(p ! m !).

Exercice 4 (5 points)

On consid`ere le type des arbres binaires avec un contenu entier.

class Arbre { int val;

Arbre gauche;

Arbre droite;

Arbre (int v, Arbre g, Arbre d) {val = v; gauche = g; droite = d;}}

Et une la m´ethode ainsi d´efinie

static boolean parcours (Arbre a) { if (a == null) return false;

return (a.val == 0) || parcours(a.gauche) || parcours(a.droite);}

On d´efinit trois arbres ainsi

Arbre a = new Arbre (1,new Arbre (2,null,null), new Arbre (3, null,null));

Arbre b = new Arbre (1,new Arbre (0,null,null), new Arbre (3, null,null));

Arbre c = new Arbre (1,new Arbre (2,null,null), new Arbre (0, null,null));

c.gauche.droite = c;

1. Dessiner ces trois arbres

2. Que retournent les appels parcours(a),parcours(b)etparcours(c)? 3. Combien de nœuds sont visit´es dans chacun de ces cas ?

4. Comment modifier la fonction parcourspour qu’elle retournetrueoufalseselon que l’arbre contient un0ou non, y compris dans le cas d’arbres infinis rationnels ? (On pourra dans cette fonction utiliser un typeListArbresdes listes d’arbres et la m´ethodememsur ces listes.)

Exercice 5 (3 points)

00000000

111111110000000000000000011111111111111111 000000000 111111 11100000000000000001111111111111111

00000000 11111111 000000

1111110000000000 11 11 11 11 11 x

1 2

3 4

y

1. On effectue un glanage de cellules (gc) dans l’´etat ci-dessus en utilisant la m´ethode du marquage. Dessiner l’´etat `a l’issue de ce glanage de cellules.

2

Références

Documents relatifs

Par exemple, les deux arbres ci-dessus peuvent ˆetre obtenus l’un ` a partir de l’autre par un ´echange (au nœud marqu´e en noir)4. On dit que deux arbres sont ´equivalents si

´ Ecrire une fonction qui prend en argument une liste d’entiers et qui indique le nombre de z´ eros par lequel cette liste commence.. Exercice 2

´ Ecrire une fonction qui prend en argument deux listes de bool´ eens repr´ esentant deux ensembles A et B et retourne un bool´ een indiquant si l’ensemble A est un sous-ensemble

Un tel entier sera donc repr´ esent´ e par une variable X de type List qui d´ ecrit dans l’ordre, les digits en base N.. Comment d´ eclarer la variable N dans la

• (2.c) ´ Ecrire le code de la m´ ethode dynamique et r´ ecursive Eval de la classe AExpr prenant en argument une feuille C, et permettant d’´ evaluer l’expression sur laquelle

Pour donner une partie de la s´ emantique de la calculatrice programmable, on doit changer un peu la repr´ esentation de l’´ etat courant de la calculatrice: c’est maintenant

Sujet propos´ e par Gilles Dowek 9 juillet 2007..

Une m´ ethode, parmi d’autres, consiste ` a remarquer que les L(p+1,m+1) listes croissantes de p+1 entiers compris entre 0 et m+1 se partitionnent entre celles qui commencent par 0