Misez p'tit, Optimisez - N°16 (Fibonacci)

Ici, on fait dans le petit, le LCD qui déchire sa race, on y cause même calculatrices quand on est en manque !

Modérateur : Politburo

Répondre
Avatar du membre
C.Ret
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 3405
Enregistré le : 31 mai 2008 23:43
Localisation : N 49°22 E 6°10

Re: Misez p'tit, Optimisez - N°16 (Fibonacci)

Message par C.Ret »

Gilles59 a écrit :J'aime beaucoup : 'F(n)=IFTE( n<2 , n , F(n-1)+F(n-2) )' DEF
Mais c'est monstrueusement lent même sur un 50G.

C'est parce que c'est exactement ce qu'il ne faut pas faire avec ce type de récurrence.

Pour s'en rendre compte, il suffit de compter le nombre d'appels de la fonction rien que pour calculer F(6)

C'est d'ailleurs une des solutions données dans le manuel de l" HP28C/S, c'est très pédagogique: cela montre comme il est facile de programmer des fonctions utilisateur sur ces machines. Mais le manuel propose aussi un calcul à l'aide d'une boucle et démontre l'efficacité de cet algorithme.

Code : Tout sélectionner

                      F(6)
            /                     \  
       F(4)             +            F(5)
     /      \                     /        \
  F(2)   +   F(3)           F(3)       +       F(4)
   / \       /   \          /   \            /      \ 
F(0)+F(1) F(1) + F(2)    F(1) + F(2)      F(2)   +   F(3)  
  |    |    |     / \      |     / \       / \       /   \    
  0    1    1  F(0)+F(1)   1  F(0)+F(1) F(0)+F(1) F(1) + F(2)
                 |    |         |    |    |    |    |     / \  
                 0    1         0    1    0    1    1  F(0)+F(1)
                                                         |    |
                                                         0    1

On comprend pourquoi même sur HP50g, cette méthode est assez lente et lourde en mémoire.
Modifié en dernier par C.Ret le 01 mars 2022 18:14, modifié 1 fois.
SHARP PC-1211 PC-1360 EL-5150 PC-E500 | Commodore C=128D | Texas Instruments Ti-57LCD Ti-74BASICalc Ti-92II Ti-58c Ti-95PROCalc Ti-30XPROMathPrint | Hewlett-Packard HP-28S HP-41C HP-15C HP-Prime HP-71B | CASIO fx-602p | NUMWORKS | Graphoplex Rietz Neperlog | PockEmul | Sommaire des M.P.O. | Ma...dov'il sapone.
Gilles59
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 1602
Enregistré le : 27 oct. 2010 20:46

Re: Misez p'tit, Optimisez - N°16 (Fibonacci)

Message par Gilles59 »

C.Ret a écrit :
On comprend pourquoi même sur HP50g, cette méthode est assez lente et lourde en mémoire.
Ce n'est pas seulement "assez lent", c'est carrément catastrophique :
F(10) prend ... 24 sec

La même récursivité sauce RPN prend 6,7 sec, ce qui n'est pas foudroyant non plus.
Casio FX-502P /602P / 603P / FX180P+ / FX4000P / TI57 / TI66 / TI74 Basicalc / TI95 Procalc / HP12C / HP15C LE / DM41L / HP 30B / HP39GII / HP 48SX USA / 49G / 49g+ / 50G / 50G NewRPL / HP Prime / Oric 1 / Amstrad CPC 6128+ CM14 et MM12 / Alice 32
Avatar du membre
C.Ret
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 3405
Enregistré le : 31 mai 2008 23:43
Localisation : N 49°22 E 6°10

Re: Misez p'tit, Optimisez - N°16 (Fibonacci)

Message par C.Ret »

OUi, mais déjà FIB(6) c'est 26 appels récursifs de la fonction FIB.
Alors, FIB(10) c'est pas moins de 177 appels.

C'est sans appel.

Code : Tout sélectionner

n     :  0 1 2 3 4  5  6  7  8   9  10  11
FIB(n):  0 1 1 2 3  5  8 13 21  34  55  89
appels:  1 1 3 5 9 15 25 41 67 109 177 287
SHARP PC-1211 PC-1360 EL-5150 PC-E500 | Commodore C=128D | Texas Instruments Ti-57LCD Ti-74BASICalc Ti-92II Ti-58c Ti-95PROCalc Ti-30XPROMathPrint | Hewlett-Packard HP-28S HP-41C HP-15C HP-Prime HP-71B | CASIO fx-602p | NUMWORKS | Graphoplex Rietz Neperlog | PockEmul | Sommaire des M.P.O. | Ma...dov'il sapone.
Avatar du membre
Marge
Fonctionne à 14400 bauds
Fonctionne à 14400 bauds
Messages : 6172
Enregistré le : 01 oct. 2008 14:39
Localisation : En bas, tout au fond à gauche.

