Aller au contenu

c et c++


M3rCo

Messages recommandés

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

  • 2 semaines après...

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

--------------------------------------------------------------------------------------------------

#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

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...