La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Chapitre 2 Programmation en Visual Basic. 2 Application Visual Basic feuilles d'application programmes VB Sub OK_click () Feuille_salaire.unload msgbox.

Présentations similaires


Présentation au sujet: "Chapitre 2 Programmation en Visual Basic. 2 Application Visual Basic feuilles d'application programmes VB Sub OK_click () Feuille_salaire.unload msgbox."— Transcription de la présentation:

1 Chapitre 2 Programmation en Visual Basic

2 2 Application Visual Basic feuilles d'application programmes VB Sub OK_click () Feuille_salaire.unload msgbox "calcul des salaires de " & mois.Text & " en cours" calcule_salaires(mois.Text) End Sub Sub OK_click () Feuille_salaire.unload msgbox "calcul des salaires de " & mois.Text & " en cours" calcule_salaires(mois.Text) End Sub Sub OK_click () Feuille_salaire.unload msgbox "calcul des salaires de " & mois.Text & " en cours" calcule_salaires(mois.Text) End Sub Sub OK_click () Feuille_salaire.unload msgbox "calcul des salaires de " & mois.Text & " en cours" calcule_salaires(mois.Text) End Sub +

3 3 Passage de l'algorithmique à Visual Basic  Le passage de l'algorithmique à la programmation en Visual Basic est réalisé en deux étapes: Transformation du lexique en une série de déclarations Visual Basic Transformation des algorithmes en un programme Visual Basic

4 4 Programme associé à une feuille d'application  Le code associé à une feuille d'application comporte trois parties :  on peut écrire des actions communes à plusieurs feuilles dans un module VB (xxx.bas) Feuille1.frm

5 5 Les déclarations  Permettent de construire le lexique : définition des variables : dim, public définition des constantes : const  Les identificateurs de variables et de constantes en Visual Basic : commencent par une lettre, sont composés de lettres, chiffres et _ Exemples : – mon_idf – mon_idf2 – 2x : identificateur incorrect  Typage des objets : integer entier entre et long entier entre et single réel simple précision double réel double précision string chaîne de caractères booleantrue ou false variant n'importe quel type défini par le programmeur

6 6 Déclarations: règles de visibilité des objets  Dans le lexique global (objet Général, onglet Déclarations) d’une feuille d’application ou d’un module VB: dim et const déclarent des objets existant dans la totalité de cette feuille ou de ce module  Dans une procédure ou une fonction d’une feuille d’application ou d’un module VB : dim et const déclarent des objets existant uniquement dans cette procédure ou fonction (déclaration locale)  Dans le lexique global (objet Général, onglet Déclarations) d’un module VB : Public déclare des objets existant dans tous les modules et les feuilles (déclaration globale)  Exemples de déclarations : dim i as integer Public const pi =

7 7 Règles de visibilité des objets : exemple frm1.frm déclarations (Général) dim i1 as integer procédures Sub proc1() dim j as integer... call proc2 End Sub Sub proc2() dim k as integer... End Sub peut accéder aux valeurs de i1, j, et g, mais pas de k, l, m, p, q, x et i2 frm2.frm procédures Sub proc3() dim l as integer... End Sub Sub proc4() dim m as integer... End Sub Const i2 as integer déclarations (Général) module1.bas procédures Sub proc5() dim p as integer... p = fun6(1) End Sub Function fun6(y as Long) as Long dim q as integer... End Function Public g as integer dim x as integer déclarations (Général) call proc3 peut accéder aux valeurs de i1, k, et g, mais pas de j, l, m, p, q, x et i2 peut accéder aux valeurs de i2, l, et g, mais pas de j, k, m, p, q, x et i1 peut accéder aux valeurs de i2, m, et g, mais pas de j, k, l, p, q, x et i1 peut accéder aux valeurs de g, p et x, mais pas de j, k, l, m, q, i1, i2 peut accéder aux valeurs de g, q, x, y mais pas de j, k, l, m, p, i1, i2

