Planète Casio - Vos tutoriels et astuces - Flux RSS http://www.planet-casio.com Programmes Casio, Jeux, Cours pour Calculatrices Casio fr-FR https://www.planet-casio.com/images/logo.gif Planète Casio - Vos tutoriels et astuces - Flux RSS http://www.planet-casio.com 55 50 Programmes Casio, Jeux, Cours pour Calculatrices Casio. Sat, 09 Dec 2023 07:53:23 GMT Sat, 09 Dec 2023 07:53:23 GMT contact@planet-casio.com (Planet Casio) contact@planet-casio.com (Planet Casio) 5 Peut on coder en C ou en C++ directement a partir de ta casio? https://www.planet-casio.com/Fr/forums/topic17540--.html Salut tous le monde :D Je suis nouveau ici mais je m'y connais un peu (Je sais débrider ma Casio en gragh 75, je sais codé sur Casiobasic, je connais le principe des adds-ins et je sais codé en python). Sinon, j'aimerais bien savoir si cela est possible de codé des adds-ins directement à partir de ma Casio. D'ailleurs j'avais une Casio graph 35+e je j'ai transformer en graqh 75. Merci Sat, 25 Nov 2023 14:27:21 +0100 Doubler son espace de stockage sur ces calculatrices Casio ! https://www.planet-casio.com/Fr/forums/topic17467--.html Le titre est un peu faux :sry: Bonjour cher membre de Planet Casio ! Vous en avez marre de voir le popup : Stockage Plein ? Eh ben j'ai la solution pour vous ! Par exemple vous voulez télécharger Clonelab mais il prend pratiquement tout l'espace de stockage : 46,08/60 ko. Eh ben au lieu de le télécharger dans @MainMem télécharger le plutôt dans SAVE-F : https://cdn.discordapp.com/attachments/818220009440280616/1163164174944305263/Untitled.png?ex=653e940d&is=652c1f0d&hm=067a24be3e8d0acc7236df742c2adb66f04b8f5207a1d73ea40e3d7856f12107& Dessin fait avec souris :oops: Maintenant que vous avez télécharger le fichier comment y accéder ? Premièrement diriger dans le gestionnaire de fichier : https://cdn.discordapp.com/attachments/818220009440280616/1163162086566809631/Menu-MEM.jpg?ex=653e921b&is=652c1d1b&hm=fd55ed0c9e61db479cc26c76a6081b40dbfb50aa6dbdc849c4f9094e1bbcb2aa& Puis aller dans la mémoire de stockage : https://cdn.discordapp.com/attachments/818220009440280616/1163162086298365992/MEM-STO.jpg?ex=653e921b&is=652c1d1b&hm=cafc318ac061e2a3c699743403a45ecb701909dfd549e0b465d1933a0143b0ee& Et pour finir aller dans le dossier SAVE-F et sélectionner le jeux auquel vous voulez jouez en appuyant sur F1 et puis appuyer sur F2 : https://cdn.discordapp.com/attachments/818220009440280616/1163162086042509312/COPI-FICH.jpg?ex=653e921b&is=652c1d1b&hm=db7665c310d39877be20a7d91cd26b5d1180363537f6fff3929c78b93ffcabb4& Bonne séance de jeux :lol: . Avantage : - Puisque vous mettez les fichier dans la mémoire de stockage vous avez beaucoup plus de place (logique :mmm:) Inconvénient : - Vous devez transférer les fichiers vers la mémoire principale pour pouvoir y accéder PS : Si le jeux que vous avez installer et jouable seulement en C.Basic ne le mettez pas dans SAVE-F sinon vous pourrez pas y accédez. Sun, 15 Oct 2023 19:38:55 +0200 Faire fonctionner Screen Receiver https://www.planet-casio.com/Fr/forums/topic17415--.html Bonjour, lorsque j'essaye d'utiliser Screen Receiver avec ma calculatrice Graph35+E avec une Os de Graph75, ça m'écrit "Réglez les parametres de screen receiver" et je ne sais pas comment faire. Pouvez-vous m'aider ? Fri, 28 Jul 2023 16:50:24 +0200 Créer et utiliser des listes avec Sa FX 92+ SC https://www.planet-casio.com/Fr/forums/topic17276--.html Vous avez toujours rêvé de stocker des centaines de variables en 1 seule ? Et bien c'est possible grâce à cette technique ! Il est possible d'utiliser un nombre pour stocker chaque chiffre de 0 à 9. (Attention 0 peut faire bugguer; Limité à 99 chiffres (Ce serait plutôt 13) donc j'ai menti dans l'intro ...) Dans ces formules A est le nombre liste et B est l'index qui commence à 1 La formule pour extraire un chiffre est la suivante (surement optimisable) : (Ent((A/10^(B-1)))/10-Ent(A/10^(B)))*10 J'utilise le "découpage par virgule" dans cette formule. Attention : la lecture des chiffres va de la droite à la gauche. Pour ajouter un chiffre c'est simple (C est le chiffre à ajouter) : A = A*10 + C Par contre, pour ajouter un chiffre à un index précis, c'est très long ! : A=10^(B-1)*Ent(A/10^(B-1))*10+D+(A/10^(B-1)-Ent(A/10^B-1))) Tout cela peut permettre de faire des systèmes d'enregistrement comme dans un logiciel de dessin. En espérant que ça puisse être utile ! Wed, 01 Feb 2023 19:05:53 +0100 Conseils pour pixel art https://www.planet-casio.com/Fr/forums/topic17229--.html Bonjour,je sais qu'il n'y a pas de rapport avec les calculatrices,mais c'est pour mon jeu. En effet,je fais un jeu en ce moment. un jeu sur PC. Donc,je le fais en pixel art,et je ne suis pas très fort la dedans,du coup je pioche dans des bibliothèques mais c'est pas très perso. je voudrais faire des choses moi même,donc je vous demande des conseils,des techniques,des logiciels,autant pour ordi que pour mobile. pour info,je me suis déjà intéressée au Pixel Art. j'ai fait quelques dessins,que je vous joindrai si je les retrouvent. il y en a un dans le lot que j'ai pris sur internet que j'ai redessiner. Tue, 06 Dec 2022 14:59:33 +0100 Référence du Ascii art pour la FX 92 (+ SC) https://www.planet-casio.com/Fr/forums/topic17222--.html Pour commencer,cette nuit j'ai découvert des trucs de dingue des choses sympa pour ta calculatrice. Racer 1 et maintenant je vais vous présenter des trucs en ASCII art que j'ai trouvé. Je ne vois pas forcément l'utilité de tous,mais ils vous serviront certainement à quelques chose. N'hésitez pas à poster ici vos trucs création créatives. Je commence par ; (^(^( (^(^( ) (^(^(°) (00) ( )==( ) ( )( ) et un truc qui vous sera sûrement utile,une vision 3D 😀 ==--== ici ça a l'air pourri mais ça fait so' effet sur la calculatrice. vous allez voir ;) Thu, 01 Dec 2022 11:13:21 +0100 De nouveaux jeux pour FX 92+SC !! (Racer 1) https://www.planet-casio.com/Fr/forums/topic17221--.html Bonjour tout le monde,après avoir fait Minecraft sur la plate-forme ( Minecraft 92 ),je me suis arrêté un peu dans mes recherches (j'ai eu une autre calculatrice.). Mais maintenant,enfin cette nuit,j'ai eu un éclair de lucidité. Alors,pour vous prévenir,j'ai découvert des émojis,des trucs en ASCII Art (dont je ne sais pas quoi en faire) et...deux jeux. Alors,le premier,le plus simple,je l'ai baptisé "Racer 1" (c'était cette nuit,me critiquez pas :p ) . C'est un jeu de course qui se joue à trois,pour les règles originales,à deux pour pas se faire (...) et tout seul quand on se fait (...). Alors,avant de vous expliqué les règles,commençons par le jeu. Écrivez ceci ; x1 [ ( ]x1 [ ) ]x1 x14 [ ( ]x1 [ ) ]x1 [=]x1 [ ( ]x1 [ ) ]x1 Vous avez la voiture de base. youpiiii ! maintenant,positionnez votre curseur (il doit être en baton debout et pas sous les caractères. En mode Insertion quoi.) derrière le [ ( ] et spammez [ , ].Normalement,ceci fait avencer la voiture. Donc,vous devez spammez le plus vite possible (Faites attention...) pour être en dernier à la fin. Pour gagner,il suffit de dire,une fois arrivé à la fin "Racer 1;Defi terminé !" . Le coach vérifie ensuite. ⚠️Si vous jouez avec trop de violence,la calculatrice pourrait s'abîmer (touche qui s'envole,etc.) . Je ne m'en rendrais pas responsable.⚠️ ANNUAIRE DES VOITURES ( ( ) ) ( )=( ) / camion/calèche ( )==( ) /moto (00) ( )==( ) /voiture banal ( 0 ) ( )=( ) /voiture banal ( ) ( )=( ) /kart/voiture de course ( ( ( ) ( )=( ) /camion ( ( ) ( )=( ) /voiture de course Thu, 01 Dec 2022 10:35:03 +0100 Minecraft sur FX 92+ ? https://www.planet-casio.com/Fr/forums/topic17186--.html Salut,j'ai fait cette découverte cette nuit après avoir passé le week-end sur cette calculatrice,j'ai bien sur découvert bien d'autres chose,mais je ne vais pas vous en parler maintenant histoire de répertoriés. IL SUFFISAIT D'Y PENSER L'astuce,vous la connaissez tous. 🔵Par exemple,faites +[menu/config]+[1]+[4].(la base que vous devez avoir pour régler l'écran.) 🔵8×18/,×11/8×2/,×2/8×19 🔵Maintenant,tous a la fin,vous spamez la touche cos (ou autre) pour rapidement remplir l'écran et vous vous arrêtez une fois que votre curseur devient un gros carré. 🔵À présent,positionnez votre curseur sur la première virgule, 🔵Appuyez sur + et vous avancez a l'aide des flèches directionnel. 🔵Pour mettre un "bloc" appuyez sur la touche en question en prenant bien attention d'avoir appuyer sur +. 🔵Pour le détruire,positionnez vous sur le bloc en question en remplacez le en tapant sur la touche en question. 🔸(glossaire en bas de la page) 🔺 8=mur de terre,de briques,bref. ,=sol en tous genres (herbe,fer,bois,etc.). 1=vitre/parquet 9=ennemi 0=porte 4=chaise,toilettes etc (×)=pouf (××)=lit (×××)=grand lit (×××) (×××)=grand lit deux places,etc. 🟠-Glossaire des problèmes a résoudre- -La map (je n'en ai pas encore fait :E )❌ -heu... je sèche. 🟣-Glossaire des problèmes régler- -Les combats;Avancer vous sur l'ennemi en question et remplacez le par un bloc comme une virgule;✅ -La mémorisation de map (partielle:écrivez votre map et faites .vous pouvez appuyer sur ,et faire [⬅️] ou [➡️] pour la retrouver à la fin où au début.) 🟡🌐-Glossaire des liens- voici quelques liens pour vous permettre de mieux comprendre votre FX 92+. Quelques programmes simples Un autre jeu Une recherche toute simple 🔍 Test de cette même calto c'est tous pour le moment ! Hé,cest deja pas mal,non ? PS:Je ne m'intéresse pas au jeu Minecraft,mais il a le mérite d'attirer des joueurs (notamment sur calculatrice ) et il y a beaucoup de demandes. j'ai donc trouvé ça,je vous le partage. Bonne journée. -AcrosCasio- Ps: si sa vous intéresse,voici le lien de mon journal dédiée à la FX 92+ Ici je prévois aussi un petit PDF avec des cartes et tout. Mon, 17 Oct 2022 07:56:31 +0200 Casio Compiler Explorer Setup Tutorial! https://www.planet-casio.com/Fr/forums/topic17143--.html Today I will show you how to run a local instance of compiler explorer (https://godbolt.org) with a compiler option for Casio calculators! Please note I have only tried this on Linux although it probably also works on MacOS. https://cdn.discordapp.com/attachments/743577895494221894/1015984694606696498/Casio_Compiler_Explorer.png #Step 0: Install basic build tools for your operating system On Linux it is often “build-essential” if you are on a debian based distro or “base-devel” if you are on an Arch based distro. On MacOS it is “xcode-select --install”. If that doesn’t work you may need to install XCode from the AppStore first (please note I am not a Mac expert). #Step 1: Install nodejs and npm If you already have them installed make sure you are using node version 16 LTS release and skip to step 2. It is not recommended to install nodejs and npm from your Linux distro’s repository! You should install them with a version manager like nvm or fnm. I will show you how to use fnm which is written in rust. If you are using MacOS you should install fnm with homebrew. Then go to (https://github.com/Schniz/fnm#shell-setup) and use the instructions for your shell and go to step 2. If you are unsure which one you have, type "echo $0" into the terminal and it will tell you. To install nodejs and npm type “fnm install 16” followed by “fnm use 16”. If you are on Linux do not install rustup or cargo from your Linux distro’s repository! Instead, go to the rust website (https://www.rust-lang.org/tools/install) and use the script to install rustup. Press 1 and hit enter to proceed with the default installation. Once it is finished you must close and reopen your terminal. Now type “cargo install fnm”. Once it is installed go to (https://github.com/Schniz/fnm#shell-setup) and use the instructions for your shell and go to step 2. If you are unsure which one you have, type "echo $0" into the terminal and it will tell you. To install nodejs and npm type “fnm install 16” followed by “fnm use 16”. #Step 2: Install Compiler Explorer Go to (https://github.com/compiler-explorer/compiler-explorer) and clone the repository to the directory of your choice. Then go into the directory and type “make”. If all has gone according to plan after a while (it can take quite some time) it should compile and you can access compiler explorer at http://localhost:10240. For now, just Ctrl+C to stop it and proceed to step 3. #Step 3: Install the Casio calculator compiler and build tools Go to (https://gitea.planet-casio.com/Lephenixnoir/GiteaPC) and install giteapc. If you are using MacOS make sure to also look at (https://www.planet-casio.com/Fr/forums/topic16614-8-giteapc-installer-et-mettre-a-jour-automatiquement-des-projets-gitea.html#186763). You may need to restart your terminal after you are done installing giteapc. Now we need to install gint and the compiler. Type “giteapc install Lephenixnoir/gint”. Please note that this will compile a lot of stuff including gcc and binutils so it will take quite some time. After that restart your terminal once more. Once that is done continue to step 4. #Step 4: Configure compiler explorer to add an option for a casio compiler If you want to download the config files instead I will attach them (https://gitea.planet-casio.com/Atrt7/Compiler-Explorer-Casio-Config). For additional information read (https://github.com/compiler-explorer/compiler-explorer/blob/main/docs/AddingACompiler.md). Please note in the provided config files you must put your username in the fields that require them, search for username and you fill find two in each config file. In the directory for compiler explorer go into the “etc” directory and then go into the “config” directory. Copy the file “c.defaults.properties” and paste it into the same directory with the name “c.local.properties”. Open “c.local.properties” and change the second line from “compilers=:&gcc:&clang” to “compilers=:&gcc:&clang:&casio”. By doing this we will add a Casio compiler group. Go to the bottom of the file and copy the following after an empty line. group.casio.compilers=ccasiodefault compiler.ccasiodefault.exe=/home/ChangeToYourUsername/.local/bin/sh-elf-gcc compiler.ccasiodefault.supportsExecute=false compiler.ccasiodefault.needsMulti=false compiler.ccasiodefault.objdumper=/home/ChangeToYourUsername/.local/bin/sh-elf-objdump compiler.ccasiodefault.name=casio default Make sure you put your username where ChangeToYourUsername is, there are two spots. Also where it says “defaultCompiler=gdefault” change "gdefault" to “ccasiodefault”. Now we must do the same for c++. Copy “c++.defaults.properties” and name the copy “c++.local.properties”. Open “c++.local.properties” and change the second line from “compilers=:&gcc:&clang” to “compilers=:&gcc:&clang:&casio”. You will notice a block of continuous lines that starts with group.gcc.compilers=g44:g45:g46:g47:g48:g5:g6:g7:g8:g9:g10:g11:gdefault and ends with compiler.gdefault.name=g++ default After this continuous block of configurations add a blank line followed by group.casio.compilers=cppcasiodefault compiler.cppcasiodefault.exe=/home/ChangeToYourUsername/.local/bin/sh-elf-g++ compiler.cppcasiodefault.supportsExecute=false compiler.cppcasiodefault.needsMulti=false compiler.cppcasiodefault.objdumper=/home/ChangeToYourUsername/.local/bin/sh-elf-objdump compiler.cppcasiodefault.name=casioc++ default Please note that you must put your username where ChangeToYourUsername is, there are two spots. Now go to the bottom of the file. Finally around the bottom of the file there should be a line that says “defaultCompiler=gdefault”. Change “gdefault” to “cppcasiodefault”. #Step 5 Now everything should be set up, you can go to the top of the compiler explorer directory and type “make” again and everything should work. Because we don’t have a fully set up cmake project in compiler explorer, you must put “#define FX9860G” or “#define FXCG50” for the respective platform you are using if you want to use gint headers in compiler explorer. Don’t put that #define in your actual project code however, only use it for compiler explorer. Also if you want many more languages and architectures for your local compiler explorer instance read (https://github.com/compiler-explorer/infra). Note that these are the ones you find on godbolt not anything related to casio calculators. If you get a makefile error after running “make” try “make clean” and then “make” again. Please let me know if everything works and if there are any mistakes or any improvements I can make. I hope my work proves helpful to you all! Sun, 04 Sep 2022 16:08:50 +0200 TechTuto #01 - Utiliser la STL sur Casio - Partie 1 - Intro / Installation https://www.planet-casio.com/Fr/forums/topic17097--.html Soyez les bienvenus dans cette petite série d'articles que nous pourrions qualifier de "techniques", dans le sens où le but est de proposer des éléments de résolution de problèmes concrets et pratiques qui apparaissent souvent durant la création d'un programme. Le but n'est clairement pas de proposer des tutoriels exhaustifs sur un sujet, il en existe certainement des milliers d'autres soit plus complets, soit plus détaillés et donc tout simplement meilleurs sur Internet, mais bien de préciser ce qu'il est possible de faire sur nos belles machines Casio avec les outils disponibles. Nous allons donc donner dans le tutoriel applicatif sur nos machines favorites ;) Dans la philosophie, il s'agit avant tout d'un échange, tout commentaire (constructif bien entendu) et toute expérience (bonne ou mauvaise) sera intéressante à partager via les commentaires/messages. Alors n'hésitez pas à participer. Pour commencer ce que j'espère être une série au moyen/long terme, je vous propose de regarder d'un peu plus près une librairie très intéressante : la Standard Template Library ou STL. La STL, c'est quoi au juste ? La Standard Template Library (on écrira STL par la suite, c'est nettement plus court :E ) est une bibliothèque destinée au langage C++ et normalisée par l'ISO à travers le document ISO/CEI 14882. Elle est mise en œuvre à l'aide des templates (ou autrement nommés modèles/patrons en français). Cette bibliothèque offre les fonctionnalités (principales) suivantes : - un ensemble de classes conteneurs (containers), telles que les vecteurs (vector), les tableaux associatifs (map), les listes doublement chaînées (list), etc. qui peuvent être utilisées pour contenir n'importe quel type de données à condition que le type concerné supporte certaines opérations telle que la copie et l'assignation. - une abstraction des pointeurs : les itérateurs (iterator), qui fournissent un moyen simple et élégant de parcourir des séquences d'objets dans les conteneurs sus-cités et qui permettent la description d'algorithmes indépendamment de toute structure de données. - des algorithmes génériques tels que des algorithmes d'insertion/suppression, recherche et tri dans les conteneurs. - une classe string permettant de gérer efficacement et de manière sûre les chaînes de caractères. - et diverses autres classes ou méthodes qui rendent la vie du programmeur C++ nettement plus facile :D Cette définition est assez large, mais elle contient des points néanmoins très très importants : - il s'agit d'une librairie C++, pas C. Elle n'est pas utilisable sans avoir accès à un compilateur C++, qui fort heureusement est disponible pour nos machines Casio (ce bon vieux GCC dans sa version SH). En particulier la définition des classes reposant sur l'usage de templates rend nécessaire le langage C++. - il s'agit d'une librairie normalisée (au sens de correspondant à une norme, i.e. standardisée), donc compatible sur diverses architectures, permettant ainsi la retranscription aisée d'un programme sur une autre cible, en minimisant les parties à ré-écrire. OK, OK, mais concrètement on peut faire quoi avec cette STL ? Imaginons un instant que vous vouliez écrire un programme dont les données seront contenues dans un tableau, mais dont la taille vous est par avance inconnue (par exemple reposant sur les entrées au bon vouloir d'un utilisateur). Il existe classiquement la méthode de l’allocation dynamique via malloc, que les programmeurs avec un peu d’expérience connaissent bien. Mais cela nécessite l’écriture de routines spécifiques pour gérer un nombre de cas usuels (insertion d’un nouvel éléments dans le tableau, suppression d’un élément, …). Les plus courageux peuvent se lancer dans l'écriture de fonction permettant d'opérer dans un tableau dynamiquement alloué ou dans une liste chaînée. Bien entendu tout cela est faisable, mais au prix d’un effort conséquent de programmation. Disons simplement que c'est sympa à faire une fois pour comprendre, mais devient vite pénible si on considère que ce cas revient dans de très nombreux programmes. L'idéal serait d'avoir des méthodes génériques permettant d'opérer de la même manière quel que soit le contenu à stocker. En gros, séparer le contenant du contenu, comme une bouteille en verre sait aussi bien contenir du lait que de l'eau ou même du sable ... Et bien soyez heureux, nous allons justement voir comment arriver à ce résultat dans vos programmes. En effet, la STL offre un ensemble de conteneurs qui permettent de stocker divers types de données indépendamment de leur type. Par exemple, si vous voulez stocker des données de type uint32_t, ou de type char* ou bien encore de type tartampion, la STL vous offre un certain nombre de conteneurs génériques opérationnels de manière totalement transparente (par exemple une liste chainée list ou bien un tableau dynamique vector pourraient être de bons candidats). Ainsi si on désire stocker dans une liste doublement chaînée (pas de panique, on expliquera bientôt) des entiers non signés sur 16bit, rien de plus simple, il suffit de déclarer : std::list<uint16_t> maListe;pour ensuite remplir la liste, il suffit d’ajouter des éléments à la fin de cette dernière : maListe.push_back( 10 ); maListe.push_back( 45 ); maListe.push_back( 60 );ce qui en langage décodé revient à créer une liste d'entiers positifs sur 16bits dans une liste portant le doux nom de maListe (je sais c'est original et recherché comme nom ;) ). Ensuite on ajoute à cette liste les entiers 45 puis 60. De même pour stocker des pointeurs vers des objets de type Point2D, là encore très facile : class Point2D { public: float x; float y; Point2D( float xn, float yn ) {x=xn; y=yn;}; ~Point2D( ); }; std::vector<Point2D *> maListeDePoint2D;l’insertion est dans ce cas juste un peu plus subtile, car il faut créer les instances d’objets dont on désire garder trace du pointeur dans notre liste : Point2D *monPoint = new Point2D( 1.0f, 2.0f ); maListeDePoint2D.push_back( monPoint );cette fois on stocke dans un tableau dynamique (vector, mais on y reviendra là encore par la suite) les adresses des pointeurs de type Point2D instanciés par l'opérateur new. Donc vous l’aurez compris, le but de la STL est d’offrir tout un éventail de classes permettant de gagner énormément de temps lors de la réalisation d’un programme en C++. Elle permet en effet de ne pas avoir à coder des pans entiers de programmes simplement destinés à manipuler des types de données en offrant des classes génériques, mais surtout ces classes sont très largement utilisées par la communauté depuis de nombreuses années et les bugs ont été très largement corrigés (les premières pierres de la STL ayant été posées à la fin des années 70). Le principal apport de la STL est d'offrir un code C++ normalisé pour certains objets classiques, garantissant ainsi un code source lisible, facilement réutilisable et maintenable. Comment on se sert de la STL sur Casio ? Nous partirons sur le principe que vous codez via gint, l’implémentation de la STL étant basée sur gint/fxSDK/fxlibc et le compilateur GCC adapté à l’architecture SH. Sur une installation fonctionnelle de gint/fxSDK, il suffit alors de passer par giteapc pour ajouter la librairie µSTL2.3 giteapc install Slyvtt/uSTL2_3 µSTL est une implémentation légère de la STL destinée en priorité aux architectures dites embarquées et n’offrant pas une puissance de calcul démesurée (typiquement nos Casio correspondent bien à cette définition). Cette version légère reprend néanmoins le standard de la STL et offre les fonctions les plus importantes de cette dernière. Je vous invite éventuellement à regarder le fil du développement de cette librairie ici : µSTL pour Casio Lors de la création d’un nouveau projet avec fxSDK fxsdk new monProjet il vous faudra procéder à quelques ajustements dans le projet afin de vous mettre en ordre de bataille pour compiler en C++ et pour préciser le linkage avec la librairie STL. Pour ce faire, deux étapes sont à réaliser : 1/ le fichier main.c situé dans le répertoire src de votre projet doit être renommé en main.cc afin de faire comprendre au compilateur GCC que le code source est bien en C++ et pas en C (note: a priori ceci est inutile si on applique bien le point 2/, mais reste néanmoins recommandé afin d'éviter tout problème). 2/ il faut indiquer les options de compilation et de linkage dans le fichier CMakeLists.txt situé à la racine de votre projet et le mettre en conformité avec votre changement fait en 1/ : a) il faut changer les lignes set(SOURCES src/main.c # ... ) par set(SOURCES src/main.cc # ... ) afin de refléter le changement d’extension du fichier main vu en 1/. b) il faut changer la ligne target_compile_options(myaddin PRIVATE -Wall -Wextra -Os) par target_compile_options(myaddin PRIVATE -Wall -Wextra -Os -c -std=c++11 -fno-rtti -fno-use-cxa-atexit) ceci permet de dire au compilateur quel standard du langage il doit utiliser (ici C++ version du standard 2011) ainsi que diverses options nécessaires pour avoir une STL fonctionnelle. c) enfin, il faut changer la ligne target_link_libraries(myaddin Gint::Gint) par target_link_libraries(myaddin Gint::Gint -lustl -lc) afin de correctement linker votre programme avec la librairie µSTL compilée pour votre toolchain. A ce stade, il devient possible d'utiliser la STL dans un projet pour Casio (Graph 35 ou 90). Mon premier exemple utilisant la STL sur Casio Nous allons écrire notre tout premier programme utilisant la STL afin de vérifier que tout fonctionne bien, ce qui nous permettra de clore ce premier article avec une installation fonctionnelle. Nous entrerons plus en avant dans l'utilisation de la STL dans les articles à venir. Ce petit programme ne sera donc pas explicité dans le détail, mais permettra seulement de vérifier que votre installation fonctionne correctement, ce qui constituera le point de départ pour les articles suivants (nous considérerons donc que cette étape est franchie et ne reviendrons donc pas sur cette phase d'installation). Notre premier programme consiste donc en un simple remplissage d'un tableau dynamique de type vector, et en son affichage afin de vérifier que tout fonctionne de manière adéquate (compilation, linkage et exécution sur les machines Graph 35/Graph 90). Ouvrons donc le fichier source main.cc de notre projet et copions le texte du programme suivant : #include <gint/display.h> #include <gint/keyboard.h> #include <vector> #define std ustl // A garder pour pouvoir faire des appels via std:: int main(void) { dclear(C_WHITE); dtext(1, 1, C_BLACK, "uSTL vector test."); std::vector<int> v; v.push_back( 10 ); v.push_back( 20 ); auto it = v.emplace( v.begin(), -10 ); v.emplace( it+1, 0 ); for( unsigned int k=0; k<v.size(); k++) dprint( 1, 10+k*10, C_BLACK, "v[%d] = %d", k, v ); dupdate(); getkey(); return 1; } Le fichier CMakeLists.txt complet doit ressembler au minimum à cela: cmake_minimum_required(VERSION 3.15) project(MyAddin) include(GenerateG1A) include(GenerateG3A) include(Fxconv) find_package(Gint 2.4 REQUIRED) set(SOURCES src/main.cc # ... ) # Shared assets, fx-9860G-only assets and fx-CG-50-only assets set(ASSETS # ... ) set(ASSETS_fx assets-fx/example.png # ... ) set(ASSETS_cg assets-cg/example.png # ... ) fxconv_declare_assets(${ASSETS} ${ASSETS_fx} ${ASSETS_cg} WITH_METADATA) add_executable(myaddin ${SOURCES} ${ASSETS} ${ASSETS_${FXSDK_PLATFORM}}) target_compile_options(myaddin PRIVATE -Wall -Wextra -Os -c -std=c++11 -fno-rtti -fno-use-cxa-atexit) target_link_libraries(myaddin Gint::Gint -lustl -lc) if("${FXSDK_PLATFORM_LONG}" STREQUAL fx9860G) generate_g1a(TARGET myaddin OUTPUT "Tuto001.g1a" NAME "STLTuto001" ICON assets-fx/icon.png) elseif("${FXSDK_PLATFORM_LONG}" STREQUAL fxCG50) generate_g3a(TARGET myaddin OUTPUT "Tuto001.g3a" NAME "STLTuto001" ICONS assets-cg/icon-uns.png assets-cg/icon-sel.png) endif() Ce simple code peut être compilé via : fxsdk build-fx pour les monochromes Graph 35 (fx9860G) avec ce résultat visuellement lors de l'exécution sur la machine uSTL_Tuto001_G35.png ou fxsdk build-cg pour la Graph 90+E (fxCG 10/20/50) avec ce résultat visuellement lors de l'exécution sur la machine uSTL_Tuto001_G90.png Petite remarque en passant: n'ayant que des machines en SH4 (Graph 90+E, Graph 35+E II et fxCG-20), je n'ai pas pu tester sur les anciens modèles monochrome en SH3. Donc mea culpa si tout ne fonctionne pas très bien. Une recompilation de la librairie STL est certainement à prévoir sur cette architecture :oops: . Logiquement la compilation devrait se passer sans problème. Si tel n'est pas le cas, laissez un commentaire afin que le SAV puisse vous aider à atteindre cette étape importante pour la suite. Il vous reste donc à copier le fichier g1a ou le g3a à la racine de votre machine selon son type et à exécuter l'Addin correspondant. Vous devriez obtenir le résultat présenté sur les captures d'écran précédentes. Si vous arrivez à ce point, bravo à vous 8-) , vous avez désormais une installation complètement fonctionnelle de la STL dans votre toolchain de développement pour Casio. Vous pourrez donc profiter des nombreux avantages offerts par cette libraire. La suite ... Dans les articles à venir, nous ferons un tour rapide des différents conteneurs disponibles dans la STL afin de vous en présenter les avantages et inconvénients (et les points à considérer pour choisir le meilleur candidat pour telle ou telle application) ainsi que les principales méthodes associées. En attendant, n'hésitez pas à faire vos commentaires et/ou à faire remonter vos questions/avis ... A très bientôt pour les prochains épisodes. Liens utiles Si vous voulez trouver plus de documentation sur la STL, la µSTL ainsi que sur leur utilisation, voici quelques liens utiles pour aller plus loin : Site de la µSTL par l'auteur de la librairie Mike Sharov. Le site CPlusPLus et en particulier le chapitre sur les containers. Le site CppReference et là encore le chapitre sur les containers. Pour ces deux derniers sites, n'hésitez pas à les mettre dans vos favoris, si vous codez en C++, ils constituent une mine d'or et permettent de trouver plein infos sur le C/C++. Thu, 09 Jun 2022 18:41:23 +0200