Fil d'Ariane
Mis à jour le lundi 19 décembre 2016
  • 20 heures
  • Facile

Ce cours est visible gratuitement en ligne.

Ce cours existe en livre papier.

Ce cours existe en eBook.

Vous pouvez être accompagné et mentoré par un professeur particulier par visioconférence sur ce cours.

J'ai tout compris !

Jouer avec les mots, les dates

Connectez-vous ou inscrivez-vous pour bénéficier de toutes les fonctionnalités de ce cours !

Nous venons de voir comment travailler avec des variables de type numérique.

Mais votre clavier vous permet aussi d'écrire des mots, non ? Il faut donc désormais apprendre à utiliser ses capacités. Nous allons donc nous tourner vers les variables de type caractère et chaîne de caractères.

Et puis pour continuer dans les nouveaux types de variables, nous allons aussi en profiter pour étudier les variables temporelles de type date.

D'ici peu de temps vous pourrez modifier des mots aussi rapidement que des nombres.

Les chaînes de caractères

Remplacer des caractères

On va commencer par la fonction la plus simple : le Replace() qui, comme son nom l'indique, permet de remplacer des caractères ou groupes de caractères au sein d'une chaîne.

La syntaxe est la suivante :

Dim MonString As String = "Phrase de test"
MonString = MonString.Replace("test", "test2")

Le premier argument de cette fonction est le caractère (ou mot) à trouver, et le second, le caractère (ou mot) par lequel le remplacer.
Dans cette phrase, le code remplacera le mot « test » par « test2 ».

Si vous avez bien assimilé le principe des fonctions, des variables peuvent être utilisées à la place des chaînes de caractères en « dur ».

Mettre en majuscules

La fonction ToUpper() se rattachant à la chaîne de caractères en question (considérée comme un objet) permet cette conversion.
Elle s'utilise comme suit :

Dim MonString As String = "Phrase de test"
MonString = MonString.ToUpper()

Cette phrase sera donc mise en MAJUSCULES.

Mettre en minuscules

Cette fonction s'appelle ToLower() ; elle effectue la même chose que la précédente, sauf qu'elle permet le formatage du texte en minuscules.

Dim MonString As String = "Phrase de test"
MonString = MonString.ToLower()

Ces petites fonctions pourront sûrement nous être utiles pour l'un de nos TP. :p

Les dates, le temps

Nous passons donc aux dates et à l'heure. Il s'agit d'un sujet assez sensible puisque, lorsque nous aborderons les bases de données, la syntaxe d'une date et son heure sera différente de la syntaxe lisible par tout bon francophone (âgé de plus de deux ans).

Tout d'abord, pour travailler, nous allons avoir besoin d'une date. Ça vous dirait, la date et l'heure d'aujourd'hui ? Nous allons utiliser l'instruction Date.Now, qui nous donne… la date et l'heure d'aujourd'hui, sous la forme suivante :

16/06/2009 21:06:33

La première partie est la date ; la seconde, l'heure.

Nous allons ainsi pouvoir travailler. Entrons cette valeur dans une variable de type… date, et amusons-nous !

Récupérer uniquement la date

La première fonction que je vais vous présenter dans ce chapitre est celle qui convertit une chaîne date, comme celle que je viens de vous présenter, mais uniquement dans sa partie « date ».

Je m'explique : au lieu de « 16/06/2009 21:06:33 » (oui, je sais, il est exactement la même heure qu'il y a deux minutes…), nous obtiendrons « 16/06/2009 ».

ToShortDateString()

Cette fonction s'utilise sur une variable de type date. J'ignore si vous vous souvenez de mon petit interlude sur les objets et fonctions, au cours duquel je vous ai expliqué que le point (« . ») servait à affiner la recherche. Nous allons donc utiliser ce point pour lier le type (qui est également un objet dans notre cas) et cette fonction.

Cette syntaxe que vous avez, je pense, déjà écrite vous-mêmes (MaVariableDate.ToShortDateString()), convertit votre date en date sans heure, mais flotte dans les airs… Il faut bien la récupérer, non ? Pour ce faire, affichons-la !

Pour ma part, je me retrouve avec ceci :

Module Module1

    Sub Main()
        'Initialisation des variables
        Dim MaVariableDate As Date = Date.Now
        'Écriture de la forme courte de la date
        Console.WriteLine(MaVariableDate.ToShortDateString)
        'Pause
        Console.Read()
    End Sub

End Module

Voici le résultat qui est censé s'afficher dans la console :

16/06/2009

Je ne comprends pas : j'ai stocké le résultat dans une variable intermédiaire de type date et je n'obtiens pas la même chose que toi !

Ah, l'erreur ! La variable de type date est formatée obligatoirement comme je l'ai montré au début, ce qui veut dire que si vous y entrez par exemple uniquement une heure, elle affichera automatiquement une date.

Comment dois-je faire, dans ce cas ?

Bah, pourquoi ne pas mettre cela dans un string ? (Vous n'aimez pas les string ? :p )

La date avec les libellés

Seconde fonction : récupérer la date avec le jour et le mois écrits en toutes lettres. Rappelez-vous l'école primaire, où l'on écrivait chaque matin « mardi 16 juin 2009 » (non, je n'ai jamais écrit cette date à l'école primaire !).

Donc, pour obtenir cela, notre fonction s'intitule ToLongDateString() (je n'ai pas trop cherché :D ).

Le résultat obtenu est Mardi 16 Juin 2009.

L'heure uniquement

Voici la fonction qui sert à récupérer uniquement l'heure :

ToShortTimeString()

Ce qui nous renvoie ceci :

21:06
L'heure avec les secondes

Même chose qu'au-dessus, sauf que la fonction se nomme :

ToLongTimeString()

Cela nous renvoie :

21:06:33

TP sur les heures

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 (heures:minutes:secondes). Heureusement que vous avez lu ce qui est indiqué précédemment, 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 ! :D ) ; 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.

System.Threading.Thread.Sleep()

La seconde servira à effacer l'écran de la console ; si vous avez déjà fait du Bash, c'est pareil :

Console.Clear()

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 ! :o

Vous avez terminé ? Bon, dans ce cas, faisons le compte-rendu de ce que nous venons de coder.

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.

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 :

----------------
--- 21:10:11 ---
----------------

Notez que vous n'êtes pas obligés de saisir des petits tirets comme je l'ai fait. :D

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 ?

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 !

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.

  • Nous venons de voir différentes fonctions disponibles sur une chaîne de caractères.

  • Une chaîne de caractères a le type String.

  • Une date et une heure sont contenus dans des variables de type Date.

Exemple de certificat de réussite
Exemple de certificat de réussite