18/09/2016: mise en place du fichier Q&R 1- Quel est le type du seuil? 2- Est-ce que vous avez des exemples à nous fournir? 3- Quel est le nombre d’étudiants? 4- Est-ce qu’il est possible d’utiliser les éléments de la STL? 5- Comment faudra-t-il aborder ce travail? Est-ce que vous avez des suggestions? 1- Quel est le type du seuil? ================= Le seuil doit-être déclaré comme un nombre réel. Même si toutes les valeurs, sauf une, sont des entiers. 2- Est-ce que vous avez des exemples à nous fournir? ================================= Vous pouvez vous-même construire ces exemples, vu que le format de la ligne est connu. Vous pouvez inclure dans un fichier un seul étudiant ou 99 étudiants. Je vais vous fournir quand même sur le site web du TP#1, un exemple avec 15 étudiants. 3- Quel est le nombre d’étudiants? ===================== Le nombre de lignes dans le fichier va déterminer le nombre d’étudiants dans une classe. Dans le TP#2, vous allez constater qu’il n’est pas nécessaire d’avoir cette information. 4- Est-ce qu’il est possible d’utiliser les éléments de la STL? ==================================== NON. Pour ce travail, vous ne pouvez pas utiliser les conteneurs de la STL (pour ceux qui savent de quoi je parle). Vous ne pouvez pas utiliser vector, list, map, hashmap set, multimap et j’en passe. Pas de STL. Par contre, il vous est possible d’utiliser la classe “string” et ses méthodes. Votre démonstrateur a présenté lors de la démo#01, le fichier “string911.cpp”. Ce fichier décrit quelques méthodes de la classe “string”. 5- Comment faudra-t-il aborder ce travail? Est-ce que vous avez des suggestions? ================================================== Je ne fais que lister des suggestions. Je ne vous impose pas cette approche. Ce travail peut-être subdivisé comme suit: I] Les options de la ligne de commande -------------------------------------------------------- a- Faire un programme “main” qui ne traite pas pour le moment les options de la ligne de commande. b- Compléter ce programme afin d’inclure le traitement des options sans s’occuper de ce qu’elles doivent faire. Exemple de l’option “-i”, je dois avoir avec elle un nom de fichier. Ce que je dois faire avec ce fichier, je verrai cela plus tard. J’affiche en sortie un message pour indiquer l’option lue et sa valeur. Je m’assure ainsi que la lecture correspond à ce qu’il y a sur la ligne de commande. c- Je traite maintenant l’option. Exemple, l’option “i” sert à ouvrir un fichier, nous allons donc ouvrir ce fichier et tester cette ouverture. À la fin de cette étape, vous avez maitrisé la gestion des options de la ligne de commande. Voir les exemples du chapitre “la ligne de commande” II] Lecture des données --------------------------------- a- Construire un fichier exemple avec une seule ligne. Garder en tête que vous avez un seul étudiant. Avoir 50 ou 99, ce n’est pas votre problème pour l’instant. b- Vous avez pu lire l’option “-i”, vous avez pu ouvrir le fichier et tester son ouverture, maintenant essayer de lire cette ligne. c- Essayer d’écrire la ligne lue dans le fichier de sortie et comparer le résultat. d- Les fichiers en entrée et en sortie doivent être les mêmes. Utilisez la commande diff pour comparer les deux fichiers. À la fin de cette étape, vous avez maitrisé la lecture et l’écriture à partir de fichiers. Voir les exemples du chapitre “les flux” III] Fichier de paramètres ----------------------------------- a- Ouvrir le fichier de paramètres et sauvegarder les informations dans une structure appropriée. IV] Traitement des données --------------------------------------- a- On reste toujours dans le cas d’un fichier contenant une seule ligne. Vous allez définir une structure de données qui va contenir les informations relatives à vos étudiants. Vous allez donc transformer ces données en objets. Pour cela, vous allez définir les classes nécessaires à ce travail. L’étape [III] vous a fourni le nombre de travaux, d’examens, etc. b- Initialisez les instances de ces classes avec les données lues. c- Lire ces données à partir de ces instances et les réécrire dans le fichier de sortie. d- Les fichiers en entrée et en sortie doivent être les mêmes. Utilisez la commande diff pour comparer les deux fichiers. À la fin de cette étape, vous avez maitrisé la transformation des données lues en un ensemble d’objets. V] Compléter les données ------------------------------------- a- Complétez les champs demandés (les totaux, note littérale, etc.). VI] Le cas d’un cours avec plusieurs étudiants ------------------------------------------------------------------ a- Construire un fichier exemple avec trois lignes. Un exemple simple et court qui va vous permettre de déboguer votre code en cas de pépins. Par la suite, vous allez inclure les notions apprises dans [II] & [IV] pour compléter cette étape. Vous avez les deux approches, b1 et b2: b1- traiter les étapes [II] & [IV] indépendamment. Vous allez d’abord valider [II], ceci va vous permettre de voir comment vous pouvez lire plusieurs lignes afin de déterminer le nombre d’étudiants puis réécrire ces lignes en sortie. Par la suite, vous allez valider [IV], vous avez le nombre d’étudiants, vous allez donc définir les instances nécessaires pour ce nombre précis (3 lignes dans cet exemple). b2- nous allons augmenter le nombre d’étudiants dans la classe à 3. Le nombre d’étudiants reste connu (ici 3). Modifiez la lecture et le traitement pour tenir compte de ce nombre. c- Généralisez l’exemple en mettant un certain nombre d’étudiants dans le fichier et examinez le comportement de votre programme. À la fin de cette étape, vous avez effectué 90% du travail demandé. Voir les exemples du chapitre “gestion de la mémoire” VII] Inclure le traitement de l’option “-p” --------------------------------------------------------- Maintenant que le travail est fait, vous pouvez vous concentrer sur l’affichage en sortie dans un format adéquat. VIII] Faire le ménage ----------------------------- Le programme fonctionne comme il le faut. Vous avez probablement inclus plusieurs lignes de code non nécessaires. Il est temps de faire le ménage du code superflu et de voir comment il est possible d’améliorer certaines sections.