Manuel - Partie 1 : Le Langage de Référence
Variables, constantes, expressions arithmétiques et logiques, boucles, conditions et gestion des sous-programmes.
Le langage de référence
1.1 – Vocabulaire
1.2 – Règles d’utilisation1.3 – Variables1.2.1 – Numérotation
1.2.2 – Commandes
1.2.3 – Parenthèses
1.2.4 – Commandes et numéro d’objet
1.2.5 – Fonctions et numéro d’un objet
1.2.6 – Cible des commandes de dessin 2D
1.4 – Tableaux de variables2 – Fonctions du langage BASIC
2.1 – Fonctions mathématiques
2.2 – Fonctions Logiques
2.3 – Fonctions String
2.4 – Conversions string / nombre
2.5 – Fonctions logiques binaires
2.6 – Ecran
2.7 – Lecture et écriture en mémoire
2.8 – Séparateur décimal pour les nombres réels3 – Commandes du langage BASIC
3.1 – Structures
3.2 – Label / Goto / Gosub
3.3 – Sous-programmes
3.4 – Fonctions
3.5 – Commentaires
3.6 – Fin de l’exécution
3.7 – Heure et Date
3.8 – Commandes système
3.9 – Données à l’intérieur du programme
3.10 – Données entrées au clavier
3.11 – Impression : Print
3.12 – Variables and labels
3.13 – Numéro de ligne courante
Ce logiciel est appelé PANORAMIC parce que c’est un langage BASIC « universel », utilisable dans des domaines différents :
Monde 3D : charge des objets MD2 et 3DS, des objets 3D primaires, les gère (en position, en taille, en couleur, en texture, …), pilote une lumière 3D et une caméra 3D.
Monde 2D : permet de déplacer des SPRITES sur un arrière plan.
Manipule (charge et joue) des objets multimédia : sons, musiques, images, films.
Dessine en 2D : cercles, rectangles, ellipses, arcs, lignes, polylignes, points.
Crée et manipule des objets système (de Windows) : bouton, liste, combobox, barres, …
Manipule des fichiers texte sur le disque : lire, écrire, créer…
Pilote le logiciel Excel.
Permet le calcul mathématique : log, exp, sin, cos…
Etc.
1 – Généralités du langage
PANORAMIC utilise la syntaxe classique du BASIC.
N’est pas sensible à la casse :NexTetnEXtont la même signification.
REM(ou apostrophe) pour les remarques : les caractères après le mot cléREMne sont pas évalués.
Des espaces peuvent être insérés partout sauf à l’intérieur d’un mot clé ou d’un nom de variable.
Toutes les variables doivent être définies parDIM, sauf les variables système (par exempleTIME$,DATE$,DIR_CURRENT$).
Plusieurs commandes peuvent être écrites sur la même ligne, dans ce cas elles sont séparées par « : »
Possède des mots-clés de type : déclaration (DATA,…), commandes (SIN(30),…), variables système (TIME$,…), opérateurs (AND,…).
Une commande peut avoir jusqu’à 5 paramètres.
Le point « . » est le séparateur décimal pour les nombres.
Si une erreur arrive lors de l’exécution, une fenêtre explicative est visualisée et le programme s’arrête.
1.1 – Vocabulaire
OBJET SYSTEME : objet du Système d’Exploitation :
BUTTON,FORM,COMBO,SCENE3D, …
CIBLE : l’objet qui reçoit toutes les commandes.
CIBLE 2D : l’objet (commeFORMouPICTURE)qui est désigné pour recevoir toutes les commandes 2D.
CIBLE 3D : l’objet (unSCENE3Dparmi plusieursSCENE3D) désigné pour recevoir toutes les commandes 3D.
OBJET 3D : élément d’unSCENE3D(3D_SPHERE,3D_CONE,3D_THORUS, etc.).
OBJET SPRITE : image qui peut être déplacée sur un arrière plan (SCENE2D) sans le perturber.
COMMANDE : un ordre à exécuter immédiatement.
FONCTION : une expression qui retourne une valeur. Elle est appelée avec un ou plusieurs paramètres. Exemple :SQR(2) retourne 1.414…
DECLARATION : mot clé utilisé pour déclarer quelque chose (une étiquette, une variable,…).
VARIABLE SYSTEME : variable non définie par l’utilisateur, mais utilisée pour sa valeur propre (TIME$,DATE$…)
SOUS-PROGRAMME : groupe de commandes qui commence par unLABELet qui se termine parRETURNet qui peut être appelé un certain nombre de fois.
1.2 – Règles d’utilisation
Chaque objet système (
BUTTON,LIST,FORM, …) doit être créé avec un numéro associé. Ce numéro est utilisé pour toute commande appliquée sur cet objet.Chaque objet 3D doit être créé avec un numéro associé. Ce numéro est utilisé pour toute commande 3D appliquée sur cet objet.
Chaque objet SPRITE doit être créé avec un numéro associé. Ce numéro est utilisé pour toute commande SPRITE appliquée sur cet objet.
Les numéros d’OBJETS SYSTEME, les numéros d’OBJETS 3D et les numéros de SPRITES sont indépendants (aucun rapport) : un OBJET 3D peut porter un numéro utilisé par un OBJET SYSTEME ou un OBJET SPRITE.
Les commandes sont regroupées par famille.
Exemple :
- Chaque commande sur un objet 3D commence par 3D :
3D_X_POSITION,3D_Z_POSITION, …- Chaque commande pour dessiner commence par 2D :
2D_CIRCLE,2D_PEN_COLOR, …- Chaque commande sur un objet SPRITE commence par SPRITE :
SPRITE_POSITION,SPRITE_HIDE, …
Une fonction a des parenthèses :
SIN(x),WIDTH(N)Une commande n’a aucune parenthèse.
1.2.4 – Commandes et numéro d’objet
Toute commande sur un objet SYSTEME utilise le numéro de cet objet SYSTEME.
Toute commande sur un objet 3D utilise le numéro de cet objet 3D.
Toute commande sur un objet SPRITE utilise le numéro de cet objet SPRITE.
1.2.5 – Fonctions et numéro d’objet
Toute fonction sur un objet SYSTEME utilise le numéro de cet objet SYSTEME.
Toute fonction sur un objet 3D utilise le numéro de cet objet 3D.
Toute fonction sur un objet SPRITE utilise le numéro de cet objet SPRITE.
1.2.6 – Cible des commandes de dessin 2D
Les commandes de dessin 2D (pour dessiner sur un objet) ne se réfèrent pas à un numéro d’objet, mais s’appliquent à l’objet « cible 2D ».
L’objet « cible 2D » est FORM numéro 0 par défaut.
Pour changer d’objet « cible 2D », utiliser la commande «
2D_TARGET_IS N« . N sera le nouvel objet « cible 2D ».
1.3 – Variables
Il y a 3 types de variables :
- Réel
- Entier (le nom est suivi par %)
- String (le nom est suivi par $)
a% est un entier (a% = 14)
b$ est un string (b$ = « Salut »)
d est réel (d = 12.8953)Toutes les variables (simples et tableaux) doivent être définies par
DIM:
DIMAbc, I%, Name$(20)Un nom de variable contient des lettres, des chiffres, le caractère souligné (_) et peut se terminer par % ou $. Le premier caractère ne peut pas être un nombre.
Une variable peut être libérée par la commande
FREE.
1.4 – Tableaux de variables
On utilise
DIMpour définir un tableau de variable (entier, réel ou string).
DIMa$(20) crée un tableau de strings de 21 éléments. Le premier élément est a$(0), le dernier est a$(20).Pour libérer un tableau de variable, utiliser
FREEsans indiquer le nombre d’éléments :DIMa$(20) :FREEa$
2 – Fonctions du BASIC
2.1 – Mathematical functions
Les fonctions mathématiques classiques du BASIC sont disponibles :
ABS(X)Retourne la valeur absolue de X. ACOS(X)Retourne l’arc cosinus de X. ASIN(X)Retourne l’arc sinus de X. ATN(X)Retourne l’arc tangente de X. COS(X)Retourne le cosinus de X. DEGREESLes angles sont exprimés en degrés. DEGREE_TO_RADIAN(X)Retourne la valeur en radians de l’angle X exprimé en degrés. EVEN(X)Retourne 1 si X est pair, 0 sinon. EXP(X)Retourne l’exponentielle de X. FRAC(X)Retourne la partie fractionnaire de X. HCOS(X)Retourne le cosinus hyperbolique de X. HEX(V$)Retourne une valeur décimale à partir d’une valeur hexadécimale V$. HEX$(V)Retourne une valeur hexadécimale à partir d’une valeur décimale V. HSIN(X)Retourne le sinus hyperbolique de X. HTAN(X)Retourne la tangente hyperbolique de X. INT(X)Retourne la partie entière de X. LOG(X)Retourne le logarithme népérien (de base e) de X. LOG10(X)Retourne le logarithme en base 10 de X. LOG2(X)Retourne le logarithme en base 2 de X. MAX(X,Y)Retourne le plus grand de X et Y. MIN(X,Y)Retourne le plus petit de X et Y. MOD(X,Y)Retourne le modulo de X et Y. ODD(X)Retourne 1 si X est impair, 0 sinon. PIRetourne 3.1415926535897932384626433832795 POWER(X, Y)Retourne X élevé à la puissance Y. RADIANSLes angles sont exprimés en radians. RADIAN_TO_DEGREE(X)Retourne la valeur en degrés de l’angle X exprimé en radians. RND(X)Retourne une valeur aléatoire entre 0 et X, mais non égale à X. SGN(X)Retourne le signe de X. SIN(X)Retourne le sinus de X. SQR(X)Retourne la racine carrée de X. TAN(X)Retourne la tangente de X. WRAP_VALUE(A)Retourne une valeur de l’angle A dans l’intervalle 0-360.
2.2 – Fonctions logiques
Les fonctions logiques classiques du BASIC sont disponibles :
AND,OR,NOTLes parenthèses peuvent être utilisées.
Ces fonctions sont utilisées dans une expression
IF,WHILEouUNTILet le résultat de l’évaluation est « VRAI » ou « FAUX ».Exemple :
IF((A>1)OR((B+3<C-4)))AND(D<>6OR NOT(A<B))THEN…
Les comparateurs suivants peuvent être utilisés avec des valeurs numériques :
= égal à > plus grand que, supérieur à < plus petit que, inférieur à <= ou =< inférieur ou égal à >= ou => supérieur ou égal à >< ou <> non égal à, différent de
Seuls les comparateurs suivants peuvent être utilisés pour comparer des strings :
= égal à >< ou <> non égal à, différent de
2.3 – Fonctions string
Les fonctions « string » classiques du BASIC sont disponibles :
LEFT$(A$,N)Retourne les N premiers caractères du string A$ (caractères à gauche). RIGHT$(A$,N)Retourne les N derniers caractères du string A$ (caractères à droite). LEN(A$)Retourne la longueur du string A$ (soit le nombre de caractères). STRING$(N,C$)Retourne un string contenant N fois le caractère C$. MID$(A$,4,2)Retourne les 2 caractères du string A$ à partir du 4ème caractère. UPPER$(A$)Retourne le string constitué de A$ en majuscules. LOWER$(A$)Retourne le string constitué de A$ en minuscules. TRIM$(A$)Retourne le string constitué de A$ sans les blancs à droite et à gauche. LTRIM$(A$)Retourne le string constitué de A$ sans les blancs à gauche. RTRIM$(A$)Retourne le string constitué de A$ sans les blancs à droite. NUMERIC(A$)Retourne 1 si le string A$ représente une valeur numérique, 0 sinon. INSTR(A$,B$)Retourne la position du premier caractère de B$ dans A$. INSTR_LAST(A$,B$)Retourne la position dans la chaine de caractères A$ de la dernière occurence de la chaine de caractères B$. INSTR_POS(A$,B$,P)Retourne la position de la chaine de caractères B$ dans la chaine de caractères A$ à partir de la position P. INSTR_RIGHT(A$,B$)Retourne la position dans la chaine de caractères A$ du premier caractère de la chaine de caractères B$, à partir de la fin. INSERT$(A$,B$,P)Retourne un string formé de A$ avec B$ inséré en position P. REVERSE$(A$)Retourne la chaîne de caractères dans laquelle l’ordre des caractères de A$ est inversé. RIGHT_POS$(A$,P)Retourne une chaine de caractères composée de la chaine de caractères A$ à partir de la position P.
2.4 – Conversions strings / nombre
Les fonctions de conversion classiques du BASIC sont disponibles:
VAL(« 123.4 »)Convertit le string « 123.4 » en sa valeur réelle 123.4 STR$(123.4)Convertit la valeur réelle 123.4 en un string « 123.4 » ASC(A$)Retourne le code ASCII du premier caractère d’A$ CHR$(V)Retourne le caractère correspondant au code ASCII V 2.5 – Fonctions logiques binaires
BIN_AND(V1,V2)Retourne la valeur du « ET » binaire logique entre V1 et V2 BIN_OR(V1,V2)Retourne la valeur du « OU » binaire logique entre V1 et V2 BIN_XOR(V1,V2)Retourne la valeur du « OU EXCUSIF » binaire logique entre V1 et V2
2.6 – Ecran
Des variables système donnent les dimensions de l’écran en pixels :
SCREEN_XRetourne la largeur de l’écran en pixels. SCREEN_YRetourne la hauteur de l’écran en pixels.
2.7 – Lecture et écriture en mémoire
PEEK(A)Retourne la valeur (octet de 0 à 255) de l’adresse A. PEEK16(A)Retourne le contenu (valeur sur 16 bits de 0 à 65535) des adresses A et A+1. PEEK32(A)Retourne le contenu (valeur sur 32 bits de 0 à 4294967295) des adresses A, A+1, A+2 et A+3. POKEA,VEcrit la valeur V (octet de 0 à 255) à l’adresse A. POKE16A,VEcrit la valeur de 16 bits V (octet de 0 à 255) aux adresses A et A+1. POKE32A,VEcrit la valeur de 32 bits V (octet de 0 à 4294967295) aux adresses A, A+1, A+2 et A+3. POKE_NORMALLes commandes POKE16A,V etPOKE32A,V écrivent V avec le poids fort de V à l’adresse A.POKE_REVERSELes commandes POKE16A,V etPOKE32A,V écrivent V avec le poids faible de V à l’adresse A.PEEK_NORMALLes fonctions PEEK16(A)etPEEK32(A)retournent une valeur dont le poids fort est à l’adresse A.PEEK_REVERSELes fonctions PEEK16(A)etPEEK32(A)retournent une valeur dont le poids faible est à l’adresse A.
2.8 – Séparateur décimal pour les nombres réels
SEPARATOR_IS_COMMALe séparateur décimal pour les nombres réels est la virgule. SEPARATOR_IS_POINTLe séparateur décimal pour les nombres réels est le point.
3 – Commandes du langage BASIC
3.1 – Structures
IFConditionTHENInstructionsExécute « Instructions » si « Condition » est Vraie. IFCondition
Groupe d’Instructions
END_IFExécute « Groupe d’Instructions » si « Condition » est Vraie. IFCondition
Groupe d’Instructions A
ELSE
Groupe d’Instructions B
END_IFExécute « Groupe d’Instructions A » si « Condition » est Vraie, sinon, exécute « Groupe d’Instructions B ». FORV = Expression1TOExpression2
Groupe d’Instructions
NEXTVExécute « Groupe d’Instructions » pour V variant de la valeur Expression1 à la valeur Expression2.
Un
STEPest disponible pour la boucleFOR/NEXT: il définit l’incrément de la variable.Une commande
EXIT_FORpermet de sortir de la boucleFOR/NEXT.WHILECondition
Groupe d’Instructions
END_WHILEExécute « Groupe d’Instructions » tant que « Condition » est Vraie. Une commande
EXIT_WHILEpermet de sortir de la boucleWHILE/END_WHILE.REPEAT
Groupe d’Instructions
UNTILCondition>Exécute « Groupe d’Instructions » jusqu’à ce que « Condition » soit Vraie. Une commande
EXIT_REPEATpermet de sortir de la boucleREPEAT/UNITL.SELECTExpression
CASEValeur Numérique
Groupe d’Instructions
CASEValeur Numérique
Groupe d’Instructions
– – – –
END_SELECTExécute « Groupe d’Instructions » après le CASEdont la Valeur Numérique correspond au résultat de l’évaluation de Expression.EXIT_FORDans une boucle FOR/NEXT, va exécuter l’instruction juste après NEXT.EXIT_REPEATDans une boucle REPEAT/UNTIL, va exécuter l’instruction juste après UNTIL.EXIT_WHILEDans une boucle WHILE/END_WHILE, va exécuter l’instruction juste après END_WHILE.
3.2 – Label / Goto / Gosub
LABELNOMDéclaration d’un label (un label est un point du programme qui reçoit un nom, c’est soit le début d’un sous-programme ou simplement un point à atteindre par un GOTO).NOM : Label (nom donné à un point du programme). GOTONOMExécute la partie du programme qui commence par le label NOM. GOSUBNOMExécute le sous-programme qui commence par le label NOM. RETURNFin de sous-programme.
3.3 – Sous-programmes
Le sous-programme ABC est appelé par son nom :
ABC()
Il est défini par
SUB:
SUBABC()
instructions
END_SUB
On peut lui passer un ou plusieurs paramètres :
IMPRIME(2)
SUBIMPRIME(V)
END_SUB
Il est possible par
DIM_LOCAL, de définir des variables localisées à un sous-programme.
SUBABC(P1,P2,…)Commence le sous-programme ABC avec les paramètres P1, P2, … END_SUBTermine un sous-programme. EXIT_SUBTermine un sous-programme sans exécuter END_SUB.DIM_LOCALDéfinit une ou plusieurs variables à l’intérieur d’un sous-programme.
3.4 – Fonctions
La fonction ABC est utilisée dans une expression :
A = 2 * ABC(6)
Elle est définie par
FNCet retourne une valeur parRESULT:
FNCABC(X)
instructions
RESULT5 * X
END_FNC
Il est possible par
DIM_LOCAL, de définir des variables localisées à une fonction.
FNCABC(P1,P2,…)Commence la fonction ABC avec les paramètres P1, P2, … END_FNCTermine une fonction. EXIT_FNCTermine une fonction sans exécuter END_FNC.RESULTRetourne la valeur de la fonction. DIM_LOCALDéfinit une ou plusieurs variables à l’intérieur d’une fonction.
3.5 – Comment
REMou‘(apostrophe)Introduit un commentaire dans le programme (ne fait rien).
3.6 – Fin de l’exécution
ENDTermine le programme principal qui s’arrête et se met en attente des événements. STOPArrêt de l’exécution du programme. Affiche le numéro de la ligne source. TERMINATELe programme s’arrête, libère la mémoire : tout disparaît. :Sépare des instructions sur la même ligne.
3.7 – Date et Heure
Ces variables système sont prédéterminées (pas besoin de les définir).
TIME$Retourne l’heure actuelle. DATE$ Retourne la date actuelle. DATE_YEARRetourne l’année actuelle. DATE_MONTHRetourne le mois actuel. DATE_DAYRetourne le jour actuel. TIME_HOUR Retourne l’heure actuelle. TIME_MINUTERetourne la minute actuelle. TIME_SECONDRetourne la seconde actuelle.
3.8 – Commandes Système
WAITNPause de N millisecondes (0 <= N <= 30000). Le programme est arrêté jusqu’à ce que le temps soit écoulé. Aucun événement n’est pris en compte. PAUSENPause de N millisecondes (0 <= N <= 30000). Le programme est arrêté jusqu’à ce que le temps soit écoulé. Cependant, tous les traitements en attente (événements) sont effectués. DISPLAY Met à jour et visualise une scène 3D ou une représentation 2D puis reprend l’exécution du programme. BEEPEmet un son bref. BEEP_ERROREmet le son système d’une erreur. BEEP_EXCLAMATIONEmet le son système d’une exclamation. BEEP_INFORMATIONEmet le son système d’une information. BEEP_QUESTIONEmet le son système d’une question.
3.9 – Données à l’intérieur du programme
DATA10, 34, 71Valeurs définies dans le fichier source. READaLire une valeur dans une ligne DATARESTOREForce la lecture des données à la première valeur DATA.RESTORE_LABELForce la lecture des données ( DATA) à partir du label L.
3.10 – Données entrées au clavier
INPUTVLa variable V est affectée avec ce qui a été tapé au clavier, lors de l’appui sur ENTER. INKEY$ Lecture d’un caractère en cours de frappe au clavier, puis continue l’exécution.
La commande
INPUTa des options :
INPUT_MARK_ONAffiche un point d’interrogation lors d’une commande INPUT.INPUT_MARK_OFFN’affiche pas de point d’interrogation lors d’une commande INPUT.INPUT_REDO_ONExécute à nouveau la commande INPUTsi aucune valeur lue.INPUT_REDO_OFFNe ré-exécute pas la commande INPUTsi aucune valeur lue.INPUT_VISIBLE_ONAffiche les caractères saisis lors d’une commande INPUT.INPUT_VISIBLE_OFFN’affiche pas les caractères saisis lors d’une commande INPUT.
Par défaut, le comportement de la commande
INPUTest :
INPUT_REDO_OFF: si aucune valeur n’est rentrée (seulement la touche RETURN), il n’y a pas de nouvelle demande et la variable contiendra :
- 0 si c’est une variable numérique ;
- la chaine vide (« ») si c’est une variable string.
INPUT_MARK_OFF: il n’y a pas d’affichage de point d’interrogation.INPUT_VISIBLE_ON: il y a affichage des caractères saisis.
3.11 – Impression
C’est le
Le point-virgule « ; » peut être utilisé pour accoler les impressions. Exemple :
Par défaut,
FORMnuméro 0, mais un autre objet peut être désigné comme cible pour l’impression parPRINT_TARGET_IS.Il est possible d’imprimer dans un objet système à un endroit déterminé en X et Y par
PRINT_LOCATE.
Va à la ligne suivante (imprime une ligne vide). Imprime le résultat sur l’écran ou dans l’objet cible. PRINT_LOCATEX, YDéfinit l’endroit du prochain PRINT_X_LOCATEXDéfinit l’endroit du prochain PRINT_Y_LOCATEYDéfinit l’endroit du prochain
3.12 – Variables and labels
NUMBER_VARIABLESRetourne le nombre de variables créées et prédéfinies. VARIABLE(T)Retourne 1 si le string T représente une variable déclarée, 0 sinon. LABEL(T)Retourne 1 si le string T représente un LABEL existant, 0 sinon.
3.13 – Numéro de ligne courante
NUMBER_CURRENT_LINE Retourne le numéro de la ligne courante.
Contenu créé par Jack. Mise à jour le 06 mars 2025