LINF1251 - Page des travaux pratiques |
Dans cette séance, on propose un exercice unique de taille plus importante que ceux que vous avez rencontré auparavant. On vous demande de faire cet exercice par groupes de 2. Il vous est demandé :
m
est un palindrome ?m
avec m
renversé. C'est un peu simple et cela ne nous convient pas car on aimerait à l'avenir décider si un mot m
est un palindrome à k
anomalies (où une lettre est remplacée par une autre). On vous propose donc une autre idée :
List
que vous allez implémenter. Ce type abstrait propose les méthodes suivantes :
insertFirst(X)
ajoute l'élément X
au debut de List;
isEmpty($)
renvoie true
si il est vide, false
sinon.
first($)
renvoie son premier élément.
last($)
renvoie son dernier élément.
removeFirst
retire son premier élément.
removeLast
retire son dernier élément.
d'imaginer à partir de là un algorithme récursif pour décider si un mot donné est un palindrome ou non.
Pour établir un diagramme de classe, pensez à ces quelques questions :
- Quels sont les différents composants indépendants du système ?
- Les classes que vous proposez sont-elles génériques, c'est-à-dire réutilisables ?
- Comment écrire dans un fichier ? Comment lire dans un fichier ? Vous pouvez consulter l'API de oz pour répondre à ces questions.