Evaluateur d'expression arithmétique

Soyez le premier à donner votre avis sur cette source.

Vue 5 735 fois - Téléchargée 871 fois

Description

Je suis nouveau en programmation, cette application a été conçu dans le cadre d'un projet de fin d'année. J'ai besoin de votre contribution pour me donner votre avis sur cette application. Soyez rigoureux envers cette, même si ça me fait mal.
NB: J'utilise les bibliothèques "allegro" pour coder l'interface graphique

Codes Sources

Ajouter un commentaire Commentaire
Messages postés
3834
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
20 octobre 2021
124
Bonjour.

Quelques critiques:
- Évite d'utiliser Dev-C++ (c'est incroyable le nombre de débutant qui se font avoir !). C'est un très très vieil IDE qui embarque un compilateur antédiluvien. Préfère une solution plus récente comme QtCreator, Code::Block ou encore Visual Studio Express.
- On code dans les *.c, pas dans les *.h ! C'est ce qu'il y a de plus choquant dans ton code actuellement.
- Bannis les goto de ton code. goto est une fonction avancée, qui est à utiliser avec grande parcimonie. Les cas où un goto est élégant, sont extrêmement rares. À moins d'être particulièrement agueris en C ou C++, il y a 99.9% de chance qu'un goto ne soit pas nécessaire. En d'autre terme, si tu vois un goto dans ton code, pose toi des questions...
- Les commentaires, c'est vraiment pas ça. Si ça peut te rassurer, ça l'est rarement :p. Je te renvoi à la lecture d'un article que j'ai écrit: http://0217021.free.fr/portfolio/axel.berardino/articles/ecrire-de-bons-commentaires
- Il faut que tu révises tes fonctions standards. La fonction "valeur" c'est un peu n'importe quoi. Tu as la fonction "atoi" qui est bien plus adaptée.
- On ne gère jamais les erreurs intrusivement. On évite de mélanger les messages d'erreur et le code. Généralement on réalise une fonction, qui retourne un code d'erreur. Libre ensuite à la partie d'affichage d'afficher le bon message d'erreur en fonction du code (ou de ne rien afficher).
Ex:
Au lieu de:
void func(int a, int* b)
{
if (a == 0)
printf("msg erreur");

*b = 2 * a;
}
func(5, &b);

Tu devrais avoir:
int func(int a, int* b)
{
if (a == 0)
return 0;

*b = 2 * a;
return 1;
}
if (func(5, &b) == 0)
printf("msg erreur");
else
printf("ok");

De plus, si tu sépares bien ton code, de tes messages d'erreurs. Ça permettrait d'inclure ton code dans n'importe quelle solution. Là c'est tellement lié à Allegro, que je ne peux pas le compiler chez moi (j'aurais aimé extraire uniquement le code métier, pour le tester).

- Il y a des fonctions assez moyennes. Par exemple la fonction "tester" qui ne vérifie pas les bornes, et surtout au lieu d'itérer sur ton tableau, tu utilises des if à outrance (sans compter que les return étant débranchant, tu n'as absolument pas besoin de faire des "else" de partout).
- Je n'ai pas compris l'intérêt de la fonction "TEST_ADD".
- On évite les define, et on préfère l'utilisation de "static const + type".

Y a encore pas mal de petites choses, mais je t'invite déjà à revoir tous les points cités plus haut.

Quant au programme même, impossible de le tester sans installer Allegro. Je n'ai donc pas pu l'essayer (encore une fois, avec moins d'intrusivité, j'aurais pu).

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.