INITIATION à la PROGRAMMATION STRUCTUREE Qu’est-ce qu’un programme ? Les règles de la programmation structurée Définitions
Qu’est-ce qu’un programme ? Définitions C ’est un ensemble de commandes, écrit dans un langage de programmation, qui permet de matérialiser un certain traitement, conformément à un cahier des charges. Qu’est-ce qu’un programme ? En programmation structurée son déroulement est séquentiel. Il peut contenir et/ou utiliser des procédures et fonctions, qui sont elles-mêmes construites comme des programmes.
Les quatre règles de la programmation structurée concernent la convivialité la modularité la lisibilité la programmation
Pensez à soigner les interfaces UTILISATEUR La convivialité Pensez à soigner les interfaces UTILISATEUR donnez lui envie d ’utiliser vos programmes ne posez pas de questions ambiguës aidez le, mais ne le sous-estimez pas informez le des possibilités contextuelles faites un effort de présentation des résultats
On n ’écrit plus de gros programmes La modularité On n ’écrit plus de gros programmes Un programme doit être décomposé en petits modules, qu’on appelle des procédures ou fonctions, tous bien définis et individualisés, dont la longueur ne dépasse pas une page A4 Ceci facilite énormément la compréhension, la maintenance, et l ’exécution du programme
La lisibilité des programmes Indispensable à la mise au point et à la maintenance des programmes il faut documenter le programme en ajoutant des commentaires judicieux pour en faciliter la compréhension rapide la mise en page des instructions doit en faciliter la délimitation et la compréhension
La lisibilité des programmes (suite) on ne doit surtout pas personnaliser les programmes : les noms de procédures, fonctions, variables, doivent évoquer sans ambiguïté leurs rôles respectifs, pour quiconque
Exemple d ’un programme insupportable Private Sub P1_AfterUpdate() If P1.Value <> "" Then n = n + 1 r = Val(P1.Value) If r = (nb1 * nb2) Then A.ForeColor = 16711680 A.Caption = "bravo" Else: e = e + 1 A.ForeColor = 255 A.Caption = "faux" & " : déja " & e & " erreurs" End If End Sub
Le même programme : supportable Private Sub Reponse_AfterUpdate() If reponse.Value <> "" Then nbfois = nbfois + 1 rep = Val(reponse.Value) If rep = (nb1 * nb2) Then bilan.ForeColor = 16711680 bilan.Caption = "bravo" Else: err = err + 1 bilan.ForeColor = 255 bilan.Caption = "faux" & " : déja " & err & " erreurs" End If End Sub
La Programmation Orientée Objet (POO) Elle a été conçue pour pallier aux problèmes de maintenance évolutive que pose la programmation fonctionnelle descendante. Nous n ’aborderons en LO10 que quelques notions de la POO nécessaires à la programmation en Visual Basic
Contrairement à la programmation classique qui sépare les données des programmes, la POO repose sur des entités, nommées OBJETS, dans lesquelles sont combinées données et code de programmation. Les objets qui partagent les mêmes propriétés et les mêmes méthodes sont regroupés dans une classe.
regrouper dans une entité unique Le concept d ’OBJET Il est issu de l ’objectif suivant : regrouper dans une entité unique les données décrivant l ’objet : ce sont ses propriétés et les procédures/fonctions permettant de manipuler l ’objet : ce sont ses méthodes
Dans VBA il existe un objet appelé CommandButton Exemple d ’objet Dans VBA il existe un objet appelé CommandButton Il a comme propriétés : son nom une taille un intitulé : par exemple « IMPRIMER » une couleur etc...
Cet objet a comme méthode une procédure correspondant à son rôle. La procédure sera déclenchée lorsqu ’un certain événement se produira.
C ’est le programmeur qui choisit et programme la méthode. Pour le bouton « IMPRIMER » la procédure va faire imprimer le document. L ’événement déclencheur sera un « click » de l ’utilisateur sur ce bouton.
La programmation VBA est composée en majeure partie d ’objets que l ’on peut manipuler conjointement de 2 façons : en définissant, modifiant, testant, ou mémorisant ses propriétés en utilisant les méthodes de l ’objet que l ’on complète par du code
Conventions de lecture écriture des instructions Dans une ligne de code on peut : soit définir une propriété soit mémoriser une propriété dans une variable soit faire exécuter une méthode Mais on ne peut pas faire deux de ces traitements à la fois sur la même ligne
Quelques propriétés très utilisées CAPTION pour les objets Intitulé (Label), bouton de commande (CommandButton) Désigne le texte qui apparaît dans le bouton à l’écran TEXT pour les objets Zone de Texte (TextBox) Désigne le texte affiché ou modifié par l’utilisateur VALUE pour les objets barre de défilement (ScrollBar) , toupie (SpinButton), bouton d’option Désigne la valeur choisie par l’utilisateur
Quelques propriétés très utilisées (suite) MAXLENGTH pour les objets Zone de Texte (TextBox) Désigne le nombre maximum de caractères acceptés à la saisie PASSWORDCHAR pour les objets Zone de Texte Désigne le caractère qui sera affiché pour masquer à l’écran chaque caractère tapé au clavier par l’utilisateur ENABLED pour les objets Zone de Texte , bouton de commande, etc. Propriété booléenne, qui lorqu’elle vaut False, rend le bouton inutilisable par l’utilisateur
Quelques propriétés très utilisées (suite) dans presque tous les types d’objets FONT Désigne la police à utiliser BACKCOLOR couleur de fond CONTROLTIPTEXT Contient le texte à afficher en info bulle VISIBLE propriété booléenne qui, lorsqu’elle vaut False, permet de rendre un bouton temporairement invisible
Fenêtres de l ’éditeur Visual-Basic Liste des propriétés Liste des méthodes Afficher l ’objet Afficher le code Explorateur de projet propriétés
Code du test des multiplications Dim nb1, nb2 As Integer Private Sub UserForm_Initialize() Randomize nombre1.Caption = Int(Rnd * 8) + 2 nombre2.Caption = Int(Rnd * 8) + 2 nb1 = nombre1.Caption nb2 = nombre2.Caption End Sub
Code du test des multiplications (suite) Private Sub validez_Click() If validez.Caption <> "FIN" Then Dim rep As Integer rep = Val(reponse.Value) If rep = (nb1 * nb2) Then MsgBox ("bravo") Else: MsgBox ("faux") End If validez.Caption = "FIN" reponse.Locked = True Else: End End Sub