Programmation Basic Casio/Commandes de base
Sections |
Cette page décrit les commandes de base qui permettent de mettre en place de premiers programmes fonctionnels.
Afficher du texte [modifier]
Pour l'instant, exécuter votre programme ne sert a rien car il ne contient aucun code. Il faut Revenir dans l'éditeur puis entrer un texte entre guillemets (accessibles par la touche [ALPHA]), par exemple "LA POMME EST UN FRUIT". En exécutant le programme, on voit en principe le texte « LA POMME EST UN FRUIT » s'afficher.
À noter que si on omet les guillemets, le programme aurait effectué la multiplication de toutes les variables correspondant lettres du texte puis aurait retourné la valeur du produit, voire la section suivante expliquant le fonctionnement des variables. Voici une des premières spécificités du Basic Casio car il n'est pas besoin de mettre la commande PRINT devant le texte a afficher. Seuls les guillemets suffisent.
Les variables [modifier]
La calculatrice dispose de cases mémoires dont les noms et types sont prédéfinis. Cela sous entend qu'il n'est pas nécessaire de demander soi même la création des variables comme dans d'autres langages de programmation. Cela éclaircit la syntaxe mais limite le programmeur.
Alphanumériques [modifier]
Il existe une grande variété de variables disponibles pour les programmeurs. Les plus simples et les plus économiques en code (ce qui est un facteur très important car on ne dispose que de 64 Ko pour une graph 35 par exemple) sont les variables alphanumériques. Elles sont au nombre de 28 en comprenant les 26 lettres de l'alphabet plus les signes thêta et rhô. Pour apprendre à manipuler ces variables, il est plus commode d'aller dans le mode RUN.
Pour connaître la valeur de la variable alphanumérique, celle de « A » par exemple, appuyer sur [ALPHA] puis la touche correspondant à la lettre « A » ([X,O,T] en l'occurrence). Puis appuyer sur [EXE]. Si elle ne contient rien, il s'affichera 0.
Pour “remplir” une variable, utiliser la flèche présente au dessus de la touche [AC/ON] qui correspond à la valeur getkey? 25. Si on veut assigner la valeur 2 à la variable A, utiliser la syntaxe 2->A (cet article utilise -> plutôt que → car certains ordinateurs n'affichent pas correctement ce dernier caractère). En demandant l'affichage de la valeur de A comme expliqué dans le point précédent on constate que la Variable A contient effectivement la valeur 2.
Il est possible d'effectuer des assignations composées comme 3+B->A . Cela aura pour effet d'assigner la valeur de B plus la constante 3 a la variable A. Pour incrémenter? (augmenter de un) une valeur de 1, on peut s'y prendre ainsi: A+1→A. Le langage Casio ne gère pas les syntaxes comme A++ , familiers du C.
Toutes les variables sont limitées a l'intervalle numérique [-1e-99 ; 1e+99] et ne gèrent que 10 chiffres significatifs.
Pour assigner le même nombre a toute une série de variables, on peut utiliser le tilde ~ (accessible par [ALPHA][F3]) entre les deux variables bornes. Par exemple 3->B~U met 3 dans toutes les variables entre B et U. On met très souvent 0->A~Z en début des programmes pour réinitialiser toutes les variables.
Variables de liste [modifier]
Les listes sont comme leur nom l'indique une "liste" de variables. Elles sont bien commodes pour ne pas être limité dans un programme par le nombre faible de variables alphanumériques. Une liste c'est donc une ligne de variable. Ces listes sont en faites les listes que l'on utilise dans le menu STATS de la calculatrice. Pour s'en servir dans un programme il faut la déclarer. pour la déclarer, il y a 2 syntaxes : soit {1,2,3,4,5,6}->List1 pour une liste dont on définit les valeurs immédiatement (les valeurs 1 2 3 4 5 6 sont bien entendu des exemples...) ; soit 6->Dim List1. Ceci donne la dimension de la liste 1 (une ligne de 6 variables dans l'exemple) et remplit ces 6 variables de 0. On l'utilise donc dans le cas d'une liste qu'on définira plus loin dans un Programme.
Un autre avantage des listes est qu'on peut les utiliser avec les fonctions des statistiques ! Notamment, cela va permettre de fluidifier énormément la partie graphique d'un programme (une ligne tracer en F-Line sera plus lente à s'afficher qu'une ligne en DrawStat). Ainsi le DrawStat est une fonction très utilisée avec les listes pour les jeux en général puisqu'elle permet l'affichage d'une ligne, d'un petit carré, d'une petite croix etc. Pour utiliser les listes en mode graphique il faut d'abord donner lesquels des 3 graph disponibles vous allez utiliser. Dans votre code vous écrirez cela ainsi : S-Graph1 DrawOn ou S-Graph1 DrawOff. Bien sur, après il faut définir le type du graph, les listes qui y seront liées... Et pour tracer une ligne à partir des listes 1 et 2 cela donne : S-Graph1 DrawOn,xyline,List1,List2,1,Dot. On résume : S-Graph1 défini le graph utilisé, DrawOn défini l'état du graph, xyline défini l'aspect du graph (ici une LIGNE), List1,List2 définissent les listes utilisées par le graph (dans l'ordre abscisse,ordonnée bien entendu), 1 donne la fréquence et enfin Dot précise que les différents points du graph seront des points (si vous mettez square, votre ligne aura de petits carrés à ses extrémités...).
En plus de la fonction graphique, les listes permettent certaines fonctionnalités comme Min(List1) qui vous donnera la valeur minimale de la liste 1.
Variables matricielles [modifier]
Les matrices font peut être peur, pourtant c'est l'un (voir le) des outils les plus pratiques de la programmation en BASIC CASIO. D'ailleurs ce n'est pas si compliqué : il s'agit simplement d'un tableau de variable ! On pourrait modéliser une variable ainsi :
1 2 3
4 5 6
7 8 9
Et voila, c'est tout. vous avez ici une matrice de taille 3x3. Elles sont très utiles si vous manquez de variables, elles sont très utiles pour un menu de sauvegarde (car les données d'une matrice ne sont pas supprimées avec l'extinction de la calculatrice) et elles ont pleins d'autres possibilités.
Comment on s'en sert? Il faut d'abord la déclarer. La déclaration est assez similaire à la déclaration d'une liste, mais il existe une différence : une matrice est un tableau avec lignes et colonnes, une liste est simplement une ligne. On la déclare donc de 2 façons différentes :
[3,3]->Dim Mat A ou [[1,2,3][4,5,6][7,8,9]]->Mat A.
On notera 2 petites différences avec la liste : la liste est définie avec des accolades {} et la matrice avec des crochets []. De plus, la matrice comme vous pouvez le constater a pour nom une lettre alors qu'une liste est identifié à son numéro. On note bien sur la différence dût simplement à la différence entre tableau et ligne c'est à dire 2 valeur dans la dimension à la place d'une seul.[[1,2,3][4,5,6][7,8,9]] une suite 1,2,3 sera une ligne, lorsqu'on sépare avec ][ on passe à la ligne suivante. Dans une liste tout est entré dans une même ligne puisqu'il n'y a pas de colonne.
Maintenant comment on s'en sert vraiment? Eh bien cela dépend de l'utilisation que vous lui réservez. Si vous voulez vous servir de la valeur 5 dans l'exemple et la ranger dans une variable, il faut utiliser la syntaxe : Mat A[2,2]->variable. Vous sélectionnez la valeur en la localisant dans le tableau [x,y]. Attention à ne pas oublier de préciser le nom de la matrice ! c'est un oubli assez courant.
Variables système [modifier]
[modifier]
Mais les fonctions de programmation les plus intéressantes se trouvent ailleurs, regroupées dans un menu a priori peu accessible (c'est juste une chose qu'il faut connaître). On n'y accède pas en naviguant dans une quelconque arborescence; mais en effectuant la combinaison de touches [SHIFT][VARS] (shift puis vars) dans l'éditeur (cela fonctionne également dans le mode RUN ; en fait, il est même possible d'écrire des programmes dans le mode RUN en séparant les instructions par un retour chariot ([SHIFT][EXE]) mais cela se révèle généralement moins pratique que le mode PRGM où l'on peut nommer son programme, le protéger par un mot de passe, etc.).
Voici la liste de toutes les fonctions accessibles dans ce menu ainsi que les possibilités qu'elles fournissent au programmeur qui les utilisent:
Note: Pour mieux illustrer les exemples, des instruction gratuites (n'ayant qu'un rôle purement démonstratif) seront rajoutées. Ces instructions ressemblent à "TEXTE" ou A+B->C et ne servent qu'à vous exercer à repérer le code superflu et à vous habituer à la lecture de vrais programmes.
Menu COM [modifier]
If/Then/Else/IfEnd [modifier]
Ces instructions permettent d'exécuter des parties de votre code en précisant les conditions qui permettront leur exécution:
If (condition) Then (code exécuté si la condition est vérifiée) Else (code exécuté si la condition n'est pas validée) IfEnd
(à noter que les parenthèses ne sont pas indispensables)
En français:
Si (condition)
Donc (code exécuté si la condition est vérifiée)
Sinon (code exécuté si la condition n'est pas validée)
SiFin
Concrètement, cela peut donner:
| Code d'exemple | Résultat | Code à l'écran |
|---|---|---|
|
|
Le "Else" est optionnel. Si il est absent et que la condition de test n'est pas vérifiée, alors aucune des instructions situées entre le Then et le IfEnd ne seront exécutées.
Même le IfEnd est optionnel. Si il est absent, la condition regroupera tout le programme. C'est a dire que si le test n'est pas vérifié, aucune instruction du programme ne s'exécutera. Le IfEnd sert a borner les instructions conditionnelles. C'est a dire que toutes les instructions situées avant le IfEnd seront exécutées en fonction du test d'entrée. Toutes les instructions après le IfEnd seront exécutées, indépendament du If.
Il est à noter que le If peut être enrichit pas des "logic gates" que l'on utilise en éléctronique comme And ou Or (les plus utilisé). ainsi on aura par exemple :
If (condition) And (condition2) Then (code exécuté si la condition est vérifiée) Else (code exécuté si la condition n'est pas validée) IfEnd
While/WhileEnd [modifier]
Les instructions incluses entre un While et un WhileEnd s'exécutent tant que le test effectué lors du while est validé.
While (test) (instructions exécutées si le test est validé et autant de fois qu'il l'est) WhileEnd
Le test est généralement une comparaison d'infériorité ou de supériorité. Par exemple on peut tester si telle variable est inférieure à telle valeur numérique. Tant que ce n'est pas le cas, on effectue une instruction lambda et on augmente la valeur de la variable jusqu'à ce que celle-ci atteigne la valeur de seuil, validant le test du while et permettant la poursuite du programme après le bloc.
Do/LpWhile [modifier]
La boucle Do/LpWhile fonctionne à peu près de la même manière que While/WhileEnd à la différence que le test est effectué au niveau du WhileEnd, c'est à dire que même si il n'est pas validé, le code entre Do et LpWhile aurait été exécuté au moins une fois, alors que cela n'aurait pas été le cas avec While/WhileEnd.
Do (instructions exécutées une première fois puis autant de fois que le test est validé) LpWhile (test)
Utiliser cette boucle ou une boucle For/Next plutôt que While est généralement un moyen d'optimiser son code dans certaines circonstances. En pratique, le débutant peut fort bien se débrouiller uniquement avec des While voire avec des Goto, mais ces derniers ont tant été décriés que nous ne saurions vous conseiller de les utiliser par défaut.
For/To/Step/Next [modifier]
Ces instructions permettent d'exécuter des instruction entre le For et le Next de manière répétitive.
For (Valeur initiale)->(variable du compteur) To (valeur finale) Step (valeur du pas) (code exécuté tant que la variable ne franchit pas la valeur de la valeur finale) Next
En français :
De la (Valeur initiale)->(variable) Jusqu'à la (valeur finale) Par étapes de (valeur du pas)
(code exécuté tant que la variable ne franchit pas la valeur de la valeur finale) Recommencer // tant que la variable ne franchit pas la valeur finale.
L'ensemble commencé par le For et terminé par le Next est appelé une boucle car les instructions situées dans cet ensemble s'exécuteront plusieurs fois de manière répétée. De la même manière qu'on dit « passer une musique en boucle », on exécutera ici des instructions en boucle. Ci-dessous seront expliquées les règles qui régissent cette boucle et la manière d'en sortir. À noter que la valeur du <pas> est de "1" par défaut et qu'il n'est pas nécessaire de la préciser si on veut la conserver à cette valeur.
C'est une instruction difficile à expliquer car elle en contient de nombreuses autres. Elle est destinée en pratique à effectuer des motifs linéaires avec un minimum de lignes de code. Il s'agit donc d'une fonction servant principalement à optimiser un code, et sa maîtrise est loin d'être indispensable pour monter des programmes fonctionnels mais s'avère très pratique pour les programmeurs expérimentés.
Menu CTL [modifier]
Prog [modifier]
Cette instruction permet de faire appel à un autre programme. Cela est l'équivalent des fonctions pour d'autres langages.
Prog "Nom du programme"
Return [modifier]
Cette instruction permet de retourner une variable traitée dans une fonction.
Programme "MAIN" "A"?→A Prog "Carre"
Programme "CARRE" AxA→A return A
Break [modifier]
Cette instruction interrompt une boucle
Stop [modifier]
Cette instruction interrompt un programme
A noter qu'il ne sert à rien de mettre un Stop à la fin du programme, celui-ci s’arrêtera tout seul.
Menu JUMP [modifier]
Lbl [modifier]
Lbl = Label. Cela permet de faire des sauts dans les programmes. S'utilise avec Goto.
Goto [modifier]
Goto = Go To (Aller Vers). Cela permet de faire des sauts dans les programmes. S'utilise avec Lbl. Exemple :
Lbl 2:"A":Goto 2
Affiche A à l'infini
Cependant, l'usage de Goto/Lbl n'est a utilisé que dans les programme de cours. En effet, les Goto/lbl sont bien moins rapide qu'une boucle While/WhilEnd par exemple. Si vous réalisez un programme qui nécessite de la fluidité, n'utilisez pas Goto/Lbl, utilisez plutôt une boucle Do/LpWhile
Instruction => [modifier]
Forme contractée de l'instruction If-Then Exemple :
A<10=>Goto 10
Si A<10 Alors Aller vers le Label 10
On notera aussi que pour une condition de type
If A<10 And B>15 And C =2 Then Goto 10 IfEnd
On écrira ceci avec la forme contractée
A<10=>B>15=>C=2=>Goto 10
Il est aussi a noté que l'on ne peut pas utiliser cette forme contracté pour une conditions qui amène à plusieurs résultat. Par exemple
If A<10 Then 1->A Int 5Ran# +2->B Goto 1 IfEnd
Ce code ne peut pas s'écrire sous la forme contractée. L'erreur classique est d'essayer de faire
A<10=>1->A And int 5Ran# +2->B And Goto 1
Pas d'illusion : ceci ne fonctionne pas.
Isz [modifier]
Instruction d'incrémentation. Exemple :
Isz A
Équivaut à A+1→A
Dsz [modifier]
Instruction de décrémentation. Exemple :
Dsz A
Équivaut à A-1→A
Il n'y a pas de différence de vitesse d’exécution entre Dsz A et A-1->A, cependant cela prend moins de place et c'est tout de même plus "propre" d'utiliser Isz et Dsz.
Commande ? [modifier]
Cette commande permet de demander une variable. Exemple :
?→r
P→2xπxr
Formule du périmètre d'un cercle
Commande [disp] [modifier]
Menu CLR [modifier]
ClrText [modifier]
Efface tout l'écran Syntaxe :
ClrText
ClrGraph [modifier]
La commande ClrGraph contient le préfixe "Clr" qui signifie "Clear" en anglais ou "Effacer" en français. Donc cela sert tout simplement à effacer le Graph. En fait, cela remet les paramètres de vos graph à 0. Par exemple si vous avez paramétré
S-Graph1 DrawOn,Scatter,List1,List2,1,Square
ClrGraph
Et bien votre graph est complètement nettoyer et n'a plus le moindre paramètre.
ClrList [modifier]
ClrList comme les autres "Clr" sert à effacer quelque chose et ici il s'agit d'une liste. On défini par exemple une liste ainsi
{12,55,2,98,55555,123,798}->List1
Et que l'on fait ensuite
ClrList 1
La liste 1 est nettoyée et n'a plus ni dimension, ni valeur.
Menu REL [modifier]
Le menu REL (qui signifie RELATIF) est un menu très simple qui ne nécessite que très peu (voir aucune)d'explications. Dans ce menu on a 6 choix
= =| qui signifie différent de < > =< qui signifie inférieur ou égal à >= qui signifie supérieur ou égal à
Menu I/O [modifier]
Locate [modifier]
Affiche un texte ou une variable à un endroit précis sur l'écran. Généralement, les écrans font 21 caractères en longueur x 7 caractères en hauteur. Syntaxe :
Locate PositionVerticale,PositionHorizontale,"Texte" Locate PositionVerticale,PositionHorizontale,Variable
Getkey [modifier]
Permet de faire des instructions en fonction de la touche appuyée.
Getkey est une commande qui permet de renvoyer une valeur lorsqu'une touche est appuyée. Tableau des valeurs :
79 69 59 49 39 29 78 68 58 48 38 28 77 67 57 47 37 27 76 66 56 46 36 26 75 65 55 45 35 25 74 64 54 44 34 73 63 53 43 33 72 62 52 42 32 71 61 51 41 31
Cela symbolise le clavier de votre calculatrice. Si vous n'arrivez pas à vous le représenter voici un petit code qui vous permettra de connaitre la valeur d'une touche :
0->A~Z
{0}->List1
While 1
Getkey->A
If A(différent de)List1[1
Then Locate 4,4," "
IfEnd
Locate 4,4,A
A->List1[1
WhileEnd
Commande : [modifier]
Le ":" permet simplement de passer à une instruction suivante, comme le retour à la ligne, mais sans retour à la ligne.
Conseil : ne coder pas vaut programme avec ça : ça rend le code illisible et vous risquez de vous perdre dans votre propre programme...
Menu STR [modifier]
Le menu STR n'est disponible qu'à partir de l'OS 2. STR est l'abréviation de "String" : les strings sont des chaînes de caractères.
Str [modifier]
Cette fonction permet de créer un string. On y stockera une chaîne de caractères.
La syntaxe est :
"Ceci est un String"->Str 1
Les fonctions des strings sont très puissantes par rapport aux autres fonctions basic casio.
StrJoin [modifier]
Cette fonction permet de fusionner 2 chaînes de caractères entre elles.
La syntaxe est :
"String 1"->Str 1 "String 2"->Str 2 StrJoin(Str 1,Str 2)->Str 3 Afficher Str 3
On verra alors s'afficher :
String 1String 2
StrLen [modifier]
Cette fonction sert simplement à donner la longueur d'un String.
La syntaxe est :
"CASIO"->Str 1 StrLen(Str 1)->A
La variable A vaudra alors 5.
StrCmp [modifier]
Cette fonction va comparer 2 valeurs ou 2 strings.
Pour comparer 2 nombres on utilisera la syntaxe suivante :
StrCmp("35","20")->A
StrCmp("20","20")->B
Strcmp("20","35")->C
Ici, A vaudra 1, B vaudra 0 et C vaudra -1.
Si l'on souhaite comparer 2 Strings, on écrira :
StrCmp(Str 1,Str 2)->A
Si les 2 strings sont caractère pour caractère identique, alors A vaudra 0, sinon A vaudra 1.
StrSrc [modifier]
Permet de chercher la position du string 2 dans le string 1.
On utilisera la syntaxe suivant :
"Je suis mauvais"->Str 1 StrSrc(Str 1,"a")->A
A vaudra alors 10 car le premier "a" est en 10e position dans le String1.

