Page 1 of 1

Création de "fonctions" en TI-Basic z80

Unread postPosted: 30 Sep 2015, 16:11
by Ti64CLi++
Bisam wrote:Ah oui, mais il reste le problème spécifique des z80 qui ne peuvent pas passer des arguments... à moins d'utiliser Ans...

Oui, je trouve cela dommage. :(
Il y a quelques semaines (ou plutôt quelques mois :D) j'avais essayer de programmer un programme donnant le nieme terme de la suite de Fibonnacci mais je ne sais pas faire de fonction récurrentes. :?
Est-ce que quelqu'un pourrais m'aider?

Re: Création de "fonctions" en TI-Basic z80

Unread postPosted: 30 Sep 2015, 16:33
by Anonyme0
Si tu veux créer ta propre fonction, tu peux toujours créer deux programme : 1 programme principal, et un deuxième qui contient exclusivement ta fonction. Il te suffira d'appeler le programme 2 quand tu voudras utiliser ta fonction.

Re: Création de "fonctions" en TI-Basic z80

Unread postPosted: 30 Sep 2015, 16:35
by Ti64CLi++
En gros voila le programme que je veux faire en Basic-Z80:
Code: Select all
def fibo(n):
         return fibo(n-1)+fibo(n-2)

Re: Création de "fonctions" en TI-Basic z80

Unread postPosted: 30 Sep 2015, 22:13
by Bisam
1) Cet algorithme de calcul de la suite de Fibonacci est le pire qui soit !
2) Comme on vient de le faire remarquer, on ne peut passer que le dernier calcul effectué comme pseudo-argument à un programme Basic-z80. Par conséquent, il est impossible de faire de la récursivité à plusieurs prédécesseurs et très difficile de faire de la récursivité tout court car toutes les variables sont globales !
3) En revanche, il est tout-à-fait possible de faire de la récursivité classique, voire de la récursivité croisée, comme le prouvent les programmes suivants :
Code: Select all
PROGRAM:PAIR
Disp "PAIR
If Ans=0
Then
1
Else
Ans-1
prgmIMPAIR
End

qui va de paire avec :
Code: Select all
PROGRAM:IMPAIR
Disp "IMPAIR
If Ans=0
Then
0
Else
Ans-1
prgmPAIR
End


Ce couple de programmes affiche en dernier le mot correspondant à la parité de n=Ans au moment de l'appel.
De plus, après l'appel, Ans vaut 0 ou 1 suivant la parité de n (1 pour pair et 0 pour impair).

On peut même réussir à faire la factorielle en trichant un peu
Code: Select all
PROGRAM:FACTO
If Ans=0
Then
prod(L1→A
{1→L1
A
Else
Ans→L1(1+dim(L1
Ans-1
prgmFACTO
End

Il suffit alors d'initialiser la première fois avec {1→L1 puis de taper 11:prgmFACTO:Ans pour avoir la factorielle de 11.

Re: Création de "fonctions" en TI-Basic z80

Unread postPosted: 01 Oct 2015, 12:22
by Ti64CLi++
Est-ce que tu pourrais me faire la suite de Fibonacci?

Re: Création de "fonctions" en TI-Basic z80

Unread postPosted: 01 Oct 2015, 12:27
by Hayleia
Code: Select all
Ans→N
0→U
1→V

0→R
For(I,1,N)
U+V→R
V→U
R→V
End

Disp R

Re: Création de "fonctions" en TI-Basic z80

Unread postPosted: 01 Oct 2015, 12:27
by Ti64CLi++
Ok, merci beaucoup Hayleia
Par contre il ne marche pas:
il m'affiche 0 pour chaque valeur de Ans :?