
|
|
|
QBasic - L'heure, la date, le temps
|
Autre langage disponible pour cet article :
Rubrique : QBasic
lundi 25 mars 2002 18:44
|
Voir les commentaires pour QBasic - L'heure, la date, le temps
|
- L'heure (TIME$)
- La date (DATE$)
- ON TIMER GOSUB
Outre TIMER que l'on a utilisé il y a quelques temps pour initialiser le générateur de nombres
aléatoire avec RANDOMIZE, QBasic posséde plusieurs fonctions qui lui permettent d'exploiter le
temps.
L'heure (TIME$)
TIME$ est à la fois une fonction et une instruction. La fonction renvoie l'heure actuelle
et l'instruction la définit.
Pour afficher l'heure dans le coin en haut à droite, on peut écrire :
SCREEN 0 ' Mode texte uniquement
CLS
DO
Heure$ = TIME$ ' Enregistrement de l'heure
LOCATE 1, 80 - LEN(Heure$) ' Calcul de l'emplacement
PRINT Heure$;
LOOP UNTIL INKEY$ <> "" ' Appuyez sur une touche pour quitter
Vous remarquez à juste titre que l'heure est transmise sous la forme d'une chaîne de caractères.
Donc, pour pouvoir comparer des heures différentes, il vous faudra jouer les fonctions permettant
de les traiter (VAL, LEFT$, MID$...)
Pour définir l'heure, on agit à l'inverse. On affecte à TIME$ une chaîne de caractères
qui contient l'heure à définir.
Le format de la chaîne de caractère doit avoir l'un des formats suivant :
Si les minutes et/ou les secondes ne sont pas précisées, leur valeur est alors définie à réro.
Exemple :
PRINT "Heure avant "; TIME$
TIME$ = "20:35:45" ' Définition de l'heure du système à 20h35mn45s
PRINT "Heure après "; TIME$
La date (DATE$)
À l'instar de TIME$ pour l'heure, DATE$ est également une fonction et une instruction.
Donc, pour afficher la date dans le coin droit, on écrira :
SCREEN 0 ' Mode texte uniquement
CLS
DO
Dat$ = DATE$ ' Enregistrement de la date
LOCATE 1, 80 - LEN(Dat$) ' Calcul de l'emplacement
PRINT Dat$;
LOOP UNTIL INKEY$ <> "" ' Appuyez sur une touche pour quitter
Comme pour TIME$, c'est une chaîne de caractères qui est transmise.
Maintenant, pour définir la date, on fera comme pour définir l'heure avec TIME$ : on lui affectera
une chaîne de caractères qui contiendra la date, tout en sachant que la date peut revêtir un des
quatre format suivant :
- mm-jj-aa
- mm/jj/aa
- mm-jj-aaaa
- mm/jj/aaaa
En hommage à Paco Rabanne, on peut donc écrire (n'ayons pas peur) :
PRINT "Date avant "; DATE$
DATE$ = "9/9/99" ' On définit la date au 9 août 1999 :)
PRINT "Date après "; DATE$
ON TIMER GOSUB
Pour ceux qui ont déjà pratiqué un peu la programmation Windows avec Delphi, Visual Basic ou même
Visual C++, on peut comparer ON TIMER à un contrôle Timer.
En effet, avec ON TIMER, on peut faire se répeter un certain groupe d'instructions à intervalle
régulier.
La syntaxe de ON TIMER GOSUB est la suivante :
ON TIMER(Interval%) GOSUB label
Si vous avez lu la partie consacrée à la manette de jeu, vous constaterez qu'il y a quelques similitudes
entre ON TIMER et ON STRIG.
Et oui, comme pour la manette, il faut intervenir sur l'état de l'interception d'évenements. Et
ce sont les même mots-clefs que l'on retrouve, à ceci prêt que (vous l'aurez deviné) en lieu et
place de STRIG, on écrira TIMER :
- TIMER ON active l'intercéption d'évenements
- TIMER OFF le désactive
- TIMER STOP suspend de façon temporaire l'intercéption. On la réactive on utilisant
une nouvelle fois
TIMER ON
Le code suivant chande la couleur d'un cercle de façon aléatoire à l'interval de 1 seconde :
SCREEN 13 ' 256 couleurs, c'est mieux !
CLS
RANDOMIZE TIMER
ON TIMER(1) GOSUB Clignoter ' On va à la procédure Clignoter toute les 1 secondes
TIMER ON ' Activation de l'intercéption d'évenements
DO
LOOP UNTIL LEN(INKEY$) ' Une touche pour finir (ici avec LEN(INKEY$))
END
Clignoter:
Couleur% = RND * 255 ' Définition de la couleur à employer
CIRCLE(160, 100), 50, Couleur%
PAINT(160, 100), Couleur% ' Remplissage du cercle
RETURN
|
Voir les commentaires pour QBasic - L'heure, la date, le temps
|
|
|
|