Accueil > QBasic > QBasic – L’heure, la date, le temps

QBasic – L’heure, la date, le temps

This entry is part 29 of 30 in the series QBasic - Tutoriel
  1. L’heure (TIME$)
  2. La date (DATE$)
  3. 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 :


  • « hh »

  • « hh:mm »

  • « hh:mm:ss »


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

Series Navigation«QBasic – Le langage machine et la sourisQBasic – Le clavier»
Categories: QBasic Tags:
  1. Pas encore de commentaire
  1. Pas encore de trackbacks