8 8 Définition et appel d’une procédure  Définition d'une procédure : Sub nom_procédure ( param 1 as type 1,..., param n as type n ) déclarations instructions End Sub exemple : Sub afficher_carres(min as integer, max as integer) Dim i as integer ' compteur For i = min To max Debug.Print i*i Next i End Sub  Appel d'une procédure : call nom_procédure ( val 1,..., val n ) exemple : call afficher_carres(3,7)  NB: lorsqu’une procédure a 0 ou 1 paramètre, call n’est pas obligatoire

9 9 Définition et appel d’une fonction  Définition d'une fonction : Function nom_fonction ( param 1 as type 1,..., param n as type n ) as type déclarations instructions End Function  Une définition de fonction se termine par l'affectation d'une variable de même nom que la fonction et qui correspond au résultat de la fonction  Exemple : Function surface(long as double, large as double) as double surface = long * large End Function  Appel d'une fonction : nom_fonction ( val 1,..., val n ) exemple : If surface(7,x) < 20 Then s = surface(8,x)

10 10 Procédures événementielles et proc. générales  Procédures événementielles : permettent de traiter un événement concernant un objet graphique (ex : Form_load(), cmd_ok_click(), txt1_change(), …)  sont toujours écrites dans une feuille d’application  Procédures générales : permettent d'écrire des actions intermédiaires utilisables dans différentes parties du logiciel  sont écrites dans une feuille d’application si elle concernent une feuille particulière, et dans un module VB sinon  Principe de programmation en VB : tous les traitements complexes sont réalisés dans des procédures générales

11 11 Les procédures événementielles La liste des objets du formulaire est accessible par la boîte combo Objet La liste des événements et méthodes spécifiques au type de l’objet est accessible par la boîte combo Proc

12 12 Les procédures générales  Une procédure générale (ou procédure - tout court) peut être appelée par : une procédure événementielle par une procédure générale

13 13 Règles de visibilité des procédures et des fonctions  Dans une feuille d’application : une procédure ou fonction définie peut uniquement être appelée depuis cette feuille (par une autre procédure ou fonction)  Dans un module Basic : Private indique une procédure ou fonction visible seulement dans ce module Public indique une procédure ou fonction visible dans tous les modules En l’absence de Private et Public, une procédure ou fonction est définie Public

14 14 Visibilité des procédures et des fonctions : exemple frm1.frm déclarations (Général) dim i1 as integer procédures Sub proc1 () dim j as integer... call proc2 End Sub Sub proc2 () dim k as integer... End Sub peut appeler proc1, proc2, et fun6 mais pas proc3, ni proc4, ni proc5 frm2.frm procédures Sub proc3 () dim l as integer... End Sub Sub proc4 () dim m as integer... End Sub dim i2 as integer déclarations (Général) call proc3 peut appeler proc1, proc2 et fun6 mais pas proc3, ni proc4, ni proc5 peut appeler proc3, proc4 et fun6 mais pas proc1, ni proc2, ni proc5 peut appeler proc5 et fun6, mais pas proc1, ni proc2, ni proc3, ni proc4 module1.bas procédures Private Sub proc5() dim p as integer... p = fun6(1) End Sub Function fun6(y as Long) as Long dim q as integer... End Function Public g as integer dim x as integer déclarations (Général)

15 15 Exercice 1  On veut réaliser un logiciel VB comprenant deux feuilles : frm1 et frm2. frm1 utilise les procédures p1, p2 et p4 frm1 utilise les variables a et b frm2 utilise les procédures p1, p2 et p3 frm2 utilise les variables a et c p1 utilise la variable x p2 utilise les variables x, z et v p3 utilise la variable z p4 utilise la variable w Indiquez dans quels feuilles et/ou modules VB seront placées les procédures et les variables correspondant à l'exemple ci-dessus

