Misez p'tit, Optimisez - N°16 (Fibonacci)
Modérateur : Politburo
- zpalm
- Fonctionne à 9600 bauds
- Messages : 2936
- Enregistré le : 03 mai 2008 15:33
- Localisation : Grenoble
Re: Misez p'tit, Optimisez - N°16 (Fibonacci)
La 27S n'est pas une financière, c'est une scientifique généraliste (algébrique, non-RPN) avec des fonctions statistiques et financières (TVM). Elle a aussi une horloge intégrée comme la 17B/II, une chose qui manque sur la 42S.
Elle était vendue sous l’appellation "Scientific Calculator for the Technical Manager".
Elle était vendue sous l’appellation "Scientific Calculator for the Technical Manager".
Re: Misez p'tit, Optimisez - N°16 (Fibonacci)
Très intéressant ce fil, merci Marge pour le panorama des HP LED, merci C.RET pour l'explication sur NOP (mais comment sais tu tout ça ? ), merci zpalm pour le programme commenté sur les 27S et copines. Je n'ai jamais entré de programme sur ma 17B à cause de cette philosophie de mise en equation d'un programme. Ça me parait peu naturel et illisible comme procédé de programmation. D'où l'intérêt de cet exemple que je vais étudier pour donner à manger, ne serait-ce qu'une fois à ma 17B .
Perso je n'apprécie plus que les protocoles de programmation naturels et simples, lisibles facilement pour être compris d'une seule lecture après plusieurs mois (et cela inclut les langages machines des LED, mais exclut le RPL, la HP-38, les anciennes machines à code invisible, les HP-17B ...). C'est aussi pourquoi je ne cherche plus à optimiser un programme, car je le préfère redondant et compréhensible, que ramassé, exploitant les astuces intimes de la machine et finalement illisible par la suite. Mais il est vrai que je ne suis qu'un programmeur très amateur, voire grossier, enthousiasmé davantage par le côté utile d'un programme que pour l'aspect ludique de l'exercice ...
merci a+
Perso je n'apprécie plus que les protocoles de programmation naturels et simples, lisibles facilement pour être compris d'une seule lecture après plusieurs mois (et cela inclut les langages machines des LED, mais exclut le RPL, la HP-38, les anciennes machines à code invisible, les HP-17B ...). C'est aussi pourquoi je ne cherche plus à optimiser un programme, car je le préfère redondant et compréhensible, que ramassé, exploitant les astuces intimes de la machine et finalement illisible par la suite. Mais il est vrai que je ne suis qu'un programmeur très amateur, voire grossier, enthousiasmé davantage par le côté utile d'un programme que pour l'aspect ludique de l'exercice ...
merci a+
Dominique
- Hobiecat
- Fonctionne à 9600 bauds
- Messages : 3644
- Enregistré le : 06 sept. 2011 14:57
- Localisation : Normandie
Re: Misez p'tit, Optimisez - N°16 (Fibonacci)
Je crois qu'on doit être un certain nombre à être d'accord avec toi : dans la vie de tous les jours, je programme sur ma 15c sans trop optimiser et sans trop me compliquer la vie et la lisibilité reste la priorité.Tipoucet a écrit :C'est aussi pourquoi je ne cherche plus à optimiser un programme, car je le préfère redondant et compréhensible, que ramassé, exploitant les astuces intimes de la machine et finalement illisible par la suite. Mais il est vrai que je ne suis qu'un programmeur très amateur, voire grossier, enthousiasmé davantage par le côté utile d'un programme que pour l'aspect ludique de l'exercice ...
Pour moi, tout l'intérêt des MPO est de "dégourdir les jambes" de nos vieilles machines, de plus, il n'y a pas vraiment de compétition : chacun choisit la bécane qui lui convient (ou plusieurs machines comme Marge ! ) et optimise son programme comme il l'entend. Il est toujours amusant de voir un intervenant poster une version jugée définitive, et le lendemain le même re-poster une version améliorée !
Sinon, les astuces de programmation que l'on découvre au fil des différentes optimisations sont très éducatives à mon sens : autant certaines sont un frein à la lisibilité, autant d'autres sont lisibles et permettent de se faire le petit plaisir d'avoir un programme plus esthétique quand on programme pour soi.
Pour finir, ces fils MPO permettent, grâce aux infos de certains intervenants, de faire des découvertes sur des machines qu'on ne maîtrise pas forcément à fond : pour citer quelques exemples de ce fil, la programmation d'antiquités comme la 65, les évolutions d'architecture interne, l'utilisation astucieuse du Solver des HP récentes.
- Marge
- Fonctionne à 14400 bauds
- Messages : 6192
- Enregistré le : 01 oct. 2008 14:39
- Localisation : En bas, tout au fond à gauche.
Re: Misez p'tit, Optimisez - N°16 (Fibonacci)
Moi, je suis d'accord avec tout le monde
Autant la plupart de mes programmes sont de gros pâtés avec de gros morceaux de gras dedans, je me réserve toujours un défi, un PGM plus difficile et motivant, pour l'exploit en particulier : en ce moment - et depuis quelques mois -, c'est calculer PI avec le maximum de décimales sur HP-19c. Je sais qu'il existe un PGM tout fait sur le HPM, mais je préfère m'exercer moi-même, l'exercice tient du numéro d'équilibriste, mais c'est là que des astuces du type de LOG pour remplacer 1 par 0 en x et placer 1 en Last x (Merci Zpalm !) sauvent la vie du programmeur (ou du moins quelques heures d'énervement). Je vous tiendrai au courant, naturellement, du résultat final que j'espère assez proche .
Autant la plupart de mes programmes sont de gros pâtés avec de gros morceaux de gras dedans, je me réserve toujours un défi, un PGM plus difficile et motivant, pour l'exploit en particulier : en ce moment - et depuis quelques mois -, c'est calculer PI avec le maximum de décimales sur HP-19c. Je sais qu'il existe un PGM tout fait sur le HPM, mais je préfère m'exercer moi-même, l'exercice tient du numéro d'équilibriste, mais c'est là que des astuces du type de LOG pour remplacer 1 par 0 en x et placer 1 en Last x (Merci Zpalm !) sauvent la vie du programmeur (ou du moins quelques heures d'énervement). Je vous tiendrai au courant, naturellement, du résultat final que j'espère assez proche .
- C.Ret
- Fonctionne à 9600 bauds
- Messages : 3422
- Enregistré le : 31 mai 2008 23:43
- Localisation : N 49°22 E 6°10
Re: Misez p'tit, Optimisez - N°16 (Fibonacci)
Je me suis donc inspiré de la version proposée par zpalm pour essayer ce MPO sur une Ti-58c. Le code ressemble à celui de la Ti-57, mais avec cependant de petites différences dans les adressages. Ce qui fait qu'il y a quelques pas de plus, mais aussi parfois quelques uns de gagnés, en particulier avec l'adressage direct des instructions:
Code : Tout sélectionner
000 42 00 STO 00 Le registre R0 sera notre compteur
002 69 10 OP 10 OP 10 est en réalité la fonction SIGN
004 42 01 STO 01 Le registre R1 sera notre accumulateur
006 00 0 Initialisation.
007 44 01 SUM 01 Accumule R1 = R1 + x c'est à dire que R1 contient f"=f'+f
009 48 01 Exc 01 Echange R1 : x ce qui fait que f" est à l'affichage
011 97 00 00 07 Dsz 00 007 Décrémente R0 et saut vers 007 sauf si R0 est zéro
015 91 R/S Affiche le résultat.
016 81 RST (instruction optionnelle)
L'instruction Exc revient à faire x:t mais entre le registre d'affichage x et n'importe quel registre.
L'instruction SIGN sert uniquement à s'assurer que F(0)=0, car pour n=0 la somme est faite une fois (comme pour n=1), il faut donc initialiser R1 à 0 lorsque n=0 et à 1 pour tout autre valeur positive.
RST 0 R/S affiche 0.
1 R/S affiche 1.
2 R/S affiche 1.
9 R/S affiche 34.
10 R/S affiche 55.
34 R/S affiche 5702887.
49 R/S affiche 7778742049. en environ 27" c'est loin d'être un bolide de l'espace (comme d'autre), mais elle court encore assez bien malgré ses 45 ans !
En fin de calcul, R0 contient 0 et R1 le terme précèdent de la suite f(n-1).
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.
- badaze
- Fonctionne à 14400 bauds
- Messages : 8412
- Enregistré le : 12 févr. 2007 18:36
- Localisation : Pas très loin de Lyon
- Contact :
Re: Misez p'tit, Optimisez - N°16 (Fibonacci)
Sur TI 57 LED
15 pas
15 pas
Code : Tout sélectionner
STO 0
Dsz
Ct
1
STO 2
Lbl 0
RCL 7
+
RCL 2
STO 7
=
STO 2
Dsz
GTO 0
R/S
Modifié en dernier par badaze le 01 mars 2022 22:47, modifié 1 fois.
Tout est bon dans le pocket.
Moi j'aime tout.... Casio, HP, Sharp, TI et les autres sauf que les TI semblent ne pas m'aimer
http://www.emmella.fr
Mes Casio - HP - Sharp - TI
Homme invisible.
Moi j'aime tout.... Casio, HP, Sharp, TI et les autres sauf que les TI semblent ne pas m'aimer
http://www.emmella.fr
Mes Casio - HP - Sharp - TI
Homme invisible.
- badaze
- Fonctionne à 14400 bauds
- Messages : 8412
- Enregistré le : 12 févr. 2007 18:36
- Localisation : Pas très loin de Lyon
- Contact :
Re: Misez p'tit, Optimisez - N°16 (Fibonacci)
Sur TI 57 LED
14 pas
14 pas
Code : Tout sélectionner
STO 0
Dsz
Ct
1
Lbl 0
STO 2
RCL 7
+
RCL 2
STO 7
=
Dsz
GTO 0
R/S
Tout est bon dans le pocket.
Moi j'aime tout.... Casio, HP, Sharp, TI et les autres sauf que les TI semblent ne pas m'aimer
http://www.emmella.fr
Mes Casio - HP - Sharp - TI
Homme invisible.
Moi j'aime tout.... Casio, HP, Sharp, TI et les autres sauf que les TI semblent ne pas m'aimer
http://www.emmella.fr
Mes Casio - HP - Sharp - TI
Homme invisible.
- zpalm
- Fonctionne à 9600 bauds
- Messages : 2936
- Enregistré le : 03 mai 2008 15:33
- Localisation : Grenoble
Re: Misez p'tit, Optimisez - N°16 (Fibonacci)
11 pas sur TI 57 LED:
Code : Tout sélectionner
STO 0
C.t
Dsz
1
Lbl 0
+
x<>t
=
Dsz
GTO 0
R/S
Code : Tout sélectionner
HP-42S
00 { 21-Byte Prgm}
01 LBL"FIB#"
02 X=0? * cas particulier F(0) => on retourne 0
03 RTN
04 0 * x:0, y:N qui va servir de compteur de boucles
05 SIGN * x:1, y:N, l:0
06 LBL 00
07 RCL+ ST L * x:F(n+1)=F(n)+F(n-1), y: compteur de boucle, l:F(n)
08 DSE ST Y * on décrémente y et on teste si on est arrivé à 0
09 GTO 00
10 END * après N boucles on sort
Re: Misez p'tit, Optimisez - N°16 (Fibonacci)
Quelle coïncidence, vous reparlez de ce MPO 10 ans après et j'étais justement en train de programmer hier la suite de Fibonacci en assembleur 6502 !
- badaze
- Fonctionne à 14400 bauds
- Messages : 8412
- Enregistré le : 12 févr. 2007 18:36
- Localisation : Pas très loin de Lyon
- Contact :
Re: Misez p'tit, Optimisez - N°16 (Fibonacci)
Vous êtes de grands malades !
Tout est bon dans le pocket.
Moi j'aime tout.... Casio, HP, Sharp, TI et les autres sauf que les TI semblent ne pas m'aimer
http://www.emmella.fr
Mes Casio - HP - Sharp - TI
Homme invisible.
Moi j'aime tout.... Casio, HP, Sharp, TI et les autres sauf que les TI semblent ne pas m'aimer
http://www.emmella.fr
Mes Casio - HP - Sharp - TI
Homme invisible.
- phm
- Fonctionne à 2400 bauds
- Messages : 1365
- Enregistré le : 08 avr. 2016 18:36
- Localisation : Est Parisien
Re: Misez p'tit, Optimisez - N°16 (Fibonacci)
En assembleur ...
Un vrai défi
6502 sur Apple II ?
En 8080 ou Z80 cela serai plus mon truc.
Un vrai défi
6502 sur Apple II ?
En 8080 ou Z80 cela serai plus mon truc.
HEWLETT-PACKARD : The best
CANON X-07 X-730 X-711 XR-100 XM-101 XP-110F XP-120F XP-130F XP-140
AMSTRAD CPC-464 CPC-6128 ATARI STF DAI Indata
CANON X-07 X-730 X-711 XR-100 XM-101 XP-110F XP-120F XP-130F XP-140
AMSTRAD CPC-464 CPC-6128 ATARI STF DAI Indata
Re: Misez p'tit, Optimisez - N°16 (Fibonacci)
Voici une version qui fonctionne sur une Ti-83+ (A compiler sur https://clrhome.org/asm/) en assembleur z80
Démonstration en vidéo
Code à taper à la main (Mettre comme nom du programme = A) et à lancer par Asm(PrgmA
Si vous voulez avoir une version compilée, faire :
Vous pouvez alors supprimer le programme A et lancer le programme F par Asm(PrgmF
Démonstration en vidéo
Code : Tout sélectionner
#include "ti83plus.inc"
#define progStart $9D95
.org progStart-2
.db $BB,$6D
bcall(_ClrLCDFull) ; routine qui efface écran
ld de,$1 ; DE = 1
push de
pop hl ; HL = DE
ld b,$10 ; B = 16 termes
loop:
push hl ; on sauve HL et DE car routines _dispHL et _newLine les détruisent
push de
bcall(_dispHL)
bcall(_newLine)
pop de ; récupération DE et HL
pop hl
add hl,de ; HL = HL + DE
ex de,hl ; Echange HL et DE
djnz loop
ret
Code : Tout sélectionner
AsmPrgm110100D5E10610E5D5EF0745EF2E45D1E119EB10F2C9
Code : Tout sélectionner
AsmComp(PrgmA,PrgmF
Modifié en dernier par Schraf le 03 mars 2022 09:48, modifié 2 fois.
- badaze
- Fonctionne à 14400 bauds
- Messages : 8412
- Enregistré le : 12 févr. 2007 18:36
- Localisation : Pas très loin de Lyon
- Contact :
Re: Misez p'tit, Optimisez - N°16 (Fibonacci)
En 10 pas.
Code : Tout sélectionner
STO 0
C.t
1
Lbl 0
Inv Dsz
R/S
+
x<>t
=
GTO 0
Tout est bon dans le pocket.
Moi j'aime tout.... Casio, HP, Sharp, TI et les autres sauf que les TI semblent ne pas m'aimer
http://www.emmella.fr
Mes Casio - HP - Sharp - TI
Homme invisible.
Moi j'aime tout.... Casio, HP, Sharp, TI et les autres sauf que les TI semblent ne pas m'aimer
http://www.emmella.fr
Mes Casio - HP - Sharp - TI
Homme invisible.
- zpalm
- Fonctionne à 9600 bauds
- Messages : 2936
- Enregistré le : 03 mai 2008 15:33
- Localisation : Grenoble
Re: Misez p'tit, Optimisez - N°16 (Fibonacci)
Comme quoi l'adage "cent fois sur le métier remettez votre ouvrage" semble avoir été écrit pour les MPOs
- badaze
- Fonctionne à 14400 bauds
- Messages : 8412
- Enregistré le : 12 févr. 2007 18:36
- Localisation : Pas très loin de Lyon
- Contact :
Re: Misez p'tit, Optimisez - N°16 (Fibonacci)
Les idées des autres nous enrichissent et nous permettent de progresser.
Tout est bon dans le pocket.
Moi j'aime tout.... Casio, HP, Sharp, TI et les autres sauf que les TI semblent ne pas m'aimer
http://www.emmella.fr
Mes Casio - HP - Sharp - TI
Homme invisible.
Moi j'aime tout.... Casio, HP, Sharp, TI et les autres sauf que les TI semblent ne pas m'aimer
http://www.emmella.fr
Mes Casio - HP - Sharp - TI
Homme invisible.