Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.

Forum Casio - Projets de programmation


Index du Forum » Projets de programmation » fxtran -- Codez en Fortran pour votre Casio !
Potter360 Hors ligne Rédacteur Points: 1221 Défis: 2 Message

fxtran -- Codez en Fortran pour votre Casio !

Posté le 24/04/2022 15:15

Bonjour à tous.tes !
Lundi dernier je me suis levé avec une (mauvaise) idée : coder en Fortran pour ma Casio.
Une semaine plus tard est né fxtran, qui réalise ce rêve (rêve hum hum) !
Le projet utilise le fxsdk de Lephenixnoir ainsi que f2c, un programme permettant de transformer du code Fortran 77 en code C.

Une petite démo tout de suite :

Je crée un nouveau projet fxsdk :

$ fxsdk new demo


Je le configure pour fxtran :

$ fxtran configure


Dans le dossier src j'ai donc un fichier main.f qui contient un programme d'exemple. Let's programming something !
Je fais une petite démo, voici donc le code :

     INTEGER FUNCTION FIBO(n)
        INTEGER n
        INTEGER FIBO
        IF (n .EQ. 0) THEN
                FIBO=0
                RETURN
        ELSE IF (n .EQ. 1) THEN
                FIBO=1
                RETURN
        ELSE
                FIBO=FIBO(n-1) + FIBO (n-2)
        END IF
      END



      PROGRAM DEMO
        INTEGER FIBO,a
        REAL b
        PRINT *,"Suite de Fibonacci :"
        DO a = 1,16
                PRINT *,FIBO(a)
                WAIT
        END DO
        b=sqrt(9.00)
        PRINT *,"Racine de 9 :",int(b)
        WAIT
        PRINT *,"Racine de 2 :", sqrt(2.00)
        PI=4.D0*DATAN(1.D0)
        WAIT
        PRINT *,"Pi :",PI
      END



Ici je déclare une fonction FIBO(n) qui me renvoie le terme de rang n de la suite de Fibonacci (j'utilise l'algorithme récursif naïf), puis dans le programme principal j'affiche les 16 premiers termes de la suite de Fibonacci. Entre chaque terme j'utilise la fonction WAIT qui n'existe pas en Fortran, elle est crée par fxtran et met en pause le programme jusqu'à l'appui d'une touche (équivalent de la fonction getkey() avec Gint). Ensuite j'affiche différentes racines, puis le nombre π. Le code est vraiment typique du Fortran 77.

Compilons ceci :

fxtran build-fx


Voilà, le g1a est généré dans MyAddin.g1a !

On se retrouve après le transfert, pour une petite vidéo :



Et voilà !

Installation


Pour installer fxtran, il faut :

- Installer le fxsdk de Lephenixnoir

- Puis :
git clone https://github.com/harrypotter360/fxtran.git && cd fxtran

chmod +x install && sudo ./install

Et voilà, fxtran est installé !

Utilisation

Pour utiliser fxtran :

- On crée un projet fxsdk :
fxsdk new demo && cd demo


- On le rend compatible fxtran :
fxtran configure


Et ensuite, on peut coder en Fortran 77 dans le fichier src/main.f !

Pour build :

fxtran build-fx

(build-cg existe mais ne marche pas encore)

Et on transfère le g1a sur la calto !

Voilà, j'espère que ça vous plaira !
Enjoy !

@RDP


Lephenixnoir Hors ligne Administrateur Points: 24228 Défis: 170 Message

Citer : Posté le 25/04/2022 19:07 | #


Yo, alors ça c'est à la fois ballzy et cool. Il va falloir mettre à jour le topic de Cake : https://www.planet-casio.com/Fr/forums/topic14371-1-est-ce-que-je-peux-programmer-en-tel-langage-sur-ma-calto.html

Je réalise que le pseudo-shell, le Generic, etc, c'était tout pour ça xD

Est-ce que c'est possible d'interfacer avec du C ? Je suppose qu'il n'y a pas d'autres fonctions que print() (et peut-être quelques autres) supportées du côté Fortran.

(Note : soit tu installes dans ~/.local soit tu installes dans /usr, faut choisir !)
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Potter360 Hors ligne Rédacteur Points: 1221 Défis: 2 Message

Citer : Posté le 25/04/2022 19:13 | #


Oui tu peux interfacer avec du C, via la fonction CALL de Fortran mais aussi directement en modifiant le fichier .c généré. Je le supprime dans le script bash après la compilation pour l'utilisateur, tu peux supprimer la ligne qui rm main.c mais je vais essayer d'en faire un flag, bonne idée.

Lephenixnoir a écrit :
Je suppose qu'il n'y a pas d'autres fonctions que print() (et peut-être quelques autres) supportées du côté Fortran.

Mmm, je comprends pas très bien ce que tu veux dire par là...

Lephenixnoir a écrit :
(Note : soit tu installes dans ~/.local soit tu installes dans /usr, faut choisir !)


Ah oui merde. C'est quoi l'équivalent de /usr/bin dans ~/.local ?

C'est vraiment codé de manière dégueulasse, juste un projet "vite fait" qui sert à rien ahah
Globalement, coder. Mal, mais coder.
Lephenixnoir Hors ligne Administrateur Points: 24228 Défis: 170 Message

Citer : Posté le 25/04/2022 19:14 | #


Mmm, je comprends pas très bien ce que tu veux dire par là...

T'as pas une instruction DRAW_SPRITE ?

Ah oui merde. C'est quoi l'équivalent de /usr/bin dans ~/.local ?

Ce serait ~/.local/bin. Lequel n'est pas forcément dans le PATH, ce qui peut être chiant (mais si le fxSDK est installé normalement c'est le cas).
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Potter360 Hors ligne Rédacteur Points: 1221 Défis: 2 Message

Citer : Posté le 25/04/2022 19:20 | #


T'as pas une instruction DRAW_SPRITE ?

Ah oui ok d'accord. Normalement tu peux appeler n'importe quelle fonction qui vient du C (gint du coup) avec CALL, ce qui permet d'appeler dimage() ou d'autres.
Après pour ça ça pose quelques soucis de déclaration de la BOPTI_IMAGE_T, j'ai déjà quelques idées que je vais approfondir

Ce serait ~/.local/bin. Lequel n'est pas forcément dans le PATH, ce qui peut être chiant (mais si le fxSDK est installé normalement c'est le cas).
.
Okkay, super merci. De toute façon le fxSDK est obligé d'être installé pour que fxtran fonctionne donc c'est génial.
Globalement, coder. Mal, mais coder.

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 78 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd