0% ont trouvé ce document utile (0 vote)
3 vues7 pages

Tuto C# : Créer un minuteur sous VS

Ce document présente un TP sur le développement d'une application de compte à rebours en C# avec Visual Studio. L'application permet à l'utilisateur de régler un minuteur, de démarrer, de mettre en pause et de réinitialiser le décompte, avec des états définis par un diagramme d'états. Des instructions détaillées sont fournies pour créer l'interface utilisateur, coder les fonctionnalités et des suggestions d'amélioration sont également proposées.

Transféré par

resultjkn
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
3 vues7 pages

Tuto C# : Créer un minuteur sous VS

Ce document présente un TP sur le développement d'une application de compte à rebours en C# avec Visual Studio. L'application permet à l'utilisateur de régler un minuteur, de démarrer, de mettre en pause et de réinitialiser le décompte, avec des états définis par un diagramme d'états. Des instructions détaillées sont fournies pour créer l'interface utilisateur, coder les fonctionnalités et des suggestions d'amélioration sont également proposées.

Transféré par

resultjkn
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

S4 – Développement logiciel

Premiers pas avec C# et Visual Studio

Gestion des événements et du temps


Objectifs : être capable de coder une application simple sous Windows en utilisant C# et
Visual Studio à partir d’un cahier des charges, d’un diagramme d’état et d’un « squelette » de
code donnés.

Présentation de l’application à coder


Le but de ce TP est de réaliser une application compte à rebours (un minuteur) en utilisant Visual
Studio et C#.
L’allure de l’interface de l’application est la suivante.

Visual Studio C# - Gestion de temps et événements 1


Au démarrage, en jouant sur les flèches, l’utilisateur peut régler la durée du décompte en seconde
(par exemple 180 s pour la cuisson d’un œuf à la coque en 3 minutes). Dans cette phase, la valeur
affichée « temps restant » suit la valeur de « durée programmée ».
Une fois la durée programmée, dès que l’utilisateur appuie sur le bouton Start (bouton de droite), la
valeur affichée « temps restant » décrémente chaque seconde. L’affichage du bouton de droite
« Start » devient « Stop ».
Pendant cette phase, à tout moment l’utilisateur peut mettre en pause le décomptage en appuyant sur
Stop. Après l’appui, dans la phase de pause, l’affichage du bouton de droite « Stop » devient
« Start ».
En appuyant sur Start, le décompte reprends à la valeur où il s’était arrêté, le bouton de droite
affiche maintenant « Stop ».
A la fin du décompte, le message « C’est fini ! » s’affiche en rouge au milieu de la fenêtre, le
compte à rebours « temps restant » affiche 0, le bouton de droite affiche « Terminé ! » et l’appui
sur ce bouton n’a plus aucun effet. Voir figure ci dessous.

L’utilisateur n’a pas d’autre choix que d’appuyer sur le bouton Reset pour recommencer un cycle.
Remarque : dans n’importe quelle phase, à tout moment, un appui sur Reset arrête le décompte et
réinitialise le valeur temps restant à la durée programmée.

Visual Studio C# - Gestion de temps et événements 2


Représentation machine à états
On a représenté le fonctionnement de l’application par le diagramme d’états suivant :

Remarque : ce diagramme a été dessiné avec l’outil en ligne [Link]


On a défini ici une variable Etat (variable d’état du système) qui peut prendre 4 valeurs (entre 0 et
3). La valeur de cette variable d’état est affichée pour débogage en bas à gauche de l’écran principal
de l’application.

Questions préliminaires
Q.1) Quel est l’état du système au démarrage ? Justifiez.
Q.2) Comparez les différences entre l’appui sur Reset et l’appui sur StartStop.
Q.3) Que se passe-t-il si durée restante =0 alors que le système se trouve dans l’état 2 ?
Q.4) Compléter le tableau suivant.

Visual Studio C# - Gestion de temps et événements 3


