Sujet d`examen janvier 2016

publicité
Université de Grenoble Alpes
U.F.R. Sciences de l’Homme et de la Société
Master IC2A DCISS – MASSS
6 janvier 2016
ALGORITHMIQUE
Examen
Durée : 3 heures
Tous documents autorisés. Appareils électroniques interdits.
Il sera tenu compte de la lisibilité des algorithmes. Pour chaque algorithme réalisé, on définira
soigneusement les variables, les fonctions et les actions introduites pour résoudre le problème.
Les exercices sont indépendants et peuvent être traités dans n'importe quel ordre.
Dans un exercice, pour résoudre une question, vous pouvez utiliser une action ou une fonction
définie dans une question précédente.
Le barème donné est indicatif.
Exercice 1 : Etoiles (4 points)
1) Tracé d'une étoile à cinq branches
A l’aide d’une machine-tracés, on veut tracer une étoile à cinq branches comme celle de la figure
suivante :
t
36°
s
Les angles formés par les 5 branches (pointes) de l’étoile sont de 36°
Une telle étoile est caractérisée par :
•
•
•
son sommet (s sur la figure) : c'est l'un des sommets (points extrêmes) de l'étoile,
sa taille (t sur la figure) : c'est la taille commune de tous les segments reliant deux
sommets de l'étoile,
son cap (marqué par une flèche sur la figure) : c'est le cap de l'un des segments
passant par le sommet de l'étoile, et tel qu'un observateur placé au sommet et
regardant dans le sens défini par ce cap, voit l'autre extrémité du segment devant
lui et le segment suivant à sa droite. Réaliser l’action de tracé d’une étoile après
avoir précisé l’état initial et final de l’action :
action tracerUneEtoile (consulté t : réel, modifié m : Machine-tracés)
// Effet : trace une étoile de taille t à partir de la position courante de la plume
// E.I. : à préciser
// E.F.: à préciser
Master IC²A – DCISS – MASSS
1/4
JMA – 01/2016
2 ) Une explosion d'étoiles
On veut construire un algorithme de tracé d'un dessin récursif formé d'étoiles à cinq branches,
comme l'illustre la figure suivante :
Un tel dessin est caractérisé par :
•
•
son ordre, comme le suggèrent les figures : la figure d'ordre 1 comporte une étoile, la figure
d'ordre 2 comporte une étoile de taille t et cinq étoiles de taille t/3, placées à chacun de ses
sommets,
son sommet, sa taille, son cap : ce sont le sommet, la taille et le cap de l'étoile la plus
grande.
Spécifier et donner une réalisation récursive d'une action nommée tracerDesEtoiles permettant
de tracer le dessin de taille t et d'ordre n, sachant qu'à l'état initial, la position dans le plan et le cap
de la plume sont respectivement le sommet et le cap du dessin que l'on veut tracer.
action tracerDesEtoiles (………. à compléter …………..)
// Effet : trace le dessin de taille t et d'ordre n à partir de la position courante de la plume
// E.I. : à compléter
// E.F.: à compléter
Exercice 2 : Nombre d’éléments pas communs (4 points)
On considère deux séquences d'entiers positifs, classées en ordre croissant, et
représentées dans des fichiers. Un même nombre peut apparaître plusieurs fois dans une
séquence. Ecrire un algorithme qui calcule le nombre d’éléments qui ne sont pas
communs aux deux séquences, c’est-à-dire les éléments qui n’apparaissent jamais
dans l’autre séquence (nombres en gras sur l’exemple).
Exemple :
séquence 1 : 1 1 1 3 3 4 11 11 11 25 28 30 30
séquence 2 : 1 2 3 5 5 11 11 24 25 25 29 30 34 39 42
résultat affiché : nombre d’éléments pas communs : 9
Si un nombre est présent plusieurs fois dans une liste et absent dans l’autre, il ne sera compté
qu’une seule fois dans le nombre total des éléments pas communs aux deux séquences. Chaque
séquence ne sera lue qu’une seule fois.
Master IC²A – DCISS – MASSS
2/4
JMA – 01/2016
Exercice 3 : Nombre d’or (5 points)
Le « nombre d'or » α est une proportion géométrique couramment utilisée en peinture et en
architecture pour ses qualités esthétiques. Il est égal à la plus simple des fractions continues
possibles :
Pour calculer ce nombre, on se définit la suite suivante :
u0 = 1
un = 1 + 1/ un-1
Calculer le nombre d’or revient à calculer les termes successifs de cette suite jusqu’à obtenir une
précision suffisante.
a) Donnez les valeurs des 4 premiers termes de cette suite.
b) Ecrire une fonction récursive qui calcule le terme n° n de la suite :
fonction alpha (n : entier ≥ 0) → réel > 0
// alpha(n) renvoie le terme n° n de la suite, c’est-à-dire un
c) Ecrire la version itérative de la fonction Alpha
d) Ecrire la fonction itérative nombredOr qui calcule le nombre d’or avec une précision ε donnée :
fonction nombredOr (eps : réel > 0) → réel > 0
// nombredOr(eps) désigne le terme un vérifiant : |un+1 - un| / un < eps }
Exercice 4 : Matrices carrées (7 points)
1) Rotation droite (3 points)
Ecrire la fonction rotationDroite qui calcule la rotation à droite d’une matrice carrée d’ordre n :
Lexique partagé :
NMax : l’entier 20
// constante
Matrice : type tableau sur [1..NMax] de tableaux sur [1..NMax] d’entiers
fonction rotationDroite (m : Matrice, n : entier entre 2 et NMax) → Matrice
// rorationDroite(m,n) renvoie la matrice carrée d’ordre n correspondant à la rotation à droite de m }
Exemple pour une matrice d’ordre 4 (n=4) :
m
Master IC²A – DCISS – MASSS
rotation calculée
3/4
JMA – 01/2016
2) Comparaison de 2 matrices d’ordre n (2 points)
Ecrire la fonction matEgales qui détermine si 2 matrices carrées d’ordre n sont identiques :
fonction matEgales(m1, m2 : Matrices, n : entier entre 2 et NMax) → booléen
// matEgales(m1,m2,n) renvoie vrai si les matrices carrées m1 et m2 d’ordre n sont identiques
3) Comparaison de 2 matrices d’ordre N à une rotation près (2 points)
Ecrire la fonction matSimilaires qui détermine si deux matrices sont identiques, à une rotation
près, et calcule le nombre de rotations droites à appliquer à la première matrice pour être identique
à la seconde :
fonction matSimilaires (m1, m2 : Matrices, n : entier entre 2 et NMax) → entier entre -1 et 3
// matSimilaires(m1,m2,n) renvoie k (entier entre -1 et 3) ; si m1 et m2 sont identiques après avoir
appliqué k rotations droites à m1, renvoie -1 si m1 et m2 ne sont jamais identiques }
Exemple 1 :
m1
m2
Il faut appliquer 3 rotations droites à m1 pour qu’elle soit identique à m2, la fonction renvoie 3.
Exemple 2 :
m1
m2
Il faut appliquer 1 rotation droite à m1 pour qu’elle soit identique à m2, la fonction renvoie 1.
Exemple 3 :
m1
m2
Après avoir comparé les 4 rotations possibles de m1 avec m2, m1 et m2 ne sont jamais
identiques ; la fonction renvoie -1.
Master IC²A – DCISS – MASSS
4/4
JMA – 01/2016
Téléchargement