ITI1521. Introduction à l'informatique II
»» home :: directives ::
``The competent programmer is fully aware of the limited size of his own skull. He therefore approaches his task with full humility, and avoids clever tricks like the plague.'' Edsger W. Dijkstra

Consignes pour la remise de tous vos travaux pratiques

Consignes générales

Consider using some combination of cloud-based storage (Google Drive, Microsoft One Drive, iCloud, Dropbox, Box, etc.) and external devices for backups. Hardware failure is not a good excuse for submitting late assignments.
  • Les travaux en retard ne seront pas acceptés ; ils se verront assigner la note 0 ;
  • Les travaux sont faits en équipe de deux étudiants ou individuellement.

Procédure de remise

  • Tous les travaux doivent être remis à l'aide du système de remise électronique du campus virtuel.
    1. Lire soigneusement et suivre les instructions afin de nommer vos fichiers correctement (spécifique à chaque devoir) ;
    2. Soumettre tous les fichiers à l'aide du système électronique de remise :

      https://uottawa.brightspace.com.

      Les soumissions de devoirs/fichiers contenant des caractères spéciaux (ie. -,#,$,^,@, espace, etc) cause des erreurs dans certain cas. L'étudiant devra re-soumettre le devoir avec un titre de fichier qui ne contient aucun caractères spéciaux.

    3. Pour les équipes (composées de deux étudiants) :
      1. Un seul des deux étudiants doit soumettre sa copie du devoir ;
      2. Indiquez clairement les deux auteurs du devoir.
  • Les travaux qui ne se conforment pas à cette procédure ne seront pas corrigés ;
  • Ne transmettez pas les fichiers code-octet (fichiers .class); tous les devoirs sont systématiquement re-compilés.

Identifiez lisiblement les éléments remis

Toute soumission doit comporter un fichier README dans lequel vous inscrirez votre nom, numéro d'étudiant, section de laboratoire ainsi qu'une brève description du travail.

Inclure les informations suivantes :

  • Votre(vos) nom(s) ;
  • Votre(vos) numéro(s) d'étudiant ;
  • Le numéro du cours, i.e. ITI 1521 ;
  • Le numéro de travail pratique ;
  • Le numéro de la question.

Le fichier README doit être un document de type texte ; et non pas Word.

Aux endroits suivants :
  • Au début de chaque programme/classe (en commentaire),
  • Sur chaque sortie de programme,
Un exemple d'en-tête de classe,
// Auteur : Tony de Peltrie
// Numéro d'étudiant : 19850712
// Cours : ITI1521
// Travail pratique : 10
// Question : 41
	  

Soumission d'un devoir: le fichier .zip

  • Vous devez créer un répertoire ayant pour nom le numéro du devoir (par exemple a1) et votre numéro d'étudiant. Dans le cas d'une équipe de deux étudiants, ce sera le numéro de l'étudiant qui soumet le devoir.
  • Mettez y tous les fichiers .java du devoir
  • N'y mettez pas les fichiers .class files, puisque nous allons systématiquement recompiler tous les fichiers.
  • Ajoutez un fichier texte, nommé README.txt, au répertoire. Ce fichier contient les noms et numéros d'étudiants des membres de l'équipe, ainsi qu'une brève description du devoir.
  • Créez le fichier .zip à partir du contenu du répertoire a1_123456. Le nom du fichier a1_123456.zip pour l'étudiant dont le numéro d'étudiant est 123456.
  • Assurez-vous que les noms de fichiers ont les bonnes combinaisons de majuscules et minuscules (voir ci-bas).
  • Des points seront retranchés pour le non-respect des procédures.
  • Soumettez le fichier .zip. Dans cet exemple, c'est le fichier a1_123456.zip.

Restrictions quant aux programmes

  • Tous les programmes remis doivent compiler et s'exécuter en utilisant l'environnement Java SE JDK 8.0 ou supérieur des ordinateurs de la salle STE 0-110;
  • La note maximale pour toute question liée à un programme qui échoue à la compilation sera de 30%;
  • N'utilisez que les librairies présentées avant la date d'échéance, en classe ou lors de démonstrations.

Corrections des programmes

La correction des programmes est faite sur la base de la validité du code et de la qualité (qui inclue la clarté). Chacune des parties de votre solution, par exemple chaque méthode, est évaluée individuellement par rapport aux conditions et exigences de l'énoncé. Dans la majorité des cas, la question comportera un programme principal (méthode main) visant à trouver un grand nombre d'erreurs logiques. Cependant, ce programme ne testera pas systématiquement toutes les parties de votre solution, de sorte qu'il est possible que votre programme produise les bonnes solutions, mais que certaines parties soient incorrectes. Ainsi, vous ne recevrez pas automatiquement la note maximale si votre programme produit la sortie exigée.

Standards de programmation

Conventions d'écriture des programmes Java

Vos programmes devraient être conformant aux conventions d'écriture telles que définies au site suivant : Veuillez noter que ces conventions sont très détaillées, et qu'elles diffèrent en plusieurs points des conventions utilisées en ITI 1520. Lisez donc attentivement ces directives et assurez-vous que vos programmes s'y conforment.

Identificateurs

Les identificateurs doivent être aussi descriptifs que possible et conforment aux conventions suivantes :
  • Les noms de classes et d'interfaces doivent débuter par une lettre majuscule ;
  • Les noms de méthodes et de variables débutent par une minuscule, sauf si la méthode est un constructeur ;
  • Pour les identificateurs composés de plusieurs mots n'utilisez pas le caractère souligné (underscore), faites débuter le second mot et ceux qui suivent par une majuscule, par exemple, pour une classe: PileTableau et une variable: valeurMaximale ;
  • Les noms de constantes, c'est-à-dire les variables déclarées final, sont en majuscules et utilisent le caractère souligné comme séparateur de mots, par exemple, PI et CAPACITE_MAXIMALE ;
  • Le nom d'une méthode devrait débuter par un verbe, par exemple, calculeMaximum et non maximum ;
  • Une méthode dont la seule fonction est d'accéder aux variables d'instances (attributs) devrait comporter le nom de la variable, par exemple, getAttribute, setAttribute et isAttributeEqualTo(value) ;
  • (optionnel) Lorsqu'un paramètre formel réfère à une variable d'instance, le nom du paramètre et de la variable devraient être identique, ce qui signifie que vous devez utiliser la notation this.variable pour les différencier, par exemple,
    public class Entier {
        private int valeur;
    
        public Entier( int valeur ) {
            this.valeur = valeur;
        }
    }
    	      

Variables

  • Ne déclarez que les variables qui sont utilisées ;
  • Évitez les allocations de mémoire inutiles ;
  • N'utilisez pas la même variable pour des usages différents ;
  • Ne confondez pas les variables d'instance et les variables locales; déclarez chacune à l'endroit approprié ;
  • Chaque variable devrait avoir un bref commentaire descriptif. C'est ce que l'on appelle le dictionnaire des données, il devrait être placé au début de chaque méthode, avant ou à côté des déclarations.

Structure des programmes

  • La structure de vos programmes est très importante. Introduisez vos propres interfaces et décomposer vos algorithmes en sous algorithmes afin d'en améliorer la clarté.
  • Chaque méthode, incluant la méthode principale, devrait être précédée d'un commentaire décrivant son but ainsi que l'algorithme utilisé (sauf si ce dernier est très simple). Soyez succinct ;
  • Vos programmes doivent être systématiquement indentés afin de refléter la hiérarchie de leurs énoncés ; il existe d'excellents éditeurs de programmes, tels DrJava, JEdit, Emacs et Nedit, qui s'occupent de l'indentation pour vous.

Entrées/Sorties

  • Les entrées/sorties devraient être bien espacées et facile à comprendre. En particulier, il devrait être facile de comprendre les sorties sans avoir recourt au programme source. Ce qui signifie que pour chaque valeur en sortie vous devez aussi imprimer un court message descriptif ;
  • De même, lors de l'entrée de données au clavier, votre programme doit imprimer un incitatif (prompt) décrivant à l'usager ce qu'il ou elle doit être entré au clavier.