Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
1
Programmation en Visual Basic
Chapitre 2 Programmation en Visual Basic
2
Application Visual Basic
programmes VB Sub OK_click () Feuille_salaire.unload msgbox "calcul des salaires de " & mois.Text & " en cours" calcule_salaires(mois.Text) End Sub feuilles d'application +
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
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
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 2.109 single réel simple précision double réel double précision string chaîne de caractères boolean true ou false variant n'importe quel type défini par le programmeur
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
Règles de visibilité des objets : exemple
frm1.frm frm2.frm module1.bas déclarations (Général) déclarations (Général) déclarations (Général) dim i1 as integer Const i2 as integer Public g as integer dim x as integer procédures procédures procédures Sub proc3() Sub proc5() dim p as integer ... p = fun6(1) End Sub 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 g, p et x, mais pas de j, k, l, m, q, i1, i2 Sub proc1() dim j as integer ... call proc2 End Sub peut accéder aux valeurs de i1, j, et g, mais pas de k, l, m, p, q, x et i2 dim l as integer ... End Sub Sub proc4() Function fun6(y as Long) as Long dim q as integer ... End Function Sub proc2() dim k as integer ... End Sub 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 i1, k, et g, mais pas de j, l, m, p, q, x et i2 dim m as integer peut accéder aux valeurs de g, q, x, y mais pas de j, k, l, m, p, i1, i2 ... call proc3 End Sub
8
Définition et appel d’une procédure
Définition d'une procédure : Sub nom_procédure(param1 as type1, ..., paramn as typen) 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 Appel d'une procédure : call nom_procédure(val1 , ..., valn) exemple : call afficher_carres(3,7) NB: lorsqu’une procédure a 0 ou 1 paramètre, call n’est pas obligatoire
9
Définition et appel d’une fonction
Définition d'une fonction : Function nom_fonction(param1 as type1, ..., paramn as typen) 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 Appel d'une fonction : nom_fonction(val1 , ..., valn) exemple : If surface(7,x) < 20 Then s = surface(8,x)
10
Procédures événementielles et proc. générales
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
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
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
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
Visibilité des procédures et des fonctions : exemple
frm1.frm frm2.frm module1.bas déclarations (Général) déclarations (Général) déclarations (Général) dim i1 as integer dim i2 as integer Public g as integer dim x as integer procédures procédures procédures Sub proc3 () Private Sub proc5() dim p as integer ... p = fun6(1) End Sub peut appeler proc3, proc4 et fun6 mais pas proc1, ni proc2, ni proc5 Sub proc1 () dim j as integer ... call proc2 End Sub peut appeler proc1, proc2, et fun6 mais pas proc3, ni proc4, ni proc5 dim l as integer peut appeler proc5 et fun6, mais pas proc1, ni proc2, ni proc3, ni proc4 ... End Sub Sub proc4 () Function fun6(y as Long) as Long dim q as integer ... End Function Sub proc2 () dim k as integer ... End Sub peut appeler proc3, proc4 et fun6 mais pas proc1, ni proc2, ni proc5 peut appeler proc1, proc2 et fun6 mais pas proc3, ni proc4, ni proc5 dim m as integer peut appeler proc5 et fun6, mais pas proc1, ni proc2, ni proc3, ni proc4 ... call proc3 End Sub
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
Exercice 2 Ecrire la fonction fact(n as Integer) qui retourne la factorielle du nombre n 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). Construire l’interface ci-dessous. Un clic sur le bouton Cnp affiche le nombre de combinaisons dans une boîte de message
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
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 ' z = z + 1 ' augmente z de 1
19
Conditionnelles ! Si-alors Si-alors-sinon instructions
Si-alors-sinon en cascade Mono-ligne : Multi-ligne : If condition Then instruction If condition Then instructions End If Mono-ligne : Multi-ligne : If condition Then inst1 Else inst2 If condition Then instructions1 Else instructions2 End If If cond1 Then instructions1 ElseIf cond2 Then instructions2 … Else instructionsn End If Saut de ligne obligatoire après Then et Else dans la forme multi-ligne !
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-valeurs1 instructions1 case liste-valeurs2 instructions2 … case liste-valeursn instructionsn End Select
21
Iterations Boucles "tant que" : instructions Exemple : i = 1
do while i <= 4 debug.print i : i = i + 1 loop Do while condition instructions Loop
22
Iterations (suite) Boucles "répéter ... jusqu'à" Exemple:
do debug.print i : i = i + 1 loop until i = 5 Boucles "pour" : for i = 1 to 4 debug.print i next i Do instructions Loop Until condition For variable = valeur-initiale To valeur-finale instructions Next variable
23
Les principaux opérateurs
Opérateurs logiques Opérateurs arithmétiques Opérateurs sur les chaînes de caractères Opérateur Signification e1 And e2 et Not e non e1 Or e2 ou e1 Xor e2 ou exclusif (soit e1, soit e2) Opérateur Signification =, <>, >, <, >=, <= =, , >, <, , Opérateur Signification s1 & s2 concaténation (mise bout-à-bout) s Like motif s est semblable à motif (motif contient des car. * ? ...)
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
Principales fonctions mathématiques
Signification exemple +,-,*,/ +, -, , / x \ y x div y 5 \ 2 2 x Mod y x mod y 5 mod 2 1 x ^ y xy 2^3 8 Abs(x) |x| Abs(-3.2) 3.2 Cos(x) cos x Cos(0) 1 Exp(x) ex 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 1 1 + Rnd() * 5 Sin(x) sin x Sin(0) 0
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
Principales fonctions sur les chaînes de caractères
Signification exemple 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, n1, n2) chaîne correspondant aux n2 caractères pris à partir de la position n1 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
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
Fonctions sur les caractères, de conversion, de formatage
Signification Exemple Asc(s) code numérique (ASCII) du 1e 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
Fonctions financières
Signification 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
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 37257 Fonction Signification Exemple 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,d1,d2) Intervalle de temps de type entre d1 et d2 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
Fonctions sur les dates (suite) et exercices
Signification Exemple 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 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
33
Fonctions sur les heures
En VB, une heure correspond à la fraction d'une journée : 12 h 0,5 Fonction Signification Exemple dateDiff(type,d1,d2) Intervalle de temps de type entre d1 et d2 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
Fonction ou instruction
Fonctions système Fonction ou instruction Signification Exemple 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 chemin1, chemin2 Copie le fichier indiqué par dans chemin chemin1 dans chemin2 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
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
Manipulation des fichiers texte séquentiels
Fonction ou instruction Signification Exemple 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 var1,…, varn Lit les variables var1,…, varn 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 expr1,…, exprn Ecrit les expr. expr1,…, exprn 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
Exemple:chargement de zones de textes lues dans un fichier
Créer le formulaire suivant : "Enregistrer" sauve les données des zones de texte dans c:\donnees.txt "Charger" les recharge dans les zones 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 txt_nom.Text = nom txt_prenom.Text = prenom End If
38
Exercice 10 : manipulation des fichiers texte séquentiels
Remplir une boîte combo avec des éléments lus dans un fichier texte Créer un formulaire contenant seulement une boîte combo 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
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
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
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.