Faire un boucle pour recommencer un application quand ceci fini. - C++ - Programmation
Marsh Posté le 26-08-2004 à 09:18:08
Code :
|
mais y te manque quelques notions logiques toi amha
y a quelques trucs dans ton code que je capte pas...
dans ta declaration de tes fonctions, je voit qu'elles ont 2 parametres en entrée, et tu ne leur en passe qu'un
et ca c'est quoi ?
Code :
|
²
et juste comme ca, si 'ch' ne veut ni 'i' ni 'c', tu fait quoi ?
Marsh Posté le 26-08-2004 à 16:15:51
A propos, un pouce c'est 2.54 cm et non 2.14, à moins que tu aies des petites mains bien sûr...
Marsh Posté le 26-08-2004 à 19:08:10
didier1809 a écrit : |
Tu t'aventures mon gars! Ca s'appelle les parametres par défaut.
Marsh Posté le 26-08-2004 à 19:13:43
Code :
|
Marsh Posté le 26-08-2004 à 23:03:43
Ace17 a écrit : Tu t'aventures mon gars! Ca s'appelle les parametres par défaut. |
ca aurait pas ete plus simple de faire #define valeur 2.18, ou const float valeur 2.18, au lieu de le mettre la ? ca me semble bizzare et pas tres logique en fait
Marsh Posté le 26-08-2004 à 23:13:16
didier1809 a écrit : ca aurait pas ete plus simple de faire #define valeur 2.18, ou const float valeur 2.18, au lieu de le mettre la ? ca me semble bizzare et pas tres logique en fait |
Bon, déja la syntaxe correcte pour déclarer une constante c'est
Code :
|
ensuite, c'est pas du tout ca qu'il cherche a faire : il cherche juste a avoir des valeurs par défaut pour les arguments qu'il file a sa fonction. Ca permet de l'appeler en omettant certains parametres ( les derniers dans la pratique ). valeur n'existe pas en dehors de la fonction. Et si il fait incm(x, 2.54) miracle, non seulement ca compile, mais en plus, valeur vaut 2.54!
Marsh Posté le 26-08-2004 à 23:14:07
Si t'es pas convaincu :
http://kafka.fr.free.fr/docs/langa [...] de_11.html
Marsh Posté le 26-08-2004 à 23:16:09
ca sert a quoi de specifier const un parametre passé par valeur ?
Marsh Posté le 26-08-2004 à 23:22:06
non mais la
float cmin(float cm, const float factorcm=2.14)
le const est inutile, tu travail sur une copie
Marsh Posté le 26-08-2004 à 23:27:21
cris56 a écrit : tu travailles sur une copie |
Je sais!
Mais le const c'est pas uniquement pour éviter que des gens a l'extérieur ne modifient tes données. Si c'était le cas on pourrait tres bien remplacer tous les
#define LIFE 100
ou les
const int LIFE = 100;
par des
static int LIFE = 100;
voire carrément
int LIFE = 100;
Marsh Posté le 26-08-2004 à 23:29:30
comment des gens de l'exterieur pourraient modifier cette valeur par defaut du parametre ?
Marsh Posté le 26-08-2004 à 23:34:48
Tu ne m'as pas compris. Ce que je veux dire c'est que quand tu fais ca
Code :
|
ca veut dire que si je fais ca
Code :
|
il n'y a aucun risque que affiche_texte ne modifie buffer.
Maintenant si je fais ca
Code :
|
il est encore plus clair que si je fais
Code :
|
il n'y a aucune chance que n soit modifié, puisqu'il est passé par valeur, comme tu l'as justement fait remarquer. Ce que fait Alperx, ca revient a faire carrément
Code :
|
et c'est clair que ca ne me viendrait jamais a l'esprit.
Mais si on regarde du point de vue de l'intérieur de la fonction ( donc pour nous, l'extérieur, qui veut illégalement modifier nos données ) n sera une constante. Oui, et alors? De toutes facons c'est rare qu'on modifie les parametres a l'intérieur de la fonction qui les recoit. Apres tout, on sait bien qu'on veut pas y toucher, mais c'est la meme chose pour les constantes globales.
Apres tout, je pourrais tres bien décider d'ignorer le mot clef "const" et la ou quelqu'un ferait un define ou un const int, moi je créerais juste une variable de type int que j'initialiserais a la bonne valeur. Je prendrais juste le risque que cette variable soit modifiée par quelqu'un qui ne serait censé que la lire.
Marsh Posté le 27-08-2004 à 08:06:25
Ca ne t'arrive jamais de faire :
Code :
|
alors que tu pourrais bien décider de te passer du const et prendre le risque?
edit : bon je vais faire plus simple. La seule utilité du const dans son cas c'est d'éviter qu'un mongol fasse valeur = 1.5; dans le corps de la fonction.
Marsh Posté le 27-08-2004 à 08:15:17
cris56 a écrit : ca sert a quoi de specifier const un parametre passé par valeur ? |
à se surveiller. ou imagine que tu appelles une autre fonction qui fait un passage par référence,, si ça modifie ton paramètre, ça risque de te faire un bug bien planqué avec le temps
Marsh Posté le 27-08-2004 à 08:17:03
Toute cette théorie est bien jolie, mais c'est ridicule de définir le facteur de proportionalité comme paramètre de la fonction. Si la fonction doit convertir des pouces en cm ou vice versa, le facteur sera toujours 2.54, et c'est pas demain la veille que ça changera. Appeler cmin(1,3.14159) n'a, dans le contexte du programme, aucun sens, donc pourquoi ne pas utiliser #define facteur 2.54 et n'utiliser qu'un seul paramètre dans la fonction?
Marsh Posté le 27-08-2004 à 09:17:33
glaurung a écrit : Toute cette théorie est bien jolie, mais c'est ridicule de définir le facteur de proportionalité comme paramètre de la fonction. Si la fonction doit convertir des pouces en cm ou vice versa, le facteur sera toujours 2.54, et c'est pas demain la veille que ça changera. Appeler cmin(1,3.14159) n'a, dans le contexte du programme, aucun sens |
Tout comme on pourrait qualifier de ridicule le fait d'utiliser une fonction dont le seul role est de faire une multiplication! Mais Alperx est pas en train de bosser sur un projet de convertisseur d'unités, il est en train d'apprendre le langage!
Marsh Posté le 27-08-2004 à 09:24:13
Ace17 a écrit : Bon, déja la syntaxe correcte pour déclarer une constante c'est
ensuite, c'est pas du tout ca qu'il cherche a faire : il cherche juste a avoir des valeurs par défaut pour les arguments qu'il file a sa fonction. Ca permet de l'appeler en omettant certains parametres ( les derniers dans la pratique ). valeur n'existe pas en dehors de la fonction. Et si il fait incm(x, 2.54) miracle, non seulement ca compile, mais en plus, valeur vaut 2.54! |
pour la syntaxe exacte, j'ai tapé ca vite fait, c'etait pour l'exemple
et c'est vrai que je le savait en plus, mais ca fait trop longtemps que j'ai pas fait de C, donc ca m'etait sortit de la tete
n'empeche que je ne trouve pas ca joli
Marsh Posté le 26-08-2004 à 08:44:34
Salut
J'ai fais un petit programme de convertion de cm<->pouce et pouce<->cm. Tout fonctionne à merveille. Maintenant je veux que le programme retourne au début après avoir accomplit sa tâche pour refaire une autre convertion. Je pense qu'on fait ça à l'aide des boucles; j'ai lu un peu sur "while, for, switch..." et j'ai essayé quelque trucs mais ça ne marche pas. Alors j'apprécirai vos conseils.
Voici la source:
NB: Je ne pouvais pas faire de recherche sur le forum.
Message édité par Alperx le 26-08-2004 à 08:45:36