L'idée est de refaire la spécification du programme suivant pour la mettre au propre
Considérons la fonction EstPremier, qui indique si un nombre entier positif est premier et
pour ceux qui ne sont pas premiers, retourne ses diviseurs.
Par exemple:
- pour 13 la fonction retournera true et un ensemble vide de diviseurs (no_diviseurs = 0 et
Liste_Diviseurs
- pour 12 la fonction retournera false no_diviseurs = 4 et Liste_Diviseurs = {2, 3, 4, 6}
- Code: Tout sélectionner
bool EstPremier (IN int numero, OUT Liste_Diviseurs diviseurs, OUT int no_diviseurs )
{
Liste_Diviseurs :=[]; // on initialise la liste des diviseurs avec une liste vide
for (int i=2; i add (i);
}
}
if (Liste_Diviseurs -> notEmpty())
return false;
else
return true;
}
Mon "cours" sur ce sujet dit principalement les choses suivantes:
Spécifications d exigences
Chaque exigence doit être
atomique
réutilisable
testable
non-ambiguë, précise et complète
de haut niveau (ne pas induire des choix de programmation)fonctionnelle
Le cahier de charges est composé dun ensemble dexigences
Le cahier de charges doit contenir des exigences
non contradictoires
disjointes
non-dupliquées
traçables, complètes et légitimes
utilisant la même terminologie
Je ne sais pas vraiment si c'est la bonne méthode; mais j'aurais répondu comme suit:
La fonction prend un entier quelconque "numero" en paramètre d'entrée.
Elle renvoie un entier no_diviseurs >= 0 qui correspond au nombre de diviseurs de numero et diviseurs une liste de diviseurs de taille >=0.
La fonction renvoie également un booléen indiquant si la liste de diviseur est vide.
Maintenant j'ai quand même une question...la spécification on doit l'avoir avant la partie codage...jentends par là que normalement avec ce que je viens d'écrire un programmeur est capable de faire la fonction dans le langage qu'il veut.
Mais la spécification ne doit elle pas aussi intervenir dans le code ? Via des commentaires par exemples ?
Un de mes profs disaient qu'un bon code est un code sans commentaire; car si on met un commentaire c'est que quelque chose n'est pas explicite et que le code peut donc être amélioré.
Dernière question: du coup dans l'énoncé de l'exo pourquoi dit on que la spécification n'est pas "propre".
Merci à vous