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