Sur ce, j'espère que vous avez bien compris comment manipuler les dates, les heures et les chaînes de caractères.
Nous allons faire un mini-TP.
L'horloge
Eh oui, je ne suis pas allé chercher bien loin : ce TP aura pour but de mettre en œuvre une
horloge parlante (heures:minutes:secondes).
Heureusement que vous avez lu ce qui est indiqué au-dessus, car vous aurez besoin de la fonction qui renvoie seulement les heures, les minutes et les secondes.
Je ne vais pas vous mâcher tout le travail, parce que vous devenez grands (dans le domaine du Visual Basic, en tous cas !

) ; je vais donc me contenter de vous énumérer les fonctions dont vous aurez besoin pour mener à bien votre travail.
La première fonction consiste à mettre en « pause » le programme pendant une durée passée en argument. Attention : cette valeur s'exprime en
millisecondes.
Code : VB.NET | System.Threading.Thread.Sleep()
|
La seconde servira à effacer l'écran de la console ; si vous avez déjà fait du
Bash, c'est pareil :
Code : VB.NET
Avec ces deux fonctions et les connaissances du reste du chapitre, vous devez être capables de réaliser cette horloge.
Non, je ne vous aiderai pas plus !
N'insistez pas !
Vous avez terminé ? Bon, dans ce cas, faisons le compte rendu de ce que nous venons de coder.
Secret (cliquez pour afficher)Code : VB.NET 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 | Module Module1
Sub Main()
'Initialisation des variables
Dim MaVariableDate As Date
'Boucle infinie /!\
While 1
'Récupération de la date actuelle
MaVariableDate = Date.Now
'Affichage des heures, minutes, secondes
Console.WriteLine("----------------")
Console.WriteLine("--- " & MaVariableDate.ToLongTimeString & " ---")
Console.WriteLine("----------------")
'Pause de 1 seconde
System.Threading.Thread.Sleep(1000)
'Efface l'écran de la console
Console.Clear()
End While
End Sub
End Module
|
Je vais vous expliquer mon code.
J'ai tout d'abord déclaré une variable de type
date, ce que vous avez également dû faire. Ensuite, j'ai créé une boucle infinie avec un
While 1.
Ce n'est pas bien ! C'était nécessaire dans ce cas pour réaliser un TP simple, et parce que le programme n'était censé faire que cela.
Le programme tourne donc jusqu'à ce qu'on l'arrête dans cette boucle.
Pourquoi While 1 ?
Parce que le « 1 » est toujours vrai, cela signifie donc : « Tourne, mon grand, ne t'arrête pas ! »
Au début de cette boucle, je récupère la date actuelle et l'écris dans ma variable.
J'affiche cette variable en utilisant la fonction permettant d'en extraire l'heure, les minutes et les secondes.
Je fais une pause d'une seconde (
1000 ms = 1 s
).
J'efface ensuite l'écran, puis je recommence, et ainsi de suite.
On obtient donc ceci :
Code : Console | ----------------
--- 21:10:11 ---
---------------- |
Notez que vous n'êtes pas obligés de saisir des petits tirets comme je l'ai fait.
Euh... pourquoi n'as-tu pas mis par exemple « 100 ms », pour que ce soit plus précis ?
Parce que, que j'utilise « 100 ms », « 1 s » ou même « 1 ms », cela aura la même précision. L'horloge change à chaque seconde, pourquoi donc aller plus vite qu'elle ?
Simplification du code
Pourquoi passer par une variable ? Pourquoi ne pas entrer l'instruction qui récupère l'heure actuelle et la formater en une seule ligne ?
Code : VB.NET 1
2
3
4
5
6
7
8
9
10
11
12
13 | Module Module1
Sub Main()
'Boucle infinie /!\
While 1
'Affichage des heures, minutes, secondes
Console.WriteLine(Date.Now.ToLongTimeString)
'Pause de 1 seconde
System.Threading.Thread.Sleep(1000)
'Efface l'écran de la console
Console.Clear()
End While
End Sub
End Module
|
Voilà mon exemple de simplification du code. Je vous l'avais bien dit : les programmeurs sont fainéants !
Mais, tu ne nous avais pas expliqué ce raccourci !
Tatata, je l'ai expliqué lorsque j'ai parlé des fonctions et des objets. Il n'y a pas de limite d'objets que l'on peut relier, on a donc le droit de faire ça.
Attention : c'est plus simple mais pas toujours plus clair.