16 16 Exercice 2 1.Ecrire la fonction fact(n as Integer) qui retourne la factorielle du nombre n 2.Sachant que le nombre de combinaisons de p éléments dans un ensemble de n éléments est défini par : écrire la fonction combinaison(n as Integer, p as Integer). 3.Construire l’interface ci-dessous. Un clic sur le bouton Cnp affiche le nombre de combinaisons dans une boîte de message

17 17 Exercice 3  Construire un projet VB contenant deux feuilles d’applications : un convertisseur €  $ un convertisseur $  €  Remarque : la constante de parité €  $ ne devra être définie qu’une seul fois dans le logiciel

18 18 Instructions simples  Affectation : notée = exemples : x = 3 txt_nom.visible = false  Séparateur d'instructions: : ( inutile à la fin d'une ligne) exemple : x = x + 1: y = y + 1 z = z + 1  Commentaires: après le caractère ' exemple : z = z + 1 ' augmente z de 1

19 19 Conditionnelles  Si-alors  Si-alors-sinon  Si-alors-sinon en cascade If condition Then instruction Mono-ligne : If condition Then instructions End If If condition Then instructions End If Multi-ligne : If condition Then inst 1 Else inst 2 Mono-ligne : If condition Then instructions 1 Else instructions 2 End If If condition Then instructions 1 Else instructions 2 End If Multi-ligne : If cond 1 Then instructions 1 ElseIf cond 2 Then instructions 2 … Else instructions n End If If cond 1 Then instructions 1 ElseIf cond 2 Then instructions 2 … Else instructions n End If ! Saut de ligne obligatoire après Then et Else dans la forme multi-ligne

20 20 Conditionnelles (suite)  Sélections multiples :  Exemple : Select case car case "'" type_car = "quote" case ",", ";", ".", ":", "!", "?" type_car = "ponctuation" case "0" To "9" type_car = "chiffre" case "a" To "z", "A" To "Z" type_car = "lettre" case Else type_car = "caractère inconnu" End Select Select case variable case liste-valeurs 1 instructions 1 case liste-valeurs 2 instructions 2 … case liste-valeurs n instructions n End Select Select case variable case liste-valeurs 1 instructions 1 case liste-valeurs 2 instructions 2 … case liste-valeurs n instructions n End Select

21 21 Iterations  Boucles "tant que" :  Exemple : i = 1 do while i <= 4 debug.print i : i = i + 1 loop Do while condition instructions Loop Do while condition instructions Loop

22 22 Iterations (suite)  Boucles "répéter... jusqu'à"  Exemple: i = 1 do debug.print i : i = i + 1 loop until i = 5  Boucles "pour" :  Exemple: for i = 1 to 4 debug.print i next i Do instructions Loop Until condition Do instructions Loop Until condition For variable = valeur-initiale To valeur-finale instructions Next variable For variable = valeur-initiale To valeur-finale instructions Next variable

23 23 Les principaux opérateurs  Opérateurs logiques  Opérateurs arithmétiques  Opérateurs sur les chaînes de caractères OpérateurSignification e 1 And e 2 et Not e non e 1 Or e 2 ou e 1 Xor e 2 ou exclusif (soit e 1, soit e 2 ) OpérateurSignification =, <>, >, =, <= =, , >, <, ,  OpérateurSignification s1 & s2s1 & s2 concaténation (mise bout-à-bout) s Like motifs est semblable à motif ( motif contient des car. * ?...)

24 24 Les fonctions prédéfinies de Visual Basic  Visual Basic dispose d'un grand nombre de fonctions prédéfinies : mathématiques chaînes de caractères, caractères conversion de types, formatage financières date et heure fichiers séquentiels bases de données gestion des erreurs accès à MS-DOS échange de données avec d'autres logiciels...

