Bonjour,
Je viens de mettre dans Moodle (onglet Notes sur le coté gauche) les notes du premier exercice noté (exercice à la maison) et vais sous peu vous envoyer vos copies corrigées par email. Je vous fais part ici de commentaires généraux.
Concernant les notes publiées dans Moodle :
- les notes publiées correspondent à la fraction que vous avez obtenue, multipliée par 100 :
par exemple pour cet exercice noté, cela correspond à
100 * votre total / 50
car l'épreuve a été notée sur 50 points, hors bonus ; - la note « Note Finale (SAC) » correspond à la note arrondie, sur l'échelle habituelle 1-6 au quart de point, que vous auriez si on arrêtait là ; je la remettrai à jour à chaque nouvelle épreuve, suivant les pondérations indiquées dans le premier cours ;
- la note « Total du cours » est calculée automatiquement par Moodle et correspond à la fraction moyenne, laquelle est arrondie pour calculer la note « Finale (SAC) » mentionnée ci-dessus.
(> 55% = 4, > 60% = 4.25, etc.)
MERCI DE LES LIRE ATTENTIVEMENT les commentaires faits par vos correcteurs dans le fichier rendu par email (fichier YAML et ou directement dans votre code source ; un fichier .yaml est un simple fichier texte que l'on peut ouvrir dans n'importe quel éditeur),
ainsi que les remarques générales que voici :
Globalement, c'est un devoir très bien réussi (98.2% de réussite ; points allant de 22 à 51.5 sur 50, moyenne à 41.65 points, médiane à 42.5 -- je met la distribution des fractions (100 * points / 50) ci-dessous, en fin de message).
En général l'exercice est bien compris ; on a l'impression que la majorité des étudiant(e)s est sur la bonne voix et connaît déjà bien les bases de C.
Néanmoins, plusieurs remarques ci-dessous pour encore vous améliorer ;
la première étant : veuillez au moins à rendre un fichier qui compile !
(quelques rares ne compilaient pas)
+ trop peu d'étudiants pensent aux divisions par (presque) zéro.
et je suis surpris qu'en 2e année tant ne savent pas encore qu'il ne
faut jamais tester d'égalité avec des double (sauf cas très particuliers).
+ encore des manques de modularisation ; p.ex. peu de monde a produit une fonction query_nb()
ou un équivalent. Souvent, des fonctionnalités étaient réparties
entre query_vertices et query_facets, ce qui cause inévitablement de la duplication de code.
+ très peu ont déclarés les pointeurs comme const dans les structures
+ très peu initialisent le tableau facets de la structure Vertex
(ce n'est pas vraiment une erreur, mais plutôt une bonne pratique et j'ai
donc mis ici 1.5 point en bonus : la remarque de correction
correspondante, si jamais, est donc passée en bonus)
+ encore beaucoup trop de confusion entre int et size_t
+ diverse incompréhensions manifestes sur les pointeurs pour quelques étudiants
+ positif: pas mal d'étudiants ont fait le check de la duplication des sommets pour une face
+ Il y plusieurs étudiants qui vérifient les indices de Vertex rentrés
par l'utilisateur dans query_facet, mais plus tard ils font quand
même un accès avec des mauvais indices. C'est comme s'ils
vérifiaient les indices juste parce qu'il fallait le faire, mais sans
savoir que ça va produire un accès illégal.
+ certains retournent un *NO_FACET ou un *NULL en cas d'erreur. Je
suppose qu'ils pensent qu'accéder à NO_FACET donne une facet
initialisée à 0. Je ne sais pas si c'est dû à une mauvaise
compréhension des pointeurs, des macros ou les deux.
+ les paramètres des fonctions ne sont pas assez souvent testés
+ beaucoup de warnings de compilation chez à peu près tout le monde :
utilisez les options du compilateur (qui est votre ami !)
+ seulement quelques personnes n'ont pas utilisé de références pour les faces/sommets ou n'ont pas suivit les méthodes demandées/données.
+ Concernant le style :
Globalement, le style est assez bon et le code assez bien lisible.
Il y a malgré tout certains étudiants qui ont encore de mauvaises
indentations, ou qui écrivent vraiment du très mauvais code (plein de
répétitions, compact, sans homogénéité). Ce n'est pas se faciliter
VOTRE vie de programmeur que de ne pas écrire proprement.