Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1426 connectés 

  FORUM HardWare.fr
  Programmation
  Algo

  Passage par adresse et par valeur

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Passage par adresse et par valeur

n°277166
schumacher
Posté le 29-12-2002 à 17:48:16  profilanswer
 

salut all
 
j'ai cet algo bidon qui calcule le PGCD (plus gd commun diviseur) de 2 valeurs
 
voilà la fonction :
 
TQ A != B FAIRE
|  SI A > B ALORS
|  |  A := A-B
|  SINON
|  |  B := B-A
|  FSI
FTQ
 
on me demande de dire si les variables A et B sont passées par valeur ou par adresse...
 
ce qu'on peut dire c que à chaque passage dans le TQ un travaille sur les nouvelles valeurs de A et de B donc à priori je dirais qu'il faut les passer par adresse mais sur mon exo j'ai marqué par valeur
 
c par adresse ou par valeur alors ? :heink:


Message édité par schumacher le 29-12-2002 à 17:49:02

---------------
L'impôt appauvrit l'ignorant et enrichit le connaisseur.
mood
Publicité
Posté le 29-12-2002 à 17:48:16  profilanswer
 

n°277168
schumacher
Posté le 29-12-2002 à 17:52:44  profilanswer
 

:jap:


---------------
L'impôt appauvrit l'ignorant et enrichit le connaisseur.
n°277170
mrbebert
Posté le 29-12-2002 à 17:57:54  profilanswer
 

Tu récupère le résultat comment ?
Si c'est dans A ou dans B alors oui, il faut les passer par adresses.

n°277171
schumacher
Posté le 29-12-2002 à 17:57:59  profilanswer
 

personne? :cry:


---------------
L'impôt appauvrit l'ignorant et enrichit le connaisseur.
n°277172
schumacher
Posté le 29-12-2002 à 18:01:13  profilanswer
 

mrbebert a écrit :

Tu récupère le résultat comment ?
Si c'est dans A ou dans B alors oui, il faut les passer par adresses.


dans A !


---------------
L'impôt appauvrit l'ignorant et enrichit le connaisseur.
n°277173
mrbebert
Posté le 29-12-2002 à 18:02:03  profilanswer
 

Dans ce cas, oui. Il faut que la fonction modifie A et pouvoir consulter sa nouvelle valeur après l'exécution. Donc passage par adresse.

n°277174
schumacher
Posté le 29-12-2002 à 18:02:27  profilanswer
 

enfin à la fin je fais un :
 
nom_de_la_fonction := A


---------------
L'impôt appauvrit l'ignorant et enrichit le connaisseur.
n°277176
schumacher
Posté le 29-12-2002 à 18:03:36  profilanswer
 

ok donc 2 raisons pour le choix par adresse :
 
 

  • on récupère le résultat en sortie
  • à chaque passage la valeur est modifiée donc faut que ça soit pas adresse sinon ça irait pas


daccord pour les 2 points?
 
merci bcp


---------------
L'impôt appauvrit l'ignorant et enrichit le connaisseur.
n°277177
mrbebert
Posté le 29-12-2002 à 18:04:20  profilanswer
 

schumacher a écrit :

enfin à la fin je fais un :
 
nom_de_la_fonction := A

Dans ce cas ce n'est plus utile. Un passage par valeur suffit puisque l'appelant n'a pas besoin de connaitre les nouvelles valeurs de A (il récupérera le résultat par le retour de la fonction).

n°277181
schumacher
Posté le 29-12-2002 à 18:06:24  profilanswer
 

comment faire pour savoir alors?
 
il faut passer par adresse uniquement quand le résultat est utilisé en sortie ?


---------------
L'impôt appauvrit l'ignorant et enrichit le connaisseur.
mood
Publicité
Posté le 29-12-2002 à 18:06:24  profilanswer
 

n°277186
schumacher
Posté le 29-12-2002 à 18:25:19  profilanswer
 

up


---------------
L'impôt appauvrit l'ignorant et enrichit le connaisseur.
n°277187
mrbebert
Posté le 29-12-2002 à 18:34:55  profilanswer
 

schumacher a écrit :

ok donc 2 raisons pour le choix par adresse :
 
 

  • on récupère le résultat en sortie
  • à chaque passage la valeur est modifiée donc faut que ça soit pas adresse sinon ça irait pas


daccord pour les 2 points?
 
merci bcp

non
Ca dépend si tu veux que la fonction/procédure appelée puisse modifier directement la valeur de ta variable.
Si tu veux seulement qu'elle utilise la valeur mais sans la modifier, tu la passe par valeur. Si tu veux qu'elle modifie la variable, tu passes par adresse.
 
Par exemple, pour une fonction qui doublerait une variable :
1er cas :
A = 3
double(A)
echo "La nouvelle valeur de A est " . A // affiche 6
 
Dans ce cas, A doit être passée par adresse car tu veux que la fonction "double" modifie directement la valeur de A.
 
2ème cas :
A = 3
B = double(A)
echo "A vaut encore " . A // affiche 3 car A n'est pas modifiée
echo "B vaut " . B // affiche 6
 
Ici, tu ne veux pas que "double" puisse modifier A, tu la passes par valeur.
L'avantage, c'est que "double" ne peut pas modifier A, même si, en interne, rien ne l'empêche de faire quelque chose comme "A = A * 2". En passant par valeur, la fonction "double" travaille sur une copie de A, ce qui évite tout effet de bord.


Message édité par mrbebert le 29-12-2002 à 18:37:14
n°277199
schumacher
Posté le 29-12-2002 à 19:26:02  profilanswer
 

c très clair
 
merci bcp t super sympa :jap:


---------------
L'impôt appauvrit l'ignorant et enrichit le connaisseur.
n°277210
etheriel
Posté le 29-12-2002 à 20:22:18  profilanswer
 

Parfois, on passe par adresse une variable meme si on ne veut que la consulter sans la modifier pour gagner en perf. C'est le cas pour des variables volumineuses uniquement (pas des octets, hein !).
un passage par adresse => un pointeur
un passage par valeur  => on met sur la pile la valeur, meme si sa taile est enorme
 

n°277220
schumacher
Posté le 29-12-2002 à 20:54:51  profilanswer
 

oui pour les tableaux par exemple  :)


---------------
L'impôt appauvrit l'ignorant et enrichit le connaisseur.

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Algo

  Passage par adresse et par valeur

 

Sujets relatifs
[JS] PB avec la valeur d'une liste[VC++ WIN32] Comment recuperer l adresse IP d'une interface reseau ?
[PHP et SQL] passage de variable en parametre[JS] Mettre une valeur dans une autre fenêtre [ - Job's Done - ]
substitue une valeur par une autre a deux reprise (sed?)si ca peut intéresser quelqu'un (recupérer adresse ip)
DATAGRID >>Recuperer la valeur d'une case !svp passage de parametres procedures stockées
faire un readln avec une valeur deja affiche et modifiabl par defaut ?[php] recuperer l adresse ip du visiteur et l afficher
Plus de sujets relatifs à : Passage par adresse et par valeur


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR