Vous trouverez sur cette page plein d'astuces et de tutoriels pour l'aide à la création de votre logiciel.
Aide sur les variables
Aujourd'hui nous allons essayer d'éclaircir ensemble plusieurs points fondamentaux sur les variables en Gambas 3.
A) introduction
Une variable est utilisée pour faire certaines actions en fonction de son type.
Exemple :
Une variable de type integer ou float pourra être utilisée pour des opérations mathématiques.
Une variable text pourra être utilisée pour manipuler des chaines de caractères.
B) Déclaration d'une variable.
Pour déclarer une variable, il est important de se poser la question pourquoi elle et surtout pour qui elle va être utilisée.3 cas s'offrent à nous :
Pour déclarer une variable qui sera utilisable par toute la Form, écrivez ceci tout en haut de la Form en dehors de toutes vos méthodes, juste en dessous le texte 'Gambas class comme ci-dessous:
'Gambas class Private mavariable as integer
Pour déclarer une variable qui sera utilisée par tout le logiciel et consultable ou éditable dans toutes les Form, rendez la déclaration Publique comme ceci:
Public mavariable as integer
Enfin, pour déclarer une variable à l'intérieur d'une méthode (Public monbouton_click() par exemple), utilisez la commande Dim comme ceci :
Public monbouton_click() Dim mavariable as integer End Sub
Cette variable ne sera visible qu'à l'intérieur de cette méthode.
Par souci de clarté et surtout pour une optimisation de votre programme, il est très important de n'utiliser au maximum que des variables utilisables en Private et/ou à l'intérieur des méthodes.
Je vous vois immédiatement poser la question:
Mais comment fait-on si on veut interchanger des données entre méthodes?
Il suffit de passer en paramètre la variable et de récupérer le résultat par la commande RETURN
Un exemple concret:
J'envoi à une méthode une variable integer, et je veux récupérer un texte.
Si j'envois 0, alors je veux avoir "Bonjour"
Si j'envois 1, alors je veux avoir "Au revoir"
J'écris ma méthode comme ceci:
Private Sub Quandca(mavariable as integer) as string select case mavariable case 0 Return "Bonjour" Case 1 Return "Au revoir" End Select
Décortiquons ce bout de code:
Private Sub Quandca est une déclaration en privé uniquement visible dans ma form en cours.
(mavariable as integer) je déclare une variable qui sera reçue par l'appel de cette méthode.
As String informe que la commande Return renverra une variable de type String.
Enfin, j'appelle cette méthode ailleurs dans mon programme de cette façon:
Dim montexte as string montexte = Quandca(0)
Attention: Si vous ne mettez rien entre parenthèse, Gambas renverra une erreur en disant qu'il manque un paramètre.
Une dernière chose, Si vous souhaitez utiliser une variable dans tout le programme, déclarez votre variable de type Public et mettez la dans un Module comme ceci :
Dans le module monmodule, ecrivez ceci:
Public mavariable as string
Ainsi dans tout les programme, vous pourrez lire/écrire cette variable comme ceci :
monmodule.mavariable = "J'ai modifié la variable"
Merci pour votre attention.
Conversion heure minutes secondes
Bonjour,
Aujourd'hui une astuce bien pratique pour convertir automatiquement des secondes en Heures/minutes/secondes
Exemple :
Je veux convertir 5000 secondes en heures/minutes/secondes.
Voici le code :
PUBLIC SUB Main() DIM myseconds AS INTEGER = 5000 PRINT Format$(Date(0, 0, 0, 0, 0, 0, myseconds * 1000), "hh nmin ssec") END
Petite explication :
La date ci dessus est écrite sous ce format :
Date(year,month,day,hour,minute,second, millisecond)
C'est pour cela que nous avons multiplié par 1000
Si nous voulions convertir des minutes il aurait fallut écrire :
PRINT Format$(Date(0, 0, 0, 0, 0, 0, Myminutes * 600000), "hh nmin ssec")
Merci pour votre attention.
Manipuler les Bits
La manipulation de bits sous gambas est une chose aisée car il existe beaucoup de fonctions dont voici la liste :
BClr Efface un bit dans un nombre entier.
BSet Positionne un bit dans un nombre entier.
BTst Teste un bit dans un nombre entier.
BChg Inverse un bit dans un nombre entier.
Lsl Décale un nombre entier vers la gauche.
Lsr Décale un nombre entier vers la droite.
Shl / Asl Décale un nombre entier vers la gauche et conserve son signe.
Shr / Asr Décale un nombre entier vers la gauche et conserve son signe.
Rol Rotation d’un entier vers la gauche.
Ror Rotation d’un entier vers la droite.
Par l'intermédiaire de ce petit exemple, vous pourrez suivre l'evolution de votre nombre binaire.
TELECHARGER L'EXEMPLE ICI
Utiliser MOD
Bonjour,
parfois dans le code, nos devons utiliser une routine qui incrémente de 1 puis reboucle à 0 une fois un maximum atteind.
Comme dans cet exemple programme, nous pourrions écrire ce code ci :
Public Sub Button1_Click() Select Case mycounter Case 0 TextBox1.Text = "text for one clic" Inc mycounter Case 1 TextBox1.Text = "text for two clic" Inc mycounter Case 2 TextBox1.Text = "text for three clic" Inc mycounter Case 3 TextBox1.Text = "text for four clic" Inc mycounter Case 4 TextBox1.Text = "text for five clic" Inc mycounter Case 5 TextBox1.Text = "text to return to the beggining" mycounter = 0 End Select LCDLabel1.Value = mycounter End
Ce code fonctionne très bien mais beaucoup de répétition que nous pouvons retirer en utilisant la fonction MOD, et réécrire le code comme ci dessous :
Select Case mycounter Case 0 TextBox2.Text = "text for one clic" Case 1 TextBox2.Text = "text for two clic" Case 2 TextBox2.Text = "text for three clic" Case 3 TextBox2.Text = "text for four clic" Case 4 TextBox2.Text = "text for five clic" Case 5 TextBox2.Text = "text to return to the beggining" End Select mycounter = (mycounter + 1) Mod 6 LCDLabel2.Value = mycounter
L'astuce réside dans cette ligne :
mycounter = (mycounter + 1) Mod 6
Message WARNING
Bonjour,
avec ce petit exemple nous allons voir comment utiliser la boite message.warning et récuperer les actions du bouton.
Le type d'action renvoyée du clic du bouton est INTEGER
Il suffit donc de définir une variable INTEGER et de la lire comme ceci :
DIM mareponse AS Integer
mareponse = Message.Warning("ma question?", "reponse1", "reponse2", "reponse3")
vous pouvez maintenant télécharger l'exemple :
PUBLIC SUB _new() END PUBLIC SUB Form_Open() ME.Center END PUBLIC SUB Button1_Click() DIM mareponse AS Integer mareponse = Message.Warning("aimez vous les radis?", "oui", "non", "pastrop") SELECT CASE mareponse CASE 1 Label2.Text = "vous avez cliqué Oui" CASE 2 Label2.Text = "vous avez cliqué Non" CASE 3 Label2.Text = "pourtant c'est bon les radis !!!" END SELECT END
Utiliser RETURN pour retourner des données
La commande RETURN nous permet de passer un paramètre en retour d'une fonction.
Mais comment pouvons nous retourner plusieurs paramètres ?
Nous pouvons nous servir d'une Classe.
Définition :
Je ne rentrerai pas dans des termes techniques compliqués mais vous présenterai une classe comme un ensemble de fonctions, variables et autres...
Prenons par exemple une classe d'un humain que nous appellerons "TPersonne"
un humain a un poid, une taille, une tête, un caractère. ce sont des paramètres.
nous pouvons donc creer cette classe comme ceci :
PUBLIC lepoid AS Float PUBLIC lataille AS Float PUBLIC limage AS picture PUBLIC caractere AS Integer PUBLIC sensibilite AS String PUBLIC SUB lafonction() AS TPersonne DIM hPersonne AS NEW TPersonne WITH hpersonne .lepoid = 33 .lataille = 125 .limage = Picture["monimage.png"] .caratere = 3 .sensibilite = "vraiement sensible" END WITH RETURN hPersonne END FUNCTION
et pour appeler notre fonction comme ceci:
DIM hPersonne AS TPersonne hPersonne = lafonction() PRINT hPersonne.lepoid
ce qui peut se traduire par le schema suivant pour une bonne comprehension.
Les opérateurs logiques
En Gambas, nous pouvons utiliser les opérateurs logiques dans nos programmes por tester telle ou telle variable..
Les opérateurs sont les même que les autres langages de programmation, à savoir :
NOT
Le non logique NOT renvoi la valeur inverse d'une valeur
sa table de vérité( ou comportement)peut être schématisé par le tableau ci dessous :
X | NON X |
0 | 1 |
1 | 0 |
AND
le ET logique AND peut etre assimilé à un montage electrique série de deux interrupteurs avec une ampoule.
ainsi, il faut que les deux soit fermé pour allumer notre lampe.
Ce qui nous conduit au tableau suivant :
X | Y | X AND Y |
0 | 0 | 0 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
L'application pratique dans gambas est simple .Renvoyer le résultat d'un ET logique de deux nombre.
Comment cela se passe ? si nous réalisons cette exemple soit :
10 AND 25, pour comprendre nous devons convertir ces deux valeurs décimales en binaire soit :
01010 AND 11001, nous obtiendrons d'arpès la table de vérité le résultat suivant : 1000 en binaire soit 8 en décimal.
OR
le OU logique OR peut etre assimilé à un montage electrique parallèle de deux interrupteurs en série avec une ampoule.
ainsi, il faut que un des deux soit fermé pour allumer notre lampe.
Ce qui nous conduit au tableau suivant :
X | Y | X OR Y |
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 1 |
L'application pratique dans gambas est simple .Renvoyer le résultat d'un OU logique de deux nombre.
Comment cela se passe ? si nous réalisons cette exemple soit :
10 OR 25, pour comprendre nous devons convertir ces deux valeurs décimales en binaire soit :
01010 OR 11001, nous obtiendrons d'arpès la table de vérité le résultat suivant : 11011 en binaire soit 27 en décimal.