25 25 Principales fonctions mathématiques FonctionSignificationexemple +,-,*,/+,-,*,/ +, -, , / x \ y x div y 5 \ 2  2 x Mod y x mod y 5 mod 2  1 x ^ y xyxy 2^3  8 Abs( x ) |x||x| Abs(-3.2)  3.2 Cos( x ) cos x Cos(0)  1 Exp( x ) exex Exp(1)  Fix( x ) retourne l'entier sans les décimales Fix(-3.2)  -3 Int( x ) E( x ) partie entière Int(-3.2)  -4 Log( x ) ln x Log(Exp(1))  1 Rnd() retourne un nombre aléatoire entre 0 et Rnd() * 5 Sin( x ) sin x Sin(0)  0

26 26 Exercice 4  Ecrire la fonction entier_aleatoire(min as Long, max as Long) qui retourne un nombre entier aléatoire entre min et max.

27 27 Principales fonctions sur les chaînes de caractères FonctionSignificationexemple Instr( s, ss ) position de la première occurrence de la sous- chaîne ss dans la chaîne s Instr("ok ok","ok")  1 Lcase( s ) convertit en minuscules tous les caractères alphabétiques de s Lcase("OK !")  "ok !" Left( s, n ) chaîne correspondant aux n caractères de gauche de s Left("Hello",4)  "Hell" Len( s ) nombre de caractères de la chaîne s Len("bonjour !")  9 LTrim( n ) chaîne où les espaces qui sont au début de s sont supprimés LTrim(" ok ! ")  "ok ! " Mid( s, n 1, n 2 ) chaîne correspondant aux n 2 caractères pris à partir de la position n 1 dans s Mid("Salut",3,2)  "lu" Right( s, n ) chaîne correspondant aux n caractères de droite de s Right("Hello",2)  "lo" RTrim( s ) chaîne où les espaces qui sont à la fin de s sont supprimés RTrim(" ok ! ")  " ok !" String( n, c ) chaîne composée de n fois le caractère c String(3,"a")  "aaa" Trim( s ) chaîne où les espaces qui sont au début et à la fin de s sont supprimés Trim(" ok ! ")  "ok !" Ucase( s ) convertit en majuscules tous les caractères alphabétiques de s Ucase("hé")  "HÉ" !

28 28 Fonctions sur les chaînes de caractères : exercices  Exercice 5 : écrire une fonction qui teste si un caractère est une ponctuation  Exercice 6 : écrire la fonction insere_caractere(s as String, c as String, pos as Integer) as String qui retourne la chaîne s dans laquelle le caractère c a été inséré en position pos  Exercice 7: écrire une fonction qui étant donnée un chemin MS-DOS, absolu ou relatif, retourne la base du nom de fichier "c:\mes documents\page1.html"  " page1" "page2.bak"  " page2"

29 29 Fonctions sur les caractères, de conversion, de formatage FonctionSignificationExemple Asc( s ) code numérique (ASCII) du 1 e caractère de la chaîne s Asc("BONJOUR")  66 Asc("0")  48 Chr( n ) caractère correspondant au code n Chr(48)  "0" Chr(13)  "  " (retour à la ligne) C... ( expr ) convertit expr dans le type spécifié par... CStr(8/3)  " " CInt(8/3)  3 CLng(8/3)  CDbl(8/3)  IsNumeric( s ) Retourne true si s corres- pond à la représentation d'un nombre IsNumeric("-3,2")  true IsNumeric("alpha")  false Format( expr, format ) chaîne correspondant au formatage de expr selon format Format(18,"#,###.00 € ")  "18,00 € " Format(5100,"00 000")  "05 100"  Remarque : un saut de ligne dans un fichier ou dans une zone de texte multi-ligne est composé de 2 caractères : 13 (retour chariot) et 10 (line-feed) : chr(13) + chr(10)

