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............
A voir également:
Le certificat distant n'est pas valide selon la procédure de validation
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).
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.