Re: Misez p'tit, Optimisez - N°16 (Fibonacci)

Message par Marge »

Résultat pour l'HP-33c :

La programmation du bestiau est assez fruste : pas de label, pas de registre de boucle, pas de touche DEL, mais cela a un avantage, c'est qu'au terme de la programmation à la volée du programme qui fonctionne (enfin !), on le connaît par coeur :mrgreen: .

Code : Tout sélectionner

01 15 71 x=0
02 RTN
03 2 2
04 21 x<->y
05 14 41 x<=y?
06 13 25 GTO 25
07 3 3
08 41 -
09 23 0 STO 0
10 1 1
11 31 ENTER
12 51 +
13 14 73 LAST x
14 21 x<->y
15 24 0 RCL 0
16 15 71 x=0?
17 13 30 GTO 30
18 1 1
19 41 -
20 23 0 STO 0
21 22 Rd
22 13 12 GTO 12
23 15 13 NOP (NO Operation)
24 15 13 NOP (NO Operation)
25 1 1
26 74 R/S
27 15 13 NOP (NO Operation)
28 15 13 NOP (NO Operation)
29 15 13 NOP (NO Operation)
30 22 Rd
31 74 R/S
Entrer n, presser G RTN, puis R/S.

F(49) est obtenu en un peu de moins de 28 s., soit à peu près le même temps que celui de l'HP-15c.

A venir, le score de l'HP-19c, intéressant à comparer avec celui de l'HP-29c.
Avatar du membre
C.Ret
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 3405
Enregistré le : 31 mai 2008 23:43
Localisation : N 49°22 E 6°10

Re: Misez p'tit, Optimisez - N°16 (Fibonacci)

Message par C.Ret »

Dans un premier temps, en lisant un peu vite ce dernier code, je me suis demandé pourquoi il y avait des NOP !
Et puis j'ai réalisé en lisant les explications que comme il n'y avait ni label, ni moyen d'éditer le code saisi, il fallait bien évidemment prévoir l'adresse des sauts.

Et alors, je me suis rendu compte que j'étais bien mauvais à cet excercice (à force d'utiliser des machines sophistiquées, on ne se rend plus compte que pour programmer de véritables HP classics, il faut être malin et avoir prévu à l'avance l'adresse où s'exécutera les diffèrentes parties du programme.

Pour y voir plus clair, j'ai recopié ce programme et j'y ai porté le contenu des registres pour faire apparaitre la logique de fonctionnement qui ne m'était pas apparue évidente au premier abord.

Je poste ci-dessous le programe de Marge mis en forme.

Les adresses suivies d'un * indiquent le lieu des branchements, cela permet de mettre en évidence les sauts et la boucle principale.
Le contenu de la pile est annoté afin de faire apparaitre le principe de calcul qui reprend les variables comme dans mes listings :
n pour désigner le n-ième terme de la suite (puis n' et n" en fonction de l'évolution de n à chaque "tour" de la boucle principale)
a et b car il s'agit bien en fait du principe de calcul : a' <- b et b' <- a+b

Code : Tout sélectionner


Program Code Mnemonic          Stack:                  Registres:
                        t:      z:      y:      x:     L:    R0:     
       
                                                 n

01   15 71   x=0?                                
02           RTN                                 0                \\ Renvoi F(0)=0
03       2    2                          n       2
04      21   x<->y                       2       n
05   14 41   x<=y?                                                \\ Test n<=2 ?
06   13 25   GTO 25                                               \\ Pas de label, saut direct
07       3    3                  2       n       3        
08      41    -                          2     n-3      3
09    23 0   STO 0                                           n-3
10       1    1                  2     n-3       1
11      31   ENTER        2    n-3       1       1

                                 ~       a       b               \\ avec n'=n-3, a=1 et b=1 initialement

12*     51    +           ~      ~      n'     a+b      b   n'
13   14 73   LAST x       2     n'     a+b       b
14      21   x<->y        2     n'       b     a+b
15    24 0   RCL 0       n'      b     a+b      n'
16   15 71   x=0?                                                \\ Test n'=0 (fin de boucle)
17   13 30   GTO 30
18       1    1           b    a+b      n'       1
19      41    -           ~      b     a+b      n" 
20    23 0   STO 0                                           n"  \\ Decremente n"=n'-1 pour boucle suivante
21      22   Rd           ~      ~       b     a+b
22   13 12   GTO 12       

