Bonjour,
J'aurais une question de programmation à poser (sur une TI89 Titanum) en TI Basic de manière générale.
Est-il possible d'appeler une fonction avec un argument qui sera modifié à
la sortie de l'appel à cette fonction (l'équivalent du passage par adresse
en langage C) ?
Exemple :
_________________________________________________________
main()
Func
Local Arg, mm
{1,3,4} -> mm
1-> Arg
Foo(Arg, mm)
%%%%: j'aurais voulu qu'ici, à la sortie de l'appel à Foo, mon argument
Arg ait la valeur 2 et mm soit égal à {2,3,4}
EndFunc
_________________________________________________________
Foo(A, m)
Func
A+1 -> A %% (mais cela ne modifiera pas A en sortie de Foo)
A -> m[1] %% ( mais cela ne modifiera pas mm en sortie de Foo)
EndFunc
_________________________________________________________
Est-il possible de faire cela ?
Merci bien !
Modification d'un argument à la sortie d'une fonction
Voir le premier message non lu • 6 messages
• Page 1 sur 1
-
claiclai
Niveau 2: MI2 (Membre Initié)- Messages: 6
- Inscription: 01 Mar 2015, 16:54
- Genre:
- Calculatrice(s):→ MyCalcs profile
Re: Modification d'un argument à la sortie d'une fonction
Pas directement, mais on peut arranger ça facilement dans ton cas si il s'agit de modifier 1 seul argument.
_________________________________________________________
main()
Func
Local Arg, mm
{1,3,4} -> mm
1-> Arg
Arg = Foo(Arg, mm)
EndFunc
_________________________________________________________
Foo(A, m)
Func
A+1 -> A
A -> m[1]
return A
EndFunc
_________________________________________________________
_________________________________________________________
main()
Func
Local Arg, mm
{1,3,4} -> mm
1-> Arg
Arg = Foo(Arg, mm)
EndFunc
_________________________________________________________
Foo(A, m)
Func
A+1 -> A
A -> m[1]
return A
EndFunc
_________________________________________________________
-
critorAdmin
Niveau 19: CU (Créateur Universel)- Messages: 41468
- Images: 14480
- Inscription: 25 Oct 2008, 00:00
- Localisation: Montpellier
- Genre:
- Calculatrice(s):→ MyCalcs profile
- YouTube: critor3000
- Twitter/X: critor2000
- GitHub: critor
Re: Modification d'un argument à la sortie d'une fonction
On ne peut pas agir par effet de bord avec le TI Basic, tout simplement parce que le passage par adresse n'existe pas ! La calculette ne permet que des passages d'argument par valeurs (ce qui peut être parfois très lourd quand il s'agit de passer de grosses matrices).
On peut cependant ruser comme l'a fait Critor, ou encore en utilisant l'indirection (qui permet d'agir sur une variable dont on connaît le nom grâce à une chaîne de caractères contenant ce nom).
Cependant, dans ce deuxième cas, je pense qu'il faudra que les fonctions utilisant l'indirection dans le but de modifier des valeurs soient définies à l'intérieur de la fonction ou du programme définissant les variables devant être modifiées. Si ce n'est pas le cas, l'environnement local de la fonction ne connaîtra pas la variable... et fera donc comme si elle était formelle, ce qui ne modifiera rien du tout dans la fonction appelante.
On peut cependant ruser comme l'a fait Critor, ou encore en utilisant l'indirection (qui permet d'agir sur une variable dont on connaît le nom grâce à une chaîne de caractères contenant ce nom).
Cependant, dans ce deuxième cas, je pense qu'il faudra que les fonctions utilisant l'indirection dans le but de modifier des valeurs soient définies à l'intérieur de la fonction ou du programme définissant les variables devant être modifiées. Si ce n'est pas le cas, l'environnement local de la fonction ne connaîtra pas la variable... et fera donc comme si elle était formelle, ce qui ne modifiera rien du tout dans la fonction appelante.
-
BisamAdmin
Niveau 15: CC (Chevalier des Calculatrices)- Messages: 5665
- Inscription: 11 Mar 2008, 00:00
- Localisation: Lyon
- Genre:
- Calculatrice(s):→ MyCalcs profile
Re: Modification d'un argument à la sortie d'une fonction
Merci pour cette réponse.
As-tu quelques pistes pour que je me documente sur l'indirection en TI Basic ?
As-tu quelques pistes pour que je me documente sur l'indirection en TI Basic ?
-
claiclai
Niveau 2: MI2 (Membre Initié)- Messages: 6
- Inscription: 01 Mar 2015, 16:54
- Genre:
- Calculatrice(s):→ MyCalcs profile
Re: Modification d'un argument à la sortie d'une fonction
-
BisamAdmin
Niveau 15: CC (Chevalier des Calculatrices)- Messages: 5665
- Inscription: 11 Mar 2008, 00:00
- Localisation: Lyon
- Genre:
- Calculatrice(s):→ MyCalcs profile
-
claiclai
Niveau 2: MI2 (Membre Initié)- Messages: 6
- Inscription: 01 Mar 2015, 16:54
- Genre:
- Calculatrice(s):→ MyCalcs profile
6 messages
• Page 1 sur 1
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 8 invités