On utilisera les méthodes nommées Raz(), Marche(), Arret(), Fin() qui permettent de passer dans
chacun des états :
Exemple : la méthode Raz() permet au système d’évoluer dans l’état noté RAZ (etat =2) sur le
diagramme d’état.
Les actions effectuées dans cette méthode Raz() sont celles définies dans le diagramme d’état.

événement Condition Méthode ou Action


Démarrage système X Raz()
Appui sur Reset X Raz()
Etat = 0
Etat = 1
Appui sur StartStop
Etat = 2
Etat = 3
Etat = 1
Chaque seconde

Changement saisie X Modifier tRestant


durée

Visual Studio C# - Gestion de temps et événements 4


Codage de l’application

Travaux pratiques

Créer l’interface utilisateur et configurer les contrôles


Ouvrir Visual Studio, créer un nouveau projet. Se placer en mode concepteur et y placer les
contrôles suivants (il est conseillé de nommer les contrôles conformément à la liste suivante) :
numericUpDown : saisieDuree
boutons : bouton de gauche : boutonReset ; bouton de droite : boutonStartStop
label : labelTrestant (affichage du temps restant), labelFin (message « C’est fini »), labelDebug
(affichage de la variable état).
Timer : timer1 : c’est ce composant qui réalisera le cadencement du minuteur/compte à rebours. Il
sera réglé à une période de 1s.
Configurer chaque contrôle dans le respect du cahier des charges.
Vous aurez aussi besoin de créer d’autres labels « fixes » mais leur nom importe peu car ils
n’interagissent pas avec le programme.

Coder
Un « squelette » de l’application à coder est donné en annexe.
Dans Visual studio, en mode code, pour coder l’application :
- vous créerez deux variables locales entières nommées etat (la variable d’état de la machine à états)
et tRestant (qui représente le temps restant à décompter).
- vous créerez quatre méthodes nommées RAZ(), Marche(), Arret(), Fin(). Ces méthodes
correspondent aux actions effectuées dans l’état correspondant, conformément au diagramme d’état.
- vous coderez ensuite les actions correspondant à chaque événement, conformément au diagramme
d’état et au tableau évenements/conditions/méthodes
Conseil n°1 : pour que la machine à état démarre dans l’état initial désiré, il faut définir les actions
dans la méthode Form1, juste après l’instruction InitializeComponent() ;
Conseil n° 2 : la structure « switch case » est particulièrement efficace pour coder une machine à
états. Celle-ci pourra être implémentée dans la méthode boutonStartStop_Click().

Visual Studio C# - Gestion de temps et événements 5


Les bonus
Pour ceux qui ont terminé en avance, voici quelques pistes d’améliorations en questions bonus.
Utiliser une barre de progression diminuant progressivement durant le décompte, conformément à
l’image suivante.

Implémenter un beep en fin de décomptage ou un fichier wav.


Effectuer les finitions d’usage : icônes, etc.

Visual Studio C# - Gestion de temps et événements 6


Annexe : « squelette » de l’application à coder
namespace chronoA
{
public partial class Form1 : Form
{
int etat ;
int tRestant;

public Form1()
{
InitializeComponent();
// à compléter
}

public void RAZ()


{ // les actions que l'on fait en entrant dans l'etat
// à compléter
etat = 2 ;
}

public void Marche()


{
// à compléter
}

public void Arret()


{
// à compléter
}

public void Fin()


{
// à compléter
}

private void boutonReset_Click(object sender, EventArgs e)


{
// à compléter
}

private void boutonStartStop_Click(object sender, EventArgs e)


{
// à compléter
}

private void saisieDuree_ValueChanged(object sender, EventArgs e)


{
// à compléter
}

private void timer1_Tick(object sender, EventArgs e)


{
// à compléter
}
}

}
}

Visual Studio C# - Gestion de temps et événements 7

Vous aimerez peut-être aussi