Quelles fonctions en C.BASIC ?
Posté le 04/03/2019 15:09
Bonjour à tous !
Vous le savez tous : le projet C.BASIC de Sentaro21 est plus que jamais important et indispensable pour tous les programmeurs désireux de faire des programmes simples mais puissant avec une interface graphique complètes. Mais aussi une interface utilisateur souple et agréable... C.BASIC s'est imposé d'abord comme un projet pionnier en la matière puis s'est imposé par ses fonctionnalités et sa souplesse.
Notez qu'un bon niveau en BASIC est indispensable : il n'y ici aucun cours à proprement parler : juste des explications sur les apports du C.BASIC au BASIC habituel
Ce tuto n'est pas fini. Des captures d'écrans seront rajouter ainsi que des crochets autour des touches et des changements de police pour les noms des fonctions. Merci de votre compréhension
Ayant entendu parler du projet à plusieurs reprise, j'ai décider de l'essayer, d'abord sur ma Graph 35++ puis sur ma Graph 90+E. Il y a en effet de nombreux menu et sous menu avec des fonctions, inconnues pour beaucoup, pour certaines autres on peut deviner... Le but de ce tuto et de vous faire découvrir (le plus ludiquement possible) ce qui n'est rien d'autre qu'un langage alternatif, au même titre que le Malical ou le Lua fx.
J'essayerais de rester logique dans mon développement mais je consigne ici mes découvertes au fur et à mesure que je découvre cette
terra incognita !
Dimanche 3 mars 2019 :
J'ai entendu parler de cette terre lointaine, cet eldorado de la programmation on calc. Mais ce pays est loin... Je me suis donc acheté une bonne carte, et j'y suis allé.
Je prends le bateau et, voyageant de nuit, j'arriverais demain...
Lundi 4 mars 2019 :
Le trajet fut court, recherche,
téléchargement puis première rencontre avec cette nouvelle île pleine de secrets. Très vite je trouve mes première marques, sur le sable de la plage, le menu Options me tends les bras. Via [Shift]
[Menu], j'accède à différents paramètres, comme réglages des couleurs et de la police.
Je me lance dans les terres, avec une aide sommaire (je ne parle pas la langue indigène
) j'arrive à créer un programme via [F3], je renseigne un nom et c'est partit !! L'interface customisé me tend les bras, le soleil m'aveugle... Avançant prudemment, j'essaye de voir les menus différents du BASIC mais très vite je me perd dans cette forêt dense...
Je note donc au fur et à mesure :
- [OPTN] : ne change presque pas, toutes les forêts se ressemblent mais ce coin-là renvoie un sentiment de déjà-vu. A part le [F5] : Extend qui donne accès à de nouvelles fonctionnalités inconnues, peut-être trouverais-je la solution un jour...
- Dans [VARS], ouf ! je retrouve mon bouton
Str habituel ! lui non plus n'a pas bougé !! Le même bouton
Extend ( [F3] ) est là... Apparemment, d'après mes connaissances en C, j'identifie
Ticks comme étant un système pour mesurer du temps... Une gestion de la RTC serait-elle possible ? Point à retenir... D'autre fonctionnalité sont explicite :
BatteryStatus mais sans autres indices...
Je reviens sur mes pas...
- [SHIFT]
[VARS] (prgm) : Je m'enfonce toujours plus loin dans la forêt. Je suis complétement perdu... Je tombe sur un petit village très bucolique. Plusieurs maisons très simple sont là, un petit chemin de terre, et quelques embranchements. Je trouve une habitation à l'allure plus officielle, une sorte de poste qui gère les communications. Avec d'autres villages peut être... ? Intrigué, je rentre [F6]
[F4], et je re-trouve les fonctions bien connues mais d'autres sont là aussi. Le Basic reste un langage de haut niveau et je trouve des fonctions
IsExist,
Load,
Save ... Des formes de gestion de dossier ? Je ne m'avance pas plus pour l'instant, j'ai encore beaucoup à voir...
Je trouve la mairie (Com), je rentre et note la présence d'un
Switch dans le menu des commandes avec les
case et les
breaks ! Fini les
if à la suite !
Dans une autre maison, je trouve de nouvelles fonctions :
Local,
Gosub,... aucune indication ne pemet de savoir comment s'en servir, mais en découvrant mieux l'île, je trouverais peut-être une solution...
Un gamin m'aide, à grand renfort de gestes, et m'explique comment sortir pour rejoindre la plage. Il faut appuyer sur [Exit] jusqu'à ce qu'un pop-up apparaisse. Presser [EXE] puis [F1], puis [EXIT] plusieurs fois, jusqu'au sélecteur de fichier et enfin [MENU]. Je me trouve un endroit confortable et familier au sud de l'île.
J'essaierais de retrouver le village aperçu demain et de poursuivre mon exploration...
Mardi 5 mars 2019 :
Je me réveille avec le soleil, le fond de l'air est doux et une légère brise souffle de la mer. Je me retourne vers la forêt, au loin il me semble y avoir des montagnes... Je ne suis pas au bout de mes surprises... Je prend mon courage à deux mains et je me jette dans cet océan de verdure... Je retrouve assez facilement le village grâce à [SHIFT]
[VARS] (prgm) mais je décide de ne pas m'arrêter pour l'instant. Je poursuit mon chemin, contournant les petites maisons faites de bois. Je continue de m'enfoncer dans la forêt comme dans un état second, mon instinct me guide... Je ferme les yeux... Je me prend un arbre (fermer les yeux était pas une bonne idée...
) Je fais quelques pas en arrière pour mieux voir cet arbre fougueux qui m'a foncé dessus sans prévenir, et je m'aperçois que c'est une sorte de grande statue... Des runes sont gravées sur la base, puis d'autres sur le tronçons au-dessus, et ce sur 5 étages. L'ensemble doit mesurer environ 3 mètres. Je me félicite de vivre dans une communauté ouverte où j'ai put apprendre les bases du Futarque et je me lance dans la résolution de ce problème... J'arrive, après quelques heures (le Futarque c'est pas très naturel comme langage
), à former le mot
Isexit(. Rien ne bouge, les oiseaux continuent de voleter en chantant. Mais dans ma tête un vide se fait et une voix caverneuse et grave et lente se fait entendre :
— Bonnjour jeune aventurier... Un jour passé, depuis longtemps... La communication avec l'extérieur a lonngtemps été un privilège imposssible au commun des mortells... L'incantation
Isexist( est désuète aujourd'hui... Jadis, elle servait à tester si un dossier externe existait ou non...
Demandant la syntaxe à suivre, la voix poursuivit :
— La syntaxe... ? La voici, mais... attention : n'utilise pas cette formule sans réfléchir...
IsExist(nom_du_fichier.*) la fonction renvoie un booléen...
La voix grave cessa de résonner dans ma tête et les 5 anneau de la statue se mélangèrent... Après quelques autres essais infructueux je suis arrivé à demander d'autre fonction, sur la communication avec l'extérieur de l'île :
Save et
Load :
— Encore, toi… !? Oui, je connais
Save cette commande permet, d'envoyer une liste ou une matrice dans un fichier externe... Regarde, et fait comme moi :
Save Liste 1, "nom_de_fichier.txt" As-tu compris jeune programmeur ?
Je répondis que oui, en demandant la suite
— La suite... ? Quelle suite... ? Ah oui :
Load eh, bien que veux tu savoir ? C'est la même chose sais-tu ? Tiens... regarde :
Load "nom_du_fichier.txt"
Mais, mais mais maismiasmiasmias c'est génial !!
— Eh oui... Que veux-tu, il fut un temps où tous le monde le savais ça...
Ah... Et où puis-je trouver de telles fonctions ?
— Où... ? Dans le village Programme, au sud, il y a la maison de la Communication (I/O) entre et regarde bien au fond...
Merci merci !! C'est super ça, je vais tester cela de suite...
— Attend ! Il reste une fonction et une astuce à te communiquer... Dans une autre maison du même village, qui s'appelle Contrôle, il existe la fonction
Gosub qui marche comme un
Goto mais qui accepte les mots... Elle permet également autre chose... mais ma mémoire n'est pas éternelle... L'astuce réside dans la touche [MENU], elle donne accès à un historique des fonctions utilisées... D'autres indices dans les terres et les montagnes t'attendent jeune programmeur. Bon courage...
Merci !
Après cet échange fructueux, je décide de retourner au village. Le soleil est haut maintenant, et la température est plus que bonne. [SHIFT]
[VARS] (prgm), je rentre dans la maison des Communications ( [F6]
[F4] (I/O) ) je retrouve bien les 4 fonctions j'essaye d'en utiliser une mais une dame m'avertit :
— Holà ! Jeune homme, que faites-vous ? Ces fonctions coûtent 4 octets, il faut payer d'abord, et sans compter le contenu du dossier...
Je lui répond que j'ai de quoi payer.
Après quelques essais, je ressort et je fait dans la maison des Contrôle, [F2] Et je place un Gosub :
Gosub TEST quelques lignes plus loin je met un
Lbl TEST en mettant des affectations de variables, juste avant et entre les deux, je m'aperçois, que
Gosub permet de sauter des instructions !
Pressant la touche [MENU], j'obtient bien un historique des commande tapées !!
Et dire que tant de choses me tendent les bras, tant de choses à voir, à découvrir !! Je me trouve une chambre dans un auberge un peu à l'écart.
Mercredi 6 mars 2019 :
La journée s'annonce courte : une éclipse est annoncé et tous le monde veut la voir. Le Soleil sera alors aligné avec Planète Casio et TI Planet, une conjonction rare et impressionnante. Bref, je n'ai donc que peu de temps pour voir de nouvelles choses. Je décide donc de re-voir des choses déjà vues... Les fonctions
TIME et
DATE cachées dans le menu [VARS]
[F3] (Extend) Ces fonctions permettent de connaitre l'heure et la date (c'est de circonstance
) Mais comment ça marche ai-je demandé. La personne qui m'a répondu est un vieux ce qui donne un dialogue comme ça :
— Beehh... ça dôôônne la date... Et pis l'heueure ôossi...
Et, oui, mais comment on s'en sert ?...
— Quoi !? S'en serrviir... ? Mais cees fonctions ne sont pas faites pour cela, c'est de l'escla... clavagisme...
Attendez, quoi ? Je ne peux pas me servir de fonctions ?
— Et oui jeueune homme... Ne vous a-t-on rien dit ?... Ici, toutes les fonctions étaient libres avant... C'était notre jeu étant enfant : poursuivre les fonctions dans la forêt... Ce n'est que pluus tard... où l'on a compris leurs intérêt et depuis... elle sont traquées...
Ah... Et pout revenir à ma fonction
DATE ?
— Rhôô... mais tu me fais... avec ta fonction à la ... ! Je te parle Histoire et tu me parle esclavagisme ! Jeune sot ! Savoir une syntaxe ne sert à rien... Ce qu'il te faut apprendre c'est comment elles fonctionnent... Les fonctions, à l'origine, était un peuple pacifique à part... Dotés de facultés elles ont été chassées pour leurs dons divers : communication, test, boucle,... Je pense que les fonctions à l'état sauvage n'existe plus, même si il est permis d'espérer que quelqu'une subsiste dans les forêts... Mais si vous voulez mon avis, elles ont dues partir vers les Montagnes... La chaîne est Syscall est redoutable et très peu y vont...
Vous pouvez m'en dire plus sur les fonctions ? A quoi cela ressemble une fonction ?
— Ouui... On dirait, une...enfin un... Une sorte d'esprit, ni mauvais, ni bien,... Oui, c'est cela un esprit qui dérive. Les fonctions mangent parfois et rejètent alors des résultat plus ou moins interréssant... Par exemple, la fonction
DATE, on lui a fait mangé des trucs, et elle à donné la date de la prochaine éclipse : aujourd'hui.
Ahh... Mais comment on fait manger des fonctions si ce sont des esprits ?
— Eh bien... Je ne sais pas... Pour avoir déjà vu la chose, je dirais que l'élément mangé est dissous dans la fonction... Pour la fonction
DATE ou
TIME ce sont des fonctions cannibales : elles mangent d'autres fonctions plus petite et moins puissantes : des
Str comme :
"2019/03/06"→Str 1
Str 1→DATE
Merci beaucoup grand-père !!
La lumière commençait à se faire rare, j'ai donc décidé de regagner mon auberge, des rêves pleins la tête : cette chaîne de montagne au nord m'intrigue, mais avant d'y aller, il me reste des choses à découvrir par ici. Prochaine étape : la maison de la Communication... Je me demande ce que mange les fonctions de communications...
Dimanche 17 mars 2019 :
Après quelques jours de repos bien mérité (eh oui, ça court vite les fonctions
). Ça court vite mais je court plus vite quand même
J'ai réussis à attraper une fonction utile et simple :
Save ce petit monstre est très gourmand : il mange une matrice et une chaîne de caractère !
Comme ces petits copains de la maison de la communication,
Load et
Delete, ces fonctions servent à envoyer des données, elle mangent toutes plus ou moins de la même manières, mais ont des sorties différentes ! Au fil de mes observations de ces petites bêtes, je suis arrivé à ces conclusions :
•
Save "File.txt", Mat A envoie la matrice A dans le fichier " File.txt", si le fichier n'existe pas, il est créé automatiquement.
•
Load("File.txt")→Mat A récupère le contenu du fichier "File.txt" et le met dans la matrice A, si le fichier n'existe pas où n'est pas dans le même sous dossier que la fonction, celle ci renvoie une erreur.
•
Delete "File.txt"supprime le fichier "File.txt"
J'ai décidé de laisser ces fonctions tranquilles pour l'instant... Ma prochaine étape : l'affichage de dessins à l'écran !
Citer : Posté le 04/03/2019 16:04 | #
C'est une super idée, ca !
J'apprécie !
Si tu veux, je peux expliquer deux ou trois astuces que mon projet de Pokémon m'a appris !
Dijkstra - The Witcher
Citer : Posté le 04/03/2019 18:08 | #
Ça m'aiderait beaucoup... J'avoue que l'île est grande... Je m'y perd un peu
Citer : Posté le 04/03/2019 18:35 | #
UN TOTEM DANS LA FORET : jeune aventurier, écoute mon histoire : sache que l'incantation IsExist(nom_du_fichier.*) permet de connaître l'existence ou la non-existence d'un fichier...
SHADOW ( prenant des notes ) : je vois ! de la gestion de mémoire ! la quête avance !
LE TOTEM : Laisse moi finir ! *hem* sache aussi, programmeur, que Load permet d'invoquer les esprits du fichier :
(le totem prend une voix grave) : " Load("nom_du_fichier.bin") ".
La fonction Save, quant à elle, permet d'envoyer le contenu d'une liste ou d'une matrice d'ans l'au-delà !
( re-voix grave ) : " Save List 1,"nom_du_fichier_a_creer") "
SHADOW : incroyable ! je vois d'ici un système de sauvergade ! et d'initialisation de listes ! de matrices ! des échanges de sauvega...
LE TOTEM : Du calme, fougueux développeur ! Je vais aussi t'enseigner un ancien arcane, que seuls de rares initiés arrivent à prononcer :
Gosub W // n'importe quel char
Lbl W
A * 2 -> A
Return
SHADOW : je n'arriverais jamais à le dire avec l'accent, mais je pense avoir compris ! Dites-moi, connaîtriez-vous aussi Local ?
LE TOTEM : J'ai ouï dire que cette incantation permet de déclarer des variables locales, comme dans le language des anciens, je veux parler du C...
Dijkstra - The Witcher
Citer : Posté le 04/03/2019 19:40 | #
Ouah Merci Grand Totem je te découvre demain promis
Mais, du coup Totem, quelles différences entre Gosub et goto ?
Citer : Posté le 04/03/2019 19:45 | #
GoSub c'est un appel de routine.
Au passage j'ai récemment traduit la documentation de C.Basic vers le français... tout y est traité
Citer : Posté le 04/03/2019 19:47 | #
Je pense que Gosub permet d'aller à un Label qui n'est pas encore déclaré, contrairement à Goto
Citer : Posté le 04/03/2019 19:51 | #
Nope, la différence est que le code exécuté par GoSub continue jusqu'à un Return, moment auquel l'exécution revient après le GoSub.
Citer : Posté le 04/03/2019 20:50 | #
J'ai repérer que le GoSub accepte des noms d'étiquette plus complexe comme MONETTIQUETTE ou TEST ça peut servir. Concernant la doc traduite, je veux bien le lien, ça pourra sans doute me servir...
Citer : Posté le 05/03/2019 06:51 | #
@Shadow15510
@Lightmare
Thanks very much!
It's the beginning of a wonderful tutorial.
@Lephenixnoi
Thanks to your great contribution, I'm pleased that C.Basic could have the French version manual.
The French manual was uploaded here.
https://gitlab.com/sentaro21/cbasic
@Kikoodx
Please try programming with C.Basic by all means.
Overclocking utilitaire Ftune/Ptune2/Ptune3 est également disponible.
Si vous avez des questions ou un rapport de bogue, n'hésitez pas à me le faire savoir.
Citer : Posté le 05/03/2019 07:53 | #
Thank you very much Sentato21 !!
Thanks for documentation ! This help me !
Citer : Posté le 05/03/2019 12:19 | #
j'ai pas tout lu parce que c'est long et j'ai pas le temps (je dois faire mon rapport de stage...) mais c'est génial ! c’est drôle, intéressant, etc... j'adore !
Citer : Posté le 05/03/2019 20:01 | #
Moi aussi z'aime beaucoup
Bon courage pour ton rapport !
Citer : Posté le 06/03/2019 13:51 | #
merci en vrai, je sais pas si je vais en survivre...
Citer : Posté le 06/03/2019 21:09 | #
Mercredi est terminé
(pour l'histoire des fonctions, je me suis inspirés des Yokais Japonais. Pardon à tous les Japonais, pour ce rapprochement )
Ajouté le 18/03/2019 à 12:39 :
J'ai une question... Comment fiat-on pour modifier la fonte ? J'ai trouvé FontEdit35.g1m et je peux charger des lettres. Mais impossible d'enregistrer... Si quelqu'un a une solution, je suis preneur...
Merci d'avance
Citer : Posté le 18/03/2019 13:34 | #
As-tu regardé la partie correpondante de la doc ? Si je me souviens bien tu peux charger les glyphes dans une matrice.
Citer : Posté le 18/03/2019 13:53 | #
How to display external fonts,
As a sample,
Rename FONTA8L1.bmp in the FONT folder in ZIP to FONTA8L.bmp and transfer it to the current folder.
In setup
EnableExFont: on
The standard font of the program is switched with bold type fonts.
Edit ExtFont: on
The font of the editor is switched too.
You can change the font by editing the font bmp file (FONTA8L.bmp etc).
FEINT35S/FEINT35C is a program that use matrix to rewrite font bmp file on C.Basic.
Only the fonts of [CHAR]-[F6] can be modified.
Sorry, FEINT35S/FEINT35C has no manual yet.
Overclocking utilitaire Ftune/Ptune2/Ptune3 est également disponible.
Si vous avez des questions ou un rapport de bogue, n'hésitez pas à me le faire savoir.
Citer : Posté le 18/03/2019 19:52 | #
@Lephe @Sentaro21 :
Okay thank you for your answers
Now, I have no problems : my font is changed and used...