Vous êtes sur la page 1sur 4

GNG1506 Automne 2017 – Livrable 3 de projet

Disponible : le 5 novembre 2017


Échéance : le 10 décembre 2017

Instructions
Vous devez faire ce travail en équipe de deux. Les points suivants sont des consignes spécifiques à ce livrable :

 Vous devez soumettre votre livrable électroniquement via Brightspace dans un fichier zip qui contient votre document
projet ainsi que votre fichier C.
 Le document projet est fourni en PDF et fichier Word. Vous avez accès aussi à un document gabarit à utiliser pour finir
vos livrables. Pour ce livrable, finissez votre implémentation ainsi que la Section 5 dans votre document avec la sortie
de vos cas test (révisez les sections 1 à 3 au besoin). Pour ce livrable, remettez le document au complet, c.-à-d., la page
titre ainsi que les sections 1 à 5. Vous n’avez pas à inclure le code dans la section 4 de votre document de projet;
simplement ajouté une phrase qui fait référence à votre fichier C. Vous devez soumettre le code C de votre projet.
 Votre document doit être un document PDF et taper à la machine. Les documents écrits à la main ne seront pas
acceptés.
 Compressez votre document PDF (les autres versions y compris Word ne seront pas acceptées) et votre code C dans un
fichier zip nommé Projet_xxxxxxx.zip où xxxxxx est le numéro d’étudiant d’un membre de l’équipe. Soumettez le
fichier zip à BBL.

 Commencez le devoir bientôt et n’attendez pas à la dernière minute. Vous serez plus efficace avec plusieurs petits
efforts au courant des quelques semaines avant l’échéance que d’un seul grand effort juste avant la limite de
soumission.
 Coordonnez et partagez le travail avec votre partenaire. Communiquez régulièrement. Rencontrez-vous pour discuter le
travail. Révisez le travail de votre partenaire. Il est important de connaitre tout le projet, pas seulement votre partie.

Évaluation
 Voir la grille d’évaluation Rubrique dans un document séparé.
 La correction de ce livrable est basée sur 35 points au total.
 Le livrable compte pour 10 points de la note totale du projet (c.-à-d. 10/25).

La table suivante montre comment chaque livrable contribue à la note finale.

Livrable Étape de la stratégie Sections du document du Notes


projet
Livrable 1 Étape 1 (L’Identification et Sections 1/Sections 2 5
l’énoncé du problème)/
Étape 2 (La cueillette
d’information et la description
d’entrées/sorties)
Livrable 2 Étape 3 (Test Cases and Révision des Sections 1 et 2, 10
Software Design) Évaluation de la section 3
Livrable 3 Étape 4 (Implémentation)/ Code source C, Sections 4/5, 10
Étape 5 (Tests et vérification) Révision des Sections 1 à 3
Total Mark 25

1
Lignes directrices
Les lignes directrices suivantes vous aideront à finir ce livrable du projet.
 L’objectif de ce livrable est de finir le développement et le testing de votre logiciel. Mais
améliorez et révisez les sections développées dans les livrables précédents. En particulier,
assurez-vous que la conception reflète l’implémentation du logiciel.
 L’implémentation doit se baser sur la conception du livrable 2. Il est fort probable que durant le
codage, la conception change. Donc vous devez réviser la section 3 pour montrer tout
changement de la conception.
 Utilisez le gabarit fourni pour finir votre document de projet. Pour la section 4, ajoutez une
phrase telle que « Voyez le programme dans le fichier projet.c » où projet.c est le nom du
fichier qui contient votre programme.
 Votre implémentation doit compiler et exécuter. Les lignes directrices suivantes doivent être
appliquées dans l’implémentation du code :
o Ajoutez des commentaires utiles, y compris un bloc de commentaire au début de chaque
fonction qui donne une description des paramètres et de la valeur de retour (si elle
existe) ainsi que courte description de la tâche de la fonction. Le suivant est un
exemple :
/*----------------------------------------------------------
Fonction: trouveToutesRacines
Paramètres:
debut, fin: début et fin de l'intervalle (valeurs x) pour
chercher les racines
n - nombre de coefficients
coefficients - référence au tableau de coefficients qui
définit le polynôme.
racines - référence au tableau où sauvegarder les racines.
Valeur de retour: Le nombre de racines trouvées (valeur de racineIx
à la fin de la boucle)
Description: Trouve toutes les racines dans l'intervalle donnée
pour le polynôme défini par les coefficients.
---------------------------------------------------------------*/
o Les fonctions doivent être claires et courtes (pas plus longues
qu’une page). Si votre fonction devient longue, développer
d’autres fonctions.
o Portez attention à l’indentation de votre code afin de le rendre
claire. CodeBlocks offre la possibilité de formater votre code.
Après avoir ouvert votre fichier C, sélectionnez le menu Plugins
et dans le menu sélectionnez SourceCodeFormatter (Astyle) (voir
l’image à droite). Votre code sera reformaté avec une bonne
indentation.
o Utilisez des noms de variables qui sont significatives.
 La section 5 présentera la sortie des cas tests exécutés pour vérifier votre
logiciel. Utilisez les cas tests présentés dans la section 3. Vous pouvez
ajouter des cas tests, mais assurez-vous qu’ils sont documentés dans la
section 3.

2
Les lignes directrices suivantes pour la conception sont répétées du livrable 2:
 Notez que la section de conception comprend un nombre de sous-section qui divise la présentation
de vos fonctions selon leurs rôles dans le logiciel. Pour chacune de ces sous-sections :
o Commencez avec une introduction, un texte qui décrit le rôle principal des fonctions
présentées.
o Pour chaque fonction, présentez une conception selon le format présenté à la prochaine page.
Assurez-vous que la présentation soit cohérente.
 Tous les projets demande que jusqu’à 5 ensembles de valeurs d’entrées soit sauvegardés dans un
fichier et permet à l’utilisateur de choisir parmi eux au début du programme. Voici quelques
indices :
o Assurez-vous que le logiciel vérifie les valeurs d’entrées de l’utilisateur (la section 2 de votre
projet devrait fournir les informations au sujet des valeurs valides des entrées).
o Utilisez une structure pour contenir toutes les entrées de l’utilisateur.
o Utilisez un tableau de 5 éléments du type structure (des entrées).
o Le tableau peut ensuite être écrit dans un fichier binaire avec un seul appel à fwrite et lu du
fichier binaire avec un seul appel à fread.
o Ajoutez un membre à la structure pour indiquer si l’élément structure dans le tableau est
rempli (c.-à-d. est VRAI lorsque rempli et FAUX s’il peut accepter des valeurs).
o Définissez le nom du fichier binaire (p.ex. fichier.bin, mais choisissez un nom plus
significatif) par l’entremise d’une constante symbolique :
#define FICHIERBIN “fichier.bin”. Vous pourrez ensuite utiliser FICHIERBIN
avec fopen comme suit : fp = fopen(FICHIERBIN, “wb”);
o Lorsque le programme démarre il doit vérifier si le fichier existe (tenter d’ouvrir pour la
lecture).
 Si le fichier n’existe pas, créer un nouveau fichier et sauvegarder le tableau de structures
(avec tous les éléments initialisés comme étant vide). Ensuite le programme invite
l’utilisateur à donner de nouvelles entrées.
 Si le fichier existe, la liste du contenu des éléments du tableau est affichée (avec un
message tel que « disponible » pour les éléments vide. L’utilisateur est alors invité à
choisir un ensemble de valeurs existantes ou d’offrir de nouvelles valeurs.
o Lorsqu’un nouvel ensemble de valeurs d’entrées sont obtenus de l’utilisateur, l’utilisateur est
invite à sauvegarder les valeurs. Si un élément du tableau est disponible, les nouvelles valeurs
y sont sauvegardées; autrement, l’utilisateur est invité à remplacer un ensemble de valeurs déjà
sauvegardées.
o La logique ci-dessus est une suggestion pour démarrer votre réflexion. Permettez-vous de
considérer d’autres alternatives.

3
Conception de fonction
Le format pour présenter la conception d’une fonction (un exemple est montré ci-dessous) débute avec
l’en-tête de fonction qui donne la liste de tous les paramètres, suivi d’une description de chaque
paramètre utilisé, et une description de la valeur de retour (si une valeur est retournée), et finalement
une description de la logique et l’algorithme de la fonction. La description de la logique devrait offrir
assez de détails afin que sa traduction au code est facile (c.-à-d. ne demande pas de réflexion au sujet
de la logique de la fonction).

Exemple de conception de fonction

int trouveToutesRacines(double debut, double fin,


int n, double coefficients[],
double racines[])

Paramètres
debut, fin: début et fin de l'intervalle (valeurs x) pour chercher les racines
n - nombre de coefficients
coefficients - référence au tableau de coefficients qui définit le polynôme
racines- référence au tableau où sauvegarder les racines
Valeur de retour:
Le nombre de racines trouvées.

Logique/Algorithme
Cette fonction trouve toutes les racines dans l’intervalle entre début et fin. La fonction déterminée en
premier la taille du sous-intervalle comme sousinter = (fin-debut)/SI_RESOLUTION. Une
boucle déterminée, avec cntr (entre 0 et SI_RESOLUTION-1), est utilisée pour examiner chaque sous-
intervalle de la façon suivante:
 Les bords du sous-intervalle sont trouvés avec
ak = debut + (cntr*sousinter) et
bk = debut + (cntr+1)*sousinter (si bk est plus grand que fin, il est affecté la valeur
de fin)
 La fonction trouveRacine est appelée pour voir si le sous-intervalle contient une racine; si
c’est le cas,
o la racine est stockée dans le tableau racine à l’index racineIx et
o l’index racineIx est incrémenté.
À la sortie de la boucle, l’index racineIx donne le nombre de racines sauvegardé dans le tableau. Sa
valeur est retournée.