Traduction des structures répétitives en Visual Basic

Transcription

Traduction des structures répétitives en Visual Basic
Licence 2ème année - NTE 3 – 2005-06
Bernard Maurin
[email protected]
NTE 3 – Algorithmique et programmation Visual Basic
TD 6 : Traduction des structures répétitives en Visual Basic
Notions de référence de la séance 2
Structures répétitives : FOR, DO … LOOP
Le but de cette séance est de déterminer factoriel n, avec les 3 structures répétitives vues en
algorithmie.
I – Syntaxe de la structure répétitive Pour :
For valeur1 = 1 To valeur2
Instruction(s)
Next
NB : Si valeur2 < valeur1, la boucle n’est pas exécutée
II – Traduire en VB l’algorithme ci-dessous.
Algorithme Factoriel_Pour
Var F : réel ; Message : Chaîne, n : entier ; i : entier
Début
Lire ("Donner n (n>=0)" ; n)
Si n >= 0 Alors
F=1
Pour i = 1 à n faire
F := F *i
Fin Pour
Message := "Factoriel(" ; n ; ")= " ; F
Ecrire (Massage)
Sinon
Ecrire("Donner une valeur positive ou nulle")
Fin Si
Fin
1° phase : Conception de l’interface graphique
L’interface est ici en mode exécution.
Principaux objets (ou « contrôles ») :
Type d’objet
Zone de texte
Name
ZT_Saisie
Caption ou Text
vide
Etiquette
Bouton de commande
Et_Résultat
BC_Calculer
vide
Calculer
Bouton de commande
Feuille
BC_Quitter
Quitter
F_Factoriel_Pour Factoriel avec
boucle Pour
Particularités
Propriété TabIndex = 0 (pour être
sûr d’avoir le focus à l’exécution)
Propriété Default = True
Frapper « Entrée » revient à
cliquer sur BC_Calculer
2° phase : Détermination des événements
ƒ
Evénement « Click » sur BC_Calculer : Lire n sur ZT-Saisie.Text. Tester si n est
supérieur ou égal à 0 ; si oui, calculer n ! et éditer n ! sur ET_Résultat.Caption, sinon
éditer un message d’erreur à l’aide de MsgBox
ƒ
Evénement « Click » sur BC_Quitter : mettre fin au programme.
Bernard Maurin
Programmation – séance 6
2/4
3° phase : Ecriture du code
Rappel : Une manière simple pour faire générer les en-têtes des procédures événementielles
souhaitées est de faire un double-clic sur les boutons de commandes.
NB : Bien remarquer que ce programme traite le cas où n = 0, car dans ce cas la boucle n’est pas
exécutée et F reste à 1 (qui est facoriel(0)).
Enregistrer votre travail dans votre répertoire et les sous-répertoires suivants. Ex :
Mes Documents/ Maurin/ séance 6/ factoriel Pour.
III –Structure répétitive Répéter
Enregistrer le projet sous un nom différent (fichiers frm et vbp)
Pour éviter d’avoir à refaire l’interface dans un nouveau projet, il est préférable d’enregistrer le
projet précédent sous un autre nom, par exemple dans un sous-répertoire « Factoriel Répéter »
(d’abord la feuille puis le projet)
Le code modifié (incomplet) est :
Bernard Maurin
Programmation – séance 6
3/4
NB : Si n = 0 la boucle Do … Loop Until boucle indéfiniment (d’où le test n >= 1).
Compléter le Else pour traiter n = 0 et n < 0.
Naturellement une autre structure du programme est possible : le premier test peut être n >= 0 (cf.
séance 3 d’algorithmie).
IV – Structure répétitive Tant que
Enregistrer le projet précédent sous un nom différent (fichiers frm et vbp) dans un sous-répertoire
« factoriel Tant que »
Syntaxe en VB :
Do While Condition
Instructions(s)
Loop
NB : La boucle n’est pas exécutée si Condition est fausse. Condition étant testée en début de boucle,
cette dernière peut ne jamais être exécutée (selon la valeur de Condition avant la boucle).
Transcrire l’algorithme de la séance 3. Que dire du cas n = 0 ?
V – Complément : tester si le contenu de la propriété Text d’une zone de texte est
numérique.
Non avons vu que la fonction Val() transforme toute chaîne en nombre (0 si les caractères ne sont
pas exclusivement des chiffres ou les signes + et -) ; et que cela évite l’erreur d’exécution « types
incompatibles » dans une affection telle : X = ZT_Saisie.Text (si X est un des types numériques, et
si Text ne contient pas un nombre).
Il est de plus possible de tester le type de la propriété Text d’une zone de texte ; pour ce qui nous
concerne, de savoir si l’on a un nombre écrit sur la zone de texte. Cela grâce à la fonction
IsNumeric(ZT_Saisie.Text), qui est vrai si la propriété Text contient un nombre, et faux sinon.
Refaire la structure répétitive Tant que en testant la valeur de ZT_Saisie.Text à l’aide de la fonction
IsNumeric().
VI – Exercice complémentaire
Faire un projet VB permettant de calculer par récurrence la somme des n premiers nombres entiers
(cf. séance 3). Vérifier dans le même projet que la somme peut aussi être obtenue par la formule
S = n*(n+1)/2. Vous utiliserez une boucle Pour.
Bernard Maurin
Programmation – séance 6
4/4