Tutorial RAPIDQ
Total Page:16
File Type:pdf, Size:1020Kb
RAPIDQ APPRENTISSAGE RAPIDQ LANGAGE BASIC 1. Guide du langage 1.1. Les directives Les directives du langage RAPIDQ servent à indiquer des actions que le compilateur doit effectuer. $APPTYPE GUI Indique au compilateur qu’il doit compiler une application Windows $INCLUDE « RAPIDQ.INC » Indique au compilateur qu’il doit utiliser le contenu du fichier RAPIDQ.INC pour compiler le programme. En général, il s’agit de fichiers de constantes. En l’occurrence, RAPIDQ.INC est le fichier de constantes fourni avec le compilateur RAPIDQ. On y trouve tout ce qu’il faut pour programmer des boutons, etc. sous Windows. $RESOURCE RES_BMP1 AS « CLOUDS.BMP » Indique au compilateur qu’il faut inclure au programme l’image qui se trouve dans le fichier CLOUDS.BMP , et de lui donner le nom RES_BMP1 pour pouvoir l’utiliser dans le programme. $DEFINE NOMBRE_DE_CASES 64 Indique au compilateur que lorsque le programme utilisera le mot clé NOMBRE_DE_CASES , il faudra le remplacer par la valeur 64 pour compiler. Ceci permet de rendre plus compréhensible le programme, parce qu’on donne un nom compréhensible aux valeurs que le programme utilise. $UNDEF NOMBRE_DE_CASES Indique au compilateur qu’il doit enlever la définition précédente appliquée au mot clé NOMBRE_DE_CASES $IFDEF NOMBRE_DE_CASES ‘ Si NOMBRE_DE_CASES a été défini $ELSE ‘ Si NOMBRE_DE_CASES n’a pas été défini $ENDIF Indique au compilateur de compiler une partie de code dans le cas où un mot clé est défini et une autre partie de code si ce mot clé n’est pas défini. C’est très pratique pour fabriquer un programme qui peut être adapté à plusieurs utilisations : par exemple, changer facilement le titre d’un programme, ou d’autres idées du même genre. - 1 - RAPIDQ $IFNDEF NOMBRE_DE_CASES ‘ Si NOMBRE_DE_CASES n’a pas été défini $ELSE ‘ Si NOMBRE_DE_CASES a été défini $ENDIF Même type d’utilisation que $IFDEF , mais avec la logique inversée. 1.2. Déclaration de variables La déclaration de variable se fait au moyen de l’instruction suivante : DIM Nombre AS INTEGER L’expression ci-dessus déclare la variable « Nombre » en tant qu’entier, c’est-à-dire un nombre entier entre –2 milliards et +2 milliards. INTEGER s’appelle un type. De même, on peut déclarer les types suivants : DIM Nombre AS BYTE => Nombre entier entre 0 et 255 DIM Nombre AS WORD => Nombre entier entre 0 et 65535 DIM Nombre AS SHORT => Nombre entier entre –32768 et 32767 DIM Nombre AS Single => Nombre réel à virgules DIM Texte AS STRING => Chaîne de caractères On peut aussi déclarer des tableaux de données : DIM Nombre(10) AS INTEGER => Tableau de 10 entiers Nombre(1) est le premier nombre du tableau, Nombre(2) est le deuxième nombre du tableau, etc. 1.3. Objets de Windows La programmation sous Windows avec RAPIDQ est facilitée par l’utilisation d’objets prêts à l’emploi permettant d’animer les caractéristiques et les objets les plus courants de l’environnement Windows. Les principaux objets utilisés sont : Type Description QFORM Fenêtre de Windows affichant les informations d’un programme. QLABEL Texte non modifiable : étiquette d’une donnée, titre, textes divers affichés en pleine fenêtre QEDIT Zone de saisie de texte modifiable : pour entrer une donnée d’un programme QBUTTON Bouton : pour effectuer une action dans un programme QMAINMENU Menu principal d’un programme : celui qu’on trouve juste sous la barre de titre de la fenêtre du programme - 2 - RAPIDQ Type Description QMENUITEM Items de menu secondaires dans un menu : ce sont les choix de menu que l’on trouve lorsqu’on clique sur un choix du menu principal ; ces items de menu secondaires sont affichés verticalement sous le choix du menu principal sur lequel on a cliqué. QLISTBOX Zone de choix d’un mot ou texte dans une liste de mots ou de textes On peut également utiliser de nombreux autres objets, plus complexes : Type Description QCANVAS Zone rectangulaire dans laquelle le programme peut dessiner ou écrire QCHECKBOX Case à cocher : il s’agit d’un texte avec une case blanche à sa gauche. Si l’utilisateur clique sur le texte ou la case, la case est remplie avec une croix, montrant par exemple que l’option correspondant au texte est sélectionnée QCOMBOBOX Zone de choix modifiable : l’utilisateur peut choisir un mot ou un texte parmi ceux affichés en cliquant dessus, et il peut aussi ajouter un nouveau mot ou texte. Cet objet est utilisé pour proposer une liste de choix modifiable à l’utilisateur QCOOLBTN Bouton spécial permettant des fonctionnalités supplémentaires : bouton avec image, bouton à position levée/enfoncée ou jeu de plusieurs boutons liés entre eux (tous se lèvent quand l’un s’enfonce) QDIRTREE Fenêtre présentant les répertoires, comme sous l’explorateur Windows QFILELISTBOX Fenêtre présentant les fichiers, comme sous l’explorateur Windows QFONTDIALOG Fenêtre présentant un choix de police de caractères, comme sous Windows QGAUGE Barre de progression, allant de 0% à 100% pour indiquer la progression d’une action longue sous Windows QGROUPBOX Zone permettant de grouper différents objets dans une même zone QIMAGE Zone permettant d’afficher une image (fichier .bmp) QOPENDIALOG Fenêtre proposant l’ouverture d’un fichier, comme cela est fait sous Windows QOVALBTN Bouton de forme ovale QPOPUPMENU Menu apparaissant là où l’utilisateur a cliqué (exemple de menu contextuel apparaissant dans Windows sur le bureau lorsqu’on clique avec le bouton droit) QRADIOBUTTON Bouton de type radio, permettant à l’utilisateur de choisir une option parmi plusieurs, en cliquant sur des zones de texte comportant à gauche un rond blanc, rempli d’un point noir pour l’option choisie QRICHEDIT Zone d’édition de texte, avec de nombreuses possibilités d’édition standard, telles que celles qu’on trouve dans un traitement de texte QSAVEDIALOG Fenêtre proposant la sauvegarde d’un fichier, comme cela est fait sous Windows - 3 - RAPIDQ Type Description QSCROLLBAR Barre de défilement identique à ce qui est fait sous Windows QSCROLLBOX Fenêtre possédant des barres de défilement verticale et horizontale QSTATUSBAR Barre d’état située en général en bas d’une fenêtre, permettant au programme d’afficher son état et des informations diverses. On trouve un exemple de barre d’état dans Word ou Excel. QTABCONTROL Fenêtre présentée avec des onglets, permettant la sélection de diverses fonctionnalités QTRACKBAR Curseur PRINTER Gestionnaire des imprimantes QBITMAP Gestion des images BMP. Restitution et sauvegarde de ces images QFONT Spécification d’une police de caractère, pour utilisation dans un objet de Windows QMEMORYSTREAM Allocation de mémoire vive et manipulation QSPLITTER Ligne séparatrice déplaçable à l’intérieur d’une fenêtre QTIMER Horloge permettant de lancer une fonction à intervalles réguliers QDXIMAGELIST Stockage d’une liste d’images pour la programmation 3D par DirectX (pour les jeux vidéo) QDXSCREEN Création et gestion d’une fenêtre type DirectX (pour les jeux vidéo) QDXSOUND Création et gestion d’un environnement DirectSound (pour les jeux vidéo) QDXTIMER Horloge permettant de lancer une fonction à intervalles réguliers. Cette horloge est de haute précision et adaptée à l’environnement DirectX QD3DFACE Mise en œuvre de l’environnement graphique Direct3D avec des objets constitués de Faces Les propriétés ou fonctions utilisables pour chaque objet peuvent être utilisées ou appelées par la syntaxe suivante : DIM Form AS QFORM => Déclare un objet QFORM Form.Height = 40 => Définit la hauteur de la fenêtre Form.Center => Indique le centrage de la fenêtre Form.ShowModal => Affiche la fenêtre sous Windows Autrement dit, on utilise le nom de l’objet suivi d’un point, et suivi lui-même du nom de la propriété ou de la fonction à utiliser. 1.4. Fonctions et sous-programmes Le language RAPIDQ permet de définir des fonctions et des sous-programmes. Un sous-programme est un morceau de code en BASIC qui peut être « appelé » par un autre morceau de code en BASIC. Ceci est très utile chaque fois qu’un morceau de code doit être utilisé à plusieurs endroits dans un programme. Par exemple, si l’on veut écrire un texte changeant dans un bouton, on écrira le sous- programme ci-dessous : - 4 - RAPIDQ SUB TexteBouton(Texte AS STRING, Bouton AS QBUTTON) Bouton.Caption = Texte END SUB Et dans le programme principal, on verra les lignes suivantes : DIM MonBouton AS QBUTTON … TexteBouton(« Coucou », MonBouton) … TexteBouton(« Bonjour », MonBouton) Ceci permettra de mettre le texte « Coucou », puis à un autre moment, le texte « Bonjour » sur le bouton MonBouton . Une fonction est un morceau de code en BASIC qui peut être « appelé » par un autre morceau de code en BASIC, et qui peut renvoyer une valeur au programme qui l’a appelée. On peut par exemple créer une fonction qui fait une somme. FUNCTION Somme(Nombre1 AS INTEGER, Nombre2 AS INTEGER) AS INTEGER Somme = Nombre1 + Nombre2 END FUNCTION Et dans le programme principal, on verra les lignes suivantes : DIM Nb1, Nb2, Total AS INTEGER Total = Somme(Nb1, Nb2) Ceci permet de calculer la somme de Nb1 et de Nb2 , et de mettre le résultat dans Total . 1.5. Eléments de base du langage BASIC de RAPIDQ 1.5.1. Les opérateurs a) Opérateurs arithmétiques ème - Si Chaine est une STRING , alors Chaine[3] représente le 3 caractère de cette chaîne de caractères. - Pour calculer 2 au carré, il faut écrire 2 ^ 2 . - La multiplication se note * : 4 fois 3 s’écrit : 4 * 3 . - La division se note / : 4 divisé par 2 s’écrit : 4 / 2 . - Le reste de la division de 15 par 10 s’écrit : 15 MOD 10 . b) Opérateurs logiques - Pour tester si a est égal à b, on écrit : IF (a = b) THEN … END IF - Pour tester si a est différent de b, on écrit : - 5 - RAPIDQ IF (a <> b) THEN … END IF - Pour tester si a est inférieur à b, on écrit : IF (a < b) THEN … END IF - Pour tester si a est supérieur à b, on écrit : IF (a > b) THEN … END IF - Pour tester si a est inférieur ou égal à b, on écrit : IF (a <= b) THEN … END IF - Pour tester si a est supérieur ou égal à b, on écrit : IF (a >= b) THEN … END IF - Pour tester si a est égal à b et c est égal à d, on écrit : IF ((a = b) AND (c = d)) THEN … END IF - Pour tester si a est égal à b ou c est égal à d, on écrit : IF ((a = b) OR (c = d)) THEN … END IF 1.5.2.