30 30 Fonctions financières FonctionSignification DDB Amortissement d'un bien pour une année FV Valeur future d'une annuité basée sur des paiements constants et périodiques et à un taux d'intérêt constant IPmt Montant des intérêts pour une période donnée d'une annuité basée sur des paiements constants et périodiques et un taux d'intérêt constant IRR Taux de retour interne pour une série de mouvements de trésorerie périodiques NPer Nombre de périodes pour une annuité basée sur des paiements constants, périodiques et soumis à un taux d'intérêt constant NPV Valeur nette actuelle d'un investissement, calculée en fonction d'une série de mouvements de trésorerie périodiques Pmt Montant d'une annuité basé sur des paiements constants, périodiques et soumis à un taux d'intérêt constant PV Valeur actuelle d'une annuité basée sur des paiements futurs constants et périodiques et à un taux d'intérêt constant Rate Taux d'intérêt par période pour une annuité SLN Amortissement direct d'un bien sur une période donnée

31 31 Fonctions sur les dates  En VB, une date correspond à une nombre entier : le nombre de jours écoulés depuis le 30/12/1899 : 1/1/2002  FonctionSignificationExemple Date() Date courante If Date() > DateValue("1/1/00") Then … DateAdd( type, n, date ) Ajoute une durée de type à date DateAdd("d",2,"1/2/01")  3/2/01 DateAdd("m",2,"1/2/01")  1/4/01 DateDiff( type, d 1, d 2 ) Intervalle de temps de type entre d 1 et d 2 DateDiff("d","1/1/01","1/2/01")  31 DateDiff("m","1/1/01","1/2/01")  1 DateValue( expr ) Entier correspondant à la date expr DateValue("1/1/00")+1  2/1/00 Format( date, format ) Formatte date selon format Format("1/1/02","dddd d mmm yy")  mardi 1 janv 02 Format(0,"dd/mm/yyyy")  30/12/1899 Format("1/6/02", "mmmm")  juin IsDate( expr ) D é termine si expr correspond à une date IsDate("1/12/01")  true IsDate("1/14/01")  false IsDate("32/1/01")  true IsDate("demain")  false Now() Date et heure courantes

32 32 Fonctions sur les dates (suite) et exercices  Exercice 8 : écrire une fonction qui détermine la date du lundi de la semaine d'une date donnée. Exemple : lundi("27/11/2001")  26/11/2001  Exercice 9 : écrire une fonction qui calcule l'âge d'une personne à une date donnée, connaissant sa date de naissance FonctionSignificationExemple Day( date ) n° du jour dans le mois de date Day("1/4/2002")  1 Month( date ) n° du mois dans date Month("1/4/2002")  4 Year( date ) Année dans date Year("1/4/2002")  2002 WeekDay( date ) Jour de la semaine dans date WeekDay("1/6/2002")  1 : dimanche

33 33 Fonctions sur les heures  En VB, une heure correspond à la fraction d'une journée : 12 h  0,5 FonctionSignificationExemple dateDiff( type, d 1, d 2 ) Intervalle de temps de type entre d 1 et d 2 dateDiff("h","1/1/01","1/2/01")  744 ( = 31 x 24) Time() Heure courante If Time() > TimeValue("12:00:00") Then … TimeValue( expr ) Nombre r é el correspon- dant à l'heure expr Cdbl(TimeValue("12:00:00"))  0.5 TimeValue("12:00:00")+1/(24*60)  12:01:00 Format( heure, format ) Formatte heure selon format Format("12:05:00","hh \h mm")  12 h 05 Hour( heure ) Nombre d'heures dans heure Hour("12:05:00")  12 Minute( heure ) Nombre de minutes dans heure Minute("12:05:00")  5 Second( heure ) Nombre de secondes dans heure Second("12:05:00")  0

