Algorithmique & Programmation Orientée Objet Semestre 2 ST La récursivité |
|||
|
|||
|
|||
Clavier.class - Ecran.class - Chaine.class - Documentation | |||
|
|||
Première partie Implantation en langage Java et validation des exercices de TD Seconde partie: Exercices supplémentaires Exercice n°1
Le PGCD (Plus Grand Commun Diviseur) de 2 nombres entiers positifs a et b est, comme son nom l'indique, le nombre entier positif n de valeur
maximale tel que a est divisible par n et b est divisible par n. Exercice n°2
Un tableau de booléens est utilisé pour stocker une structure formée de cellules carrées selon les modalités suivantes: a) On connait les coordonnées d'une cellule dont le contenu est le booléen vrai. Développer un sous-algorithme permettant d'afficher à l'écran les coordonnées de l'ensemble des cellules faisant partie de la structure. b) On connait les coordonnées d'une cellule dont le contenu est le booléen vrai. Développer un sous-algorithme permettant de calculer le nombre de cellules faisant partie de la structure. c) On connait les coordonnées d'une cellule c dont le contenu est le booléen vrai. Développer un sous-algorithme permettant de calculer la distance la plus longue (comptée en nombre de cellules) existant entre la cellule c et l'ensemble des cellules terminales de la structure. Une cellule terminale est une cellule connectée à une et une seule cellule. d) On connait les coordonnées d'une cellule dont le contenu est le booléen vrai. Développer un sous-algorithme permettant de calculer l'élongation de la structure. On appelle élongation la distance maximale entre deux cellules terminales. e) Développer un sous-algorithme permettant de générer une structure au hasard dans une matrice de nxm booléens. Exercice n°3
On souhaite implanter une fonction permettant de calculer la chaine de caractères expansée sur n niveaux d'un caractère selon les règles suivantes: Exemple: L'expansion de la chaine "a" donne "a", "bc", "caa", "abcbc","bccaacaa", "caaabcbcabcbc" aux étapes 0, 1, 2, 3, 4 et 5. Exercice n°4 On souhaite implanter une fonction d'affichage du flocon de Koch au niveau n. Le flocon de Koch est une courbe fractale obtenue par transformation récursive d'un segment de droite en 4 segments de droite selon le schéma ci-dessous.
Le sous-segment (1) correspond au premier tier du segment initial. Le sous-segment (4) correspond au troisième tier du segment initial. Les sous-segments (2) et (3) remplacent le tier central tc du segment initial. Ils correspondent aux 2 autres cotés du triangle équilatéral dont tc est un des cotés. Ainsi du niveau 0 au niveau 4, les images suivantes sont obtenues.
Mode graphique La création d'affichages graphiques est à réaliser au moyen de l'API EcranGraphique développée à cette fin. Celle-ci peut être téléchargée en cliquant sur le lien suivant: EcranGraphique.zip. Le fichier zip obtenu contient 4 fichiers .class qu'il convient d'extraire dans le répertoire où sera placé le fichier .java développé pour le projet. La documentation javadoc de référence de cette API est disponible via le lien suivant: Documentation javadoc EcranGraphique. Un exemple d'utilisation est proposé au lien suivant: TestEcranGraphique.java (exécution). Les fonctionnalités principales de cette API sont:
Apres ouverture de la fenêtre de dessin, la création d'une image suit le schéma suivant:
Les coordonnées utilisées sont comptées en pixels. Le repère d'affichage est orienté avec l'axe des x en direction de la droite et l'axe des y en direction du bas de la fenêtre d'affichage. L'origine (coordonnées (0,0)) est située en haut à gauche de la fenêtre. Exercice n°5
La variable matrice d'entier lb ci-dessous décrit un labyrinthe: Les cellules 1 sont les cellules accessibles. Les cellules 0 sont les "murs". L'entrée est la cellule de coordonnées (1,1). La sortie, si elle existe, est la cellule numérotée 9. a) Développer une fonction récursive permettant d'explorer le labyrinthe pour déterminer s'il y a une sortie ou non. b) Développer une fonction récursive permettant d'explorer le labyrinthe à la recherche des coordonnées de la cellule de sortie pour les afficher à l'écran. c) Développer une fonction récursive permettant d'explorer le labyrinthe à la recherche des coordonnées de la cellule de sortie pour les retourner comme résultat de fonction. d) Il peut exister plusieurs sorties. Développer une fonction récursive permettant d'explorer le labyrinthe à la recherche des coordonnées de la cellule de sortie la plus proche de l'entrée pour les retourner comme résultat de fonction. |