Détermination d'une procédure. [Résolu]

TheRogerFederer 256 Messages postés mercredi 31 mars 2010Date d'inscription 10 mars 2016 Dernière intervention - 24 nov. 2015 à 10:12 - Dernière réponse : TheRogerFederer 256 Messages postés mercredi 31 mars 2010Date d'inscription 10 mars 2016 Dernière intervention
- 24 nov. 2015 à 14:05
Bonjour, j'ai un tout petit exercice de compréhension :


programme nefaitrien
val1, val2 : entier
debut
val1 1
val2 2
essai(val2, val1)
afficher val1, val2
fin
procédure essai (E val1:entier, E/S val2:entier)
debut
val1 val1 + 2
val2 val2 + val1
fin


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............
Afficher la suite 

Votre réponse

4 réponses

cptpingu 3785 Messages postés dimanche 12 décembre 2004Date d'inscriptionModérateurStatut 18 mai 2018 Dernière intervention - 24 nov. 2015 à 12:27
0
Utile
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).
Commenter la réponse de cptpingu
TheRogerFederer 256 Messages postés mercredi 31 mars 2010Date d'inscription 10 mars 2016 Dernière intervention - 24 nov. 2015 à 13:01
0
Utile
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 ??
Commenter la réponse de TheRogerFederer
cptpingu 3785 Messages postés dimanche 12 décembre 2004Date d'inscriptionModérateurStatut 18 mai 2018 Dernière intervention - Modifié par cptpingu le 24/11/2015 à 13:31
0
Utile
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.


Améliorer votre expérience CodeS-SourceS avec ce plugin:
http://codes-sources.commentcamarche.net/forum/affich-10000111-plugin-better-cs-2#cptpingu-signature
Commenter la réponse de cptpingu
TheRogerFederer 256 Messages postés mercredi 31 mars 2010Date d'inscription 10 mars 2016 Dernière intervention - 24 nov. 2015 à 14:05
0
Utile
Ahhhhh oui je comprend ce que tu dit, oui c'est tout a fait cela enfaite.

"C'est l'indicateur E ou E/S, qui détermine si la valeur est modifiée au sortir de la fonction."

Oui tout a fait cela je l'avais vu dans le cours, et c'est ce que je me suis empresser de retenir ;)
Commenter la réponse de TheRogerFederer

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.