34 34 Fonctions système Fonction ou instruction SignificationExemple Shell( commande ) lance une commande MS- DOS et retourne 1 si la commande s'est correctement exécutée e = Shell("C:\WINDOWS\CALC.EXE") If e = 1 Then … Dir( chemin ) Teste l'existence du répertoire ou du fichier indiqué par le chemin chemin Dir("c:\autoexec.bat")  "c:\autoexec.bat" Dir("c:\windoze.daube")  "" FileCopy chemin 1, chemin 2 Copie le fichier indiqué par dans chemin chemin 1 dans chemin 2 FileCopy "c:\temp\f.txt" "c:\temp\f.bak" MkDir chemin Crée le répertoire indiqué par le chemin chemin MkDir "c:\temp\bak" RmDir chemin Supprime le répertoire indiqué par le chemin chemin RmDir "c:\temp\bak"

35 35 Instructions et fonctions sur les fichiers  2 types de fichiers : texte (lisibles par un éditeur de texte) binaires  2 modes d'accès aux données dans les fichiers : accès séquentiel : pour accéder à la donnée i, il faut déjà avoir accédé à la donnée i – 1 accès direct (ou aléatoire) : on peut accéder directement à une donnée dans un fichier si l'on connaît sa position dans le fichier

36 36 Manipulation des fichiers texte séquentiels Fonction ou instructionSignificationExemple Open chemin For As # num Ouvre le fichier indiqué par chemin en lecture, en écriture ou ajout sur le canal n° num Open "c:\data.txt" For Input As #1 Input # num var 1,…, var n Lit les variables var 1,…, var n dans le fichier ouvert sur le canal num Input #1, nom, prenom Line Input # num var Lit une ligne dans le fichier ouvert sur le canal num et la stocke dans la variable var Input #1, ligne Write # num expr 1,…, expr n Ecrit les expr. expr 1,…, expr n dans le fichier ouvert sur le canal num Write #1, nom, prenom Close # num Ferme le fichier ouvert sur le canal num Close #1 EOF( num ) Retourne true si l'on est à la fin du fichier ouvert sur le canal num If EOF(1) Then … Input Output Append

37 37 Exemple:chargement de zones de textes lues dans un fichier Private Sub cmd_enregistrer_Click() Open "c:\donnees.txt" For Output As #1 Write #1, txt_nom.Text, txt_prenom.Text Close #1 End Sub Private Sub cmd_charger_Click() Dim nom, prenom As String If Dir("c:\donnees.txt") = "" Then ' fichier inexistant MsgBox "c:\donnees.txt : fichier inexistant" Else Open "c:\donnees.txt" For Input As #1 Input #1, nom, prenom Close #1 txt_nom.Text = nom txt_prenom.Text = prenom End If End Sub Créer le formulaire suivant : "Enregistrer" sauve les données des zones de texte dans c:\donnees.txt "Charger" les recharge dans les zones

38 38 Exercice 10 : manipulation des fichiers texte séquentiels  Remplir une boîte combo avec des éléments lus dans un fichier texte 1.Créer un formulaire contenant seulement une boîte combo 2.Ecrire le code qui permet de remplir celle-ci avec des éléments lus dans un fichier texte (lui-même créé avec le bloc-notes par exemple)

39 39 Les tableaux  Déclaration des tableaux VB : Dim ou Public Exemples: Dim A(10) as String Dim B(8,3), C(8,5) as Integer  Par défaut les tableaux sont indicés à partir de 1 ceci peut être modifié par : Dim A(0 To 9) as String  Utilisation des tableaux VB : les tableaux sont notés comme les fonctions : risque de confusion exemples: For i = 1 To 8 For j = 0 To 5 C(i,j) = B(i,1) + 1 Next j Next i

40 40 Exercice 11  Ecrire un programme VB qui : 1. lit cinq nombres avec une inputBox et les place dans un tableau 2. enregistre les nombres de ce tableau dans un fichier séquentiel dont le nom est choisi par une boîte de dialogue de type ouverture de fichier


Télécharger ppt "Chapitre 2 Programmation en Visual Basic. 2 Application Visual Basic feuilles d'application programmes VB Sub OK_click () Feuille_salaire.unload msgbox."

Présentations similaires


Annonces Google