TheRogerFederer
Messages postés256Date d'inscriptionmercredi 31 mars 2010StatutMembreDernière intervention10 mars 2016
-
Modifié par TheRogerFederer le 24/11/2015 à 10:12
TheRogerFederer
Messages postés256Date d'inscriptionmercredi 31 mars 2010StatutMembreDernière intervention10 mars 2016
-
24 nov. 2015 à 14:05
Bonjour, j'ai un tout petit exercice de compréhension :
Donner l'état des variables val1 et val2 à la fin de l'exécution du programme nefaitrien. Inutile de détailler la trace : seul le résultat est attendu.
Bon moi j'ai trouvé que val1 = 3 et val2 = 2 mais est-ce bon ??
Normalement l'entrée n'est pas affecté par les modifications mais E/S et la S le sont normalement, alors j'ai calculé en fonction de cela............
cptpingu
Messages postés3837Date d'inscriptiondimanche 12 décembre 2004StatutModérateurDernière intervention28 mars 2023123 24 nov. 2015 à 12:27
Salut.
Pour répondre à la question, il faudrait déjà préciser si dans le langage utilisé, les arguments sont passés par copie ou par référence.
Je vais supposer que "E" veut dire par copie ("entré") et que "E/S" veut dire par référence ("entré et sortie").
Dans ce cas:
val1 = 5 (il est passé par référence donc affecté, soit: 2 +2, puis 1 + 4).
val2 = 2 (il est passé par copie, donc n'est pas modifié, puisque c'est sa copie temporaire qui l'est).
(En revanche, l'exo aurait pu prendre des noms de variable moins "casse-gueule". Par exemple, val1 et val2 dans "nefaitrien", et a et b dans "essai". L'inversion de variable nommées à l'identique, c'est super vicieux).
TheRogerFederer
Messages postés256Date d'inscriptionmercredi 31 mars 2010StatutMembreDernière intervention10 mars 20161 24 nov. 2015 à 13:01
Ah d'accord, oui ma prof aime mettre des noms de variables vicieux pour nous perdre....................
Oui tu as raison E : signifie : Entrée, et E/S : Entrée/Sortie, en revanche je ne comprend pas pourquoi l'entrée est modifié ?? J'ai vu dans le cours que l'entrée était rarement modifiée voir jamais ??
Le langage que tu me présentes est un pseudo-langage inventé. C'est très pratique pour faire de l'algorithmie. En revanche, pour les détails "techniques", c'est le créateur du langage (généralement ton prof) qui choisit le comportement.
Donc, il m'est difficile de t'aider sur un langage dont je ne connais pas les subtilités techniques choisies par ton prof. J'ai donc considéré que E était un passage par copie (une variable passée par copie à une fonction ne sera pas directement modifiée), et que E/S était un passage par référence (une variable passée par référence affecte la variable au sortir de la fonction).
val1 est passée par E/S, donc est modifiée (et prend le nom de val2 une fois dans la fonction).
val2 est passée par E, donc non modifiée (et prend le nom de val1 une fois dans la fonction).
C'est l'indicateur E ou E/S, qui détermine si la valeur est modifiée au sortir de la fonction.