23   15 13   NOP  
24   15 13   NOP  
25*      1    1                         2        1               \\ Renvoi F(1)= 1
26      74   R/S
27   15 13   NOP  
28   15 13   NOP  
29   15 13   NOP  
30*     22   Rd          0      0      b        a+b               \\ Renvoi F(n)=a+b
31      74   R/S
Je dois avouer que je ne suis pas fort et très maladroit avec ce style de programmation (sans label).

Mais, à partir de l'excellent modèle fourni par Marge, et en composant sur papier (incapable de composer directement ce type d'optimisation sur la machine, il me faut une vision précise des mouvements de la pile et des sauts !!).

Je suis tout de même capable de proposer une version optimisée (17 pas de programme et pas d'utilisation du registre mémoire R0).

Code : Tout sélectionner

Program Code Mnemonic          Stack:                  
                        t:      z:      y:      x:       L:  
       
                                                 n

01       1    1                          n       1  
02      21   x<->y                       1       n           \\ initialise le calcul avec  a= 1 et b = 0
03       0    0                  1       n       0           \\ en plaçant les trois valeurs (a b et n) 
04      21   x<->y               1       0       n           \\ dans l'ordre attendu pour boucle principale        

05*  15 71   x=0?         ~      a       b       n           \\ ********* Boucle principale
06   13 17   GTO 17                                          \\ Test n=0 (fin de boucle principale)
07       1    1           a      b       n       1
08      41    -           a      a       b     n-1       1   \\ dec n
09      22   Rd         n-1      a       a       b
10      51    +         n-1    n-1       a     a+b       b   \\ b' <- a+b
11   14 73   LAST x     n-1      a     a+b       b           \\ a' <-  b
12      21   x<->y      n-1      a       b     a+b
13      22   Rd         a+b    n-1       a       b           \\ 3 x Rd  vaut 1 x Rup 
14      22   Rd            b   a+b     n-1       a
15      22   Rd           a      b     a+b     n-1           
16   13  5   GTO 05       ~      a'     b'      n'           \\ Boucle principale (a'=b b'=a+b n'=n-1)

                          ~      ~       b       n           \\ Pas de Nop car écrit au propre sur papier avant saisie  :-)
17*     22   Rd           n      ~       ~       b           \\ Renvoi F(n)= b
18      74   RTN                                             \\ Fin du programme optimisé
Et son équivalent pour RPL :

Code : Tout sélectionner

« 0 1 ROT                  // Initialise calcul avec b=0 a=1 et n
                           // place dans la pile  3:b  2:a   1:n  (initialement b=0 a=1 et n=n)
  WHILE DUP                // tant que n>0
  REPEAT
     1 -                   // decrémente: n'=n-1 
     ROT ROT OVER +        // calcule   : b'=a+b et a'=b 
     SWAP ROT              // replace dans l'odre  3:b'  2:a'  1:n'
  END
  DROP2                    // supprime a' et n' et renvoi F(n) = b'
»
Modifié en dernier par C.Ret le 30 mai 2012 08:21, modifié 2 fois.
SHARP PC-1211 PC-1360 EL-5150 PC-E500 | Commodore C=128D | Texas Instruments Ti-57LCD Ti-74BASICalc Ti-92II Ti-58c Ti-95PROCalc Ti-30XPROMathPrint | Hewlett-Packard HP-28S HP-41C HP-15C HP-Prime HP-71B | CASIO fx-602p | NUMWORKS | Graphoplex Rietz Neperlog | PockEmul | Sommaire des M.P.O. | Ma...dov'il sapone.
Gilles59
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 1602
Enregistré le : 27 oct. 2010 20:46

Re: Misez p'tit, Optimisez - N°16 (Fibonacci)

Message par Gilles59 »

A propose de Fibonacci dans l'OP. Voir page 40

http://collection.sasfepu.free.fr/pdf/op_21.pdf


A noter dans ce numéro un jeu intéressant Page 18
(au passage un truc auquel je n'avais pas pensé sur 602P pour tirer pile ou face (0 ou 1 aléatoirement) : RAN# FIX0)
Casio FX-502P /602P / 603P / FX180P+ / FX4000P / TI57 / TI66 / TI74 Basicalc / TI95 Procalc / HP12C / HP15C LE / DM41L / HP 30B / HP39GII / HP 48SX USA / 49G / 49g+ / 50G / 50G NewRPL / HP Prime / Oric 1 / Amstrad CPC 6128+ CM14 et MM12 / Alice 32
Avatar du membre
C.Ret
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 3405
Enregistré le : 31 mai 2008 23:43
Localisation : N 49°22 E 6°10

Re: Misez p'tit, Optimisez - N°16 (Fibonacci)

Message par C.Ret »

Attention, dans cet article de l'OP, la suite de Fibonacci ne prend pas la même convention que nous (F0=0 et F1=1) ce qi entraine un décalage dans les indice des F(n).
SHARP PC-1211 PC-1360 EL-5150 PC-E500 | Commodore C=128D | Texas Instruments Ti-57LCD Ti-74BASICalc Ti-92II Ti-58c Ti-95PROCalc Ti-30XPROMathPrint | Hewlett-Packard HP-28S HP-41C HP-15C HP-Prime HP-71B | CASIO fx-602p | NUMWORKS | Graphoplex Rietz Neperlog | PockEmul | Sommaire des M.P.O. | Ma...dov'il sapone.
Avatar du membre
Marge
Fonctionne à 14400 bauds
Fonctionne à 14400 bauds
Messages : 6172
Enregistré le : 01 oct. 2008 14:39
Localisation : En bas, tout au fond à gauche.

Re: Misez p'tit, Optimisez - N°16 (Fibonacci)

Message par Marge »

Résultat pour l'HP-19c :

Suivant très exactement le programme donné plus haut pour l'HP-29c, l'HP-19c atteint F(49) en 22 s. et demie, soit plus 4 secondes après sa cousine.

Il me reste à tester l'HP-25, et peut-être l'HP-65. Pour ces deux dernières, le programme devrait ressembler à celui de l'HP-33c. Eventuellement, je testerai l'HP-12c.

Je ferai alors un classement général de ces machines.

Pssssssss : jetez donc un oeil sur les autres photos du site où je vous envoie via ce lien. (!!!)
Modifié en dernier par Marge le 29 mai 2012 15:14, modifié 3 fois.
Avatar du membre
Marge
Fonctionne à 14400 bauds
Fonctionne à 14400 bauds
Messages : 6172
Enregistré le : 01 oct. 2008 14:39
Localisation : En bas, tout au fond à gauche.

Re: Misez p'tit, Optimisez - N°16 (Fibonacci)

Message par Marge »

C.Ret a écrit : A partir de l'excellent modèle fourni par Marge, et en composant sur papier (incapable de composer directement ce type d'optimisation sur la machine, il me faut une vision préceise des mouvements de la pile et des sauts !!).

Je suis tout de même capable de proposer une version optimisée (17 pas de programme et pas d'utilisation de registre mémoire).

Code : Tout sélectionner

Program Code Mnemonic          Stack:                  
                        t:      z:      y:      x:       L:  
       
                                                 n

01       1    1                          n       1  
02      21   x<->y                       1       n           \\ initialise le calcul avec  a= 1 et b = 0
03       0    0                  1       n       0           \\ en plaçant les trois valeurs (a b et n) 
04      21   x<->y               1       0       n           \\ dans l'ordre attendu pour boucle principale        

05*  15 71   x=0?         ~      a       b       n           \\ ********* Boucle principale
06   13 17   GTO 17                                          \\ Test n=0 (fin de boucle principale)
07       1    1           a      b       n       1
08      41    -           a      a       b     n-1       1   \\ dec n
09      22   Rd         n-1      a       a       b
10      51    +         n-1    n-1       a     a+b       b   \\ b' <- a+b
11   14 73   LAST x     n-1      a     a+b       b           \\ a' <-  b
12      21   x<->y      n-1      a       b     a+b
13      22   Rd         a+b    n-1       a       b           \\ 3 x Rd  vaut 1 x Rup 
14      22   Rd            b   a+b     n-1       a
15      22   Rd           a      b     a+b     n-1           
16   13  5   GTO 05       ~      a'     b'      n'           \\ Boucle principale (a'=b b'=a+b n'=n-1)

                          ~      ~       b       n           \\ Pas de Nop car écrit au propre sur papier avant saisie  :-)
17*     22   Rd           n      ~       ~       b           \\ Renvoi F(n)= b
18      74   RTN                                             \\ Fin du programme optimisé
Et son équivalent pour RPL :

Code : Tout sélectionner

« 0 1 ROT                  // Initialise calcul avec b=0 a=1 et n
                           // place dans la pile  3:b  2:a   1:n  (initialement b=0 a=1 et n=n)
  WHILE DUP                // tant que n>0
  REPEAT
     1 -                   // decrémente: n'=n-1 
     ROT ROT OVER +        // calcule   : b'=a+b et a'=b 
     SWAP ROT              // replace dans l'odre  3:b'  2:a'  1:n'
  END
  DROP2                    // supprime a' et n' et renvoi F(n) = b'
»
Joli, C.ret ! je t'avoue que mon but n'était pas de fournir un pgm optimisé, mais bien plutôt quelque chose qui suive la grossièreté de mon premier pgm HP-29c, de manière à tester des rapidités selon des critères semblables.

Cela étant, j'ai bien envie de tester le tien pour voir si les différences sont aussi palpables en vitesse qu'en taille (octets). Peut-être après ?
Avatar du membre
Marge
Fonctionne à 14400 bauds
Fonctionne à 14400 bauds
Messages : 6172
Enregistré le : 01 oct. 2008 14:39
Localisation : En bas, tout au fond à gauche.

Re: Misez p'tit, Optimisez - N°16 (Fibonacci)

Message par Marge »

Résultat pour l'HP-25 :

J'ai légèrement changé le code hors de la boucle, car le test de l'HP-33c est inversé. Le résultat est très honorable.

Code : Tout sélectionner

01 15 71 x=0?
02 74 R/S
03 2 2
04 14 51 x>=y?
05 13 25 GTO 25
06 21 x<->y
07 3 3
08 41 -
09 23 00 STO 0
10 1 1
11 31 ENTER
12 51 +
13 14 73 LAST x
14 21 x<->y
15 24 00 RCL 0
16 15 71 x=0?
17 13 30 GTO 30
18 1 1
19 41 -
20 23 00 STO 0
21 22 Rd
22 13 12 GTO 12
23 15 74 NOP
24 15 74 NOP
25 1 1
26 74 R/S
27 15 74 NOP
28 15 74 NOP
29 15 74 NOP
30 22 Rd
31 R/S
Entrer n, presser GTO 00, puis R/S.

F(49) est obtenu en 21 s., soit 3 secondes de plus que l'HP-29c, mais 1 s. et demie de moins que l'HP-19c.
Avatar du membre
Marge
Fonctionne à 14400 bauds
Fonctionne à 14400 bauds
Messages : 6172
Enregistré le : 01 oct. 2008 14:39
Localisation : En bas, tout au fond à gauche.

Re: Misez p'tit, Optimisez - N°16 (Fibonacci)

Message par Marge »

Résultat pour l'HP-12c :

Le programme suivi est peu ou prou le même que précédemment (04 x<->y 05 x<=y?, il n'y a que deux tests sur cet engin).

Presser n, puis GTO 00 et R/S.

F(49) est obtenu en 27 secondes, soit le même temps que l'HP-15c et en 9 s. de plus que l'HP-29c.

Les pros auront remarqué que pour toutes les machines citées jusqu'à présent, le calcul 1 - Sto0 pouvait être réduit à 1 sto-0, mais cela ne sera pas possible sur l'HP-65, raison pour laquelle cette bouse logicielle est restée une bouse logicielle. :lol:

:oops: Edith vient de me taper sur les doigts : l'HP-65 autorise les opérations arithmétiques directement sur les registres, au prix de 3 pas d'instructions. :?
Modifié en dernier par Marge le 30 mai 2012 12:47, modifié 1 fois.
Avatar du membre
Hobiecat
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 3626
Enregistré le : 06 sept. 2011 14:57
Localisation : Normandie

Re: Misez p'tit, Optimisez - N°16 (Fibonacci)

Message par Hobiecat »

Merci Marge pour avoir étendu Misez P'tit Optimisez à Misez P'tit et testez toutes les machines à votre disposition ! :wink:

C'est assez intéressant quand même de voir que certaines machines avec une bonne réputation sont très lentes (34C à 36s, 15 à 27s), alors que des machines plus anciennes sont plus rapides (25 à 21s, 29S à 18s). On voit quand même que la règle qui pourrait être anciennes = lentes et récentes = rapides est loin d'être vérifiées. Il est vraisemblable que l'optimisation interne hardware et software sont en jeu, plus peut-être une optimisation de la conso ? Les voyagers sont quand même les seules réputées pour leurs piles qui durent 10 ans et plus...

Et on comprend mieux l'engouement pour la 602P de Casio. Non seulement, c'est une belle bécane mais en plus elle est rapide avec son résultat en 3,5s. Elle n'est battue que par les machines très récentes, 15C LE ou 34S, alors que 30 ans les séparent !!
Avatar du membre
oli
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 311
Enregistré le : 30 mars 2012 14:13
Localisation : CH

Re: Misez p'tit, Optimisez - N°16 (Fibonacci)

Message par oli »

C.Ret a écrit :Dans un premier temps, en lisant un peu vite ce dernier code, je me suis demandé pourquoi il y avait des NOP !
Et puis j'ai réalisé en lisant les explication que comme il n'y avait ni label, ni moyen d'éditer le code saisi, il fallait bien évidemment prévoir l'adresse des sauts.
Comme mon expérience en programmation se limite aux 15c, 28s et 48sx, je me suis tout d'abord aussi demandé quelle était l'utilité des NOP.
Merci à Marge pour ses programmes et à C.Ret pour ses explications.
Si je comprends bien, la fonction NOP était présente depuis la 65 jusqu'à la 33c et avec les 67 et 34c la fonction LBL est apparue ?
Modifié en dernier par oli le 29 mai 2012 20:12, modifié 1 fois.
Que les anciennes hp (RPN) avant qu'elles ne soient Made in China !!!
Avatar du membre
Marge
Fonctionne à 14400 bauds
Fonctionne à 14400 bauds
Messages : 6172
Enregistré le : 01 oct. 2008 14:39
Localisation : En bas, tout au fond à gauche.

Re: Misez p'tit, Optimisez - N°16 (Fibonacci)

Message par Marge »

oli a écrit :
C.Ret a écrit :Dans un premier temps, en lisant un peu vite ce dernier code, je me suis demandé pourquoi il y avait des NOP !
Et puis j'ai réalisé en lisant les explication que comme il n'y avait ni label, ni moyen d'éditer le code saisi, il fallait bien évidemment prévoir l'adresse des sauts.
Comme mon expérience en programmation se limite aux 15c, 28s et 48sx, je me suis tout d'abord aussi demandé quelle était l'utilité des NOP.
Merci à Marge pour ses programmes et à C.Ret pour ses explications.
Si je comprends bien, la fonction NOP était présente depuis la 65 jusqu'à la 33c et dès la 34c la fonction LBL est apparue ?
La fonction LBL est déjà présente sur l'HP-65, continue sur l'HP-67, l'HP-29c et l'HP-41c (par ordre d'apparition à l'écran, si je ne me trompe pas). Elle est encore sur la 34c (apparue après la 41), mais n'apparaît sur aucun des petits modèles programmables, tels que l'HP-25, l'HP-33c, ou encore la 12 (comme on dirait : une Renault 12).
Avatar du membre
oli
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 311
Enregistré le : 30 mars 2012 14:13
Localisation : CH

Re: Misez p'tit, Optimisez - N°16 (Fibonacci)

Message par oli »

Marge a écrit :
oli a écrit :
C.Ret a écrit :Dans un premier temps, en lisant un peu vite ce dernier code, je me suis demandé pourquoi il y avait des NOP !
Et puis j'ai réalisé en lisant les explication que comme il n'y avait ni label, ni moyen d'éditer le code saisi, il fallait bien évidemment prévoir l'adresse des sauts.
Comme mon expérience en programmation se limite aux 15c, 28s et 48sx, je me suis tout d'abord aussi demandé quelle était l'utilité des NOP.
Merci à Marge pour ses programmes et à C.Ret pour ses explications.
Si je comprends bien, la fonction NOP était présente depuis la 65 jusqu'à la 33c et dès la 34c la fonction LBL est apparue ?
La fonction LBL est déjà présente sur l'HP-65, continue sur l'HP-67, l'HP-29c et l'HP-41c (par ordre d'apparition à l'écran, si je ne me trompe pas). Elle est encore sur la 34c (apparue après la 41), mais n'apparaît sur aucun des petits modèles programmables, tels que l'HP-25, l'HP-33c, ou encore la 12 (comme on dirait : une Renault 12).
Merci, j'avais déjà corrigé pour la 67.
ça veut dire que certaines calculatrices avaient la fonction NOP et LBL et que par la suite, la fonction NOP a été abandonnée ?
Que les anciennes hp (RPN) avant qu'elles ne soient Made in China !!!
Répondre

Retourner vers « Tous les Pockets »