mogwai93 Posté(e) le 4 octobre 2003 Partager Posté(e) le 4 octobre 2003 Pas tout à fait d'accord, avec le "plus simple". D'accord, ca tient sur 1 ligne. Mais le système "?" avec ":", c'est pas trop lisible surtout quand tu veux retrouver un bug. C'est très lisible, pusique tu ne l'écris qu'une seule fois au début su prog. Si tu veux tu peut mettre une ligne de commentaire avant pour savoir ce que ça fait. Mais ça vient avec l'habitude, tu remplace tout seul les ? et : par une instruction logique. Et ensuite pour tout tes appels à cette macro, il ne tient qu'a toi de donner des noms explicites. Dans ce cas, MAX c'est très clair. C'est le but d'un #define : remplacer plusieurs fois une chaine par une autre dans ton prog. Ca peut être soit pour être plus explicite, soit pour ne pas changer tout le temps une variable, soit pour une autre raison. C'est pas un problème pour retrouver les bugs. Il faut juste savoir ce que tu fais dans ton prog. Le invité n°2 : On a tous commencé un jour. C'est inhé la prog chez toi ? Ben t'es une star, c'est pas une raison pour te prendre pour une grosse bête. +1 1) Il faut toujours commenter ce que fait une fonction 2) Utiliser des noms explicites pour M3rco : Tout d'abord, tu dois trouver dans ton code les parties de code redondantes (qui apparaissent plusieurs fois). Pour chacune de ses parties, tu vas en faire une fonction qui va faire cette partie de code. Au niveau du code : * avantages : - lisibilité - correction plus rapide Ex: Dans ton cas, si je veux trouver le minimum, il faut remplacer '>' par '<', donc 3 fois Et dans mon cas : 1 fois Donc gain de temps Au niveau de l'executable : * avantages : - taille de l'executable plus petite * inconvénients : - temps d'execution légèrement plus lent (temps d'appel et de retour à la fonction) Négligeable sur les machines puissantes en conclusion : Pour la vitesse : ton code Pour la relecture, lisibilité, ... : le mien ou celui de "invité" Lien vers le commentaire Partager sur d’autres sites More sharing options...
Angel Eyes Posté(e) le 4 octobre 2003 Partager Posté(e) le 4 octobre 2003 Mogwai93 : Si tu utilises des fonctions inline ou des macros, ton code devient aussi rapide que l'autre, et en plus, c'est lisible pour peu que tu fasses gaffe d'utiliser les macros proprement, ce qui demande de la discipline pour ne pas déraper. Lien vers le commentaire Partager sur d’autres sites More sharing options...
mogwai93 Posté(e) le 5 octobre 2003 Partager Posté(e) le 5 octobre 2003 Mogwai93 : Si tu utilises des fonctions inline ou des macros, ton code devient aussi rapide que l'autre, et en plus, c'est lisible pour peu que tu fasses gaffe d'utiliser les macros proprement, ce qui demande de la discipline pour ne pas déraper. Complètement d'accord Lien vers le commentaire Partager sur d’autres sites More sharing options...
fabricer Posté(e) le 13 octobre 2003 Partager Posté(e) le 13 octobre 2003 Bof, les macros ça peut être bien pratique pour des tous petits programmes. Mais pour des gros prog ce genre de macros est absolument à prohiber. Il vaut mieux utiliser des fonctions, c'est beaucoup plus propre et lisble, quand aux modifications elles ne prennent pas plus de temps si c'est une fonction. Et au moins on ne se retrouve pas avec des macros métiers noyées au milieu de dizaines voire de centaines de directives de pré-compilation comme font certains. Autant prendre très tôt les bonnes habitudes surtout pour ceux qui veulent vraiment coder objet et ne plus faire une sauce mélangeant mauvaises habitudes héritées du c et méthodologie C++. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Neo_13 Posté(e) le 14 octobre 2003 Partager Posté(e) le 14 octobre 2003 Perso pour les truc genre min et max, j'utilise toujours une macro comme ça, c'est fait, on en parle plus (comme les #define pour les constantes) Lien vers le commentaire Partager sur d’autres sites More sharing options...
tuXXX Posté(e) le 15 octobre 2003 Partager Posté(e) le 15 octobre 2003 -------------------------------------------------------------------------------------------------- #include<stdio.h> #include<conio.h> float Maximum (float a, float b){ return (a>b?a:b); } int main(char* argc, char** argv) //^^^^ ne pas oublier le int...les paramètres sont aussi utiles... //prenons l'habitude dès le début !!!(on peut remplacer char** argv par char* argv[]) { float a,b,c,d,max; //<=pas besoin de déclarer max1 et max2 printf("Saisir 4 chiffres"); scanf("%f %f %f %f", &a,&b,&c,&d); max = Maximum (Maximum (a, b), Maximum (c, d)); //^^^^ tout dans la ^m ligne... //tu économise 2 variables et là, c'est plus simple, surtout avec juste 4 variables printf("Le plus grand nombre est:%0.2f",max); return 0; //<= le return du programme (0=ok (utile sous linux )) } -------------------------------------------------------------------------------------------------- maintenant, plusieurs remarques : 1) utiliser "#define MAX(a,b) ((a)>(b)?(a):(b))" : je ne trouve pas ça terrible de faire ça : qu'est-ce que ça retourne? qu'est-ce que ça prends en entrée? que se passe-t-il si on rentre des classes? faut-il que l'opérateur ">" soit défini? est-ce que ça retourne automatiquement le même type que celui rentré? et si on rentre 2 types différents? => pas très cool et là aussi ça ne prends qu'une ligne !!! 2) toutes les fontions se doivent d'avoir des types bien définis, sinon, en c++ (classes, etc...) ça devient plus possible. PS : visual studio est pas mal, mais il ne faut pas utiliser le visual, c'est dur, c'est le bordel, etc...je vous conseille absolument QT, une librairie graphique (qui marche aussi sous linux) !!! Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.