Вы находитесь на странице: 1из 82

Programmation VISUAL BASIC

Y.Grusson

IUT Gnie Civil Universit Joseph Fourier

PLAN DES SEANCES


Sance 1 : Prise en main de loutils et des premiers composants - Premiers programmes. Sance 2 : La structure conditionnelle. Sance 3 : La structure rptitive. Sance 4 : Synthse des structures conditionnelles et rptitives - Contrle crit. Sance 5 : Procdures / fonctions. Sance 6 : Procdures / fonctions. Sance 7 : Tableaux 1 et 2 dimensions. Sance 8 : Synthse Contrle crit. Contrle sur machine (date fixe ultrieurement)
Y.Grusson IUT Gnie Civil Universit Joseph Fourier 2

SEANCE 1
La Programmation Le langage Les concepts Lobjet Hritage vnement Prsentation de Visual Basic Mise en pratique

Y.Grusson

IUT Gnie Civil Universit Joseph Fourier

La Programmation
A tout moment un programme fonctionne ("tourne") sur un ordinateur. Le programme est toujours situ en mmoire centrale aprs son chargement en gnral depuis le disque dur. Il est excut par le processeur. Que signifie "excuter" ? Un programme est compos d'instructions. Chaque instruction reprsente une action lmentaire. Le processeur va chercher les instructions les unes aprs les autres en mmoire centrale pour faire (excuter) les actions lmentaires qu'elles reprsentent.
Y.Grusson IUT Gnie Civil Universit Joseph Fourier 4

La Programmation
Le programme utilise des donnes qui sont galement en mmoire centrale. Des donnes peuvent tre introduites en mmoire centrale par lutilisateur (saisie au clavier) la demande du programme. Des donnes peuvent tre introduites en mmoire depuis le disque dur (fichier) sans intervention de l'utilisateur. Le programme produit des rsultats (affichage l'cran, enregistrement sur disque, etc.)
Y.Grusson IUT Gnie Civil Universit Joseph Fourier 5

La Programmation
DONNEES cran

Clavier

PROGRAMME

Imp.

Souris

Mmoire centrale

Bande

Et SCANNER, MODEM, APPAREIL PHOTO NUMERIQUE, etc.


Y.Grusson IUT Gnie Civil Universit Joseph Fourier 6

Les Langages
Chaque type processeur (X386, Alpha, etc.) sont propre jeu d'instructions binaires. Par contre, le programmeur crit ses programmes dans un langage facilement comprhensible et indpendant des processeurs. La rencontre de ces deux extrmits se fera par l'intermdiaire d'une traduction. Il y a deux types de traduction :
Y.Grusson IUT Gnie Civil Universit Joseph Fourier 7

Compilation / Interprtation
La Compilation : Elle se fait une seule fois
Programme crit par le programmeur

COMPILATEUR

Programme directement excutable par le processeur (.exe)

Les langages sont varis : Assembleur, C, C++, Pascal, ADA, VisualBasic, Fortran, Cobol, etc.
Prcision : Le compilateur est spcifique la fois au processeur et au langage
Y.Grusson IUT Gnie Civil Universit Joseph Fourier 8

Compilation / Interprtation
L'interprtation : Elle se fait chaque excution

Programme crit par le programmeur

Interprtation "ligne par ligne"

Excution de la ligne traduite

On parle ici de script : JavaScript, HTML, VBScritp, les scripts des systme d'exploitation (MsDos, Unix, etc) Cette technique a t repopularise avec les dveloppements pour les applications Web
Y.Grusson IUT Gnie Civil Universit Joseph Fourier 9

Les concepts : l'objet


La programmation actuelle s'appuie sur le concept d'objet. Devant la complexification des applications, l'objet va permettre au programmeur d'utiliser des briques (l'objet) pour construire son propre programme. Les objets sont eux-mmes des programmes. Les objets possdent : des proprits des mthodes
Y.Grusson IUT Gnie Civil Universit Joseph Fourier 10

Les concepts : l'objet


Les objets peuvent reprsents des lments varis (objet rel vtement, voiture, etc.- des objets visuels une fentre Windows, un menu, une liste droulante, etc.- des objets abstraits une connexion-) Les objets peuvent tre hirarchiss. Un objet qui "dcoule" d'un autre objet hritera ("rcuprera") ses proprits et ses mthodes. Exemple : L'objet VETEMENT. Les objets PANTALON et CHEMISE seront des types de VETEMENT et ils en hriteront certaines proprits et mthodes.
Y.Grusson IUT Gnie Civil Universit Joseph Fourier 11

Les concepts : l'hritage


L'objet VETEMENT Proprits : TauxTVA = 0.186 TauxMarge = 0.01 PrixAchat PrixVente Mthodes : Calcul de la TVA = PrixVente * TauxTva Calcul du Prix de Vente = Prix Achat * (1 + TauxMarge) L'objet PANTALON genre de VETEMENT Proprits : Celles de VTEMENT TauxMarge = 0.015 (redfinition de la proprit) Couleur = "Bleu" (Nouvelle proprit) Mthodes : Celles de VETEMENT Modification de la proprit COULEUR (nouvelle mthode) (Les mthodes peuvent galement tre redfinies)
Y.Grusson IUT Gnie Civil Universit Joseph Fourier 12

Les concepts : l'vnement


La programmation des applications Windows utilise des objets : fentre, bouton, menu, zone de saisie, liste droulante, etc. Ces objets ont des proprits : couleur, libell, position, taille, etc. Ces objets ont des mthodes : Par exemple "Ajouter un lment dans une liste droulante". Une des particularit de certaines mthodes est de ragir des vnements extrieurs (le click de la souris par exemple)
Y.Grusson IUT Gnie Civil Universit Joseph Fourier 13

Prsentation de Visual Basic


Structure du projet

Le projet
Les Objets

Les proprits

Y.Grusson

IUT Gnie Civil Universit Joseph Fourier

14

Prsentation de Visual Basic


Label TextBox

ComboBox

CommandButton ListBox

Les objets (ou les composants)

Line

Y.Grusson

IUT Gnie Civil Universit Joseph Fourier

15

Prsentation de Visual Basic

Exemple de proprits pour un composant "TextBox"

Y.Grusson

IUT Gnie Civil Universit Joseph Fourier

16

Prsentation de Visual Basic

Hritage

Y.Grusson

IUT Gnie Civil Universit Joseph Fourier

17

Prsentation de Visual Basic


Les mthodes de l'objet "CommandButton" nomm dans l'application "Bouton" La liste des objets de l'application

Y.Grusson

IUT Gnie Civil Universit Joseph Fourier

18

Prsentation de Visual Basic


Les mthodes de l'objet "CommandButton" nomm dans l'application "Bouton" La liste des mthode de l'objet "Bouton"

criture de la mthode qui ragit l'vnement "Click" de l'objet "Bouton"

Y.Grusson

IUT Gnie Civil Universit Joseph Fourier

19

SEANCE 2
LA STRUCTURE CONDITONNELLE La structure conditionnelle de programmation permet de mettre en place une alternative en fonction d'une condition. L'expression gnrale de cette structure est la suivante : SI Expression_Logique

ALORS Bloc d'instructions si l'expression logique est vraie SINON Bloc d'instructions si l'expression logique est fausse FIN DU SI
Y.Grusson IUT Gnie Civil Universit Joseph Fourier 20

SEANCE 2
Syntaxe VB la plus gnrale : IF Expression_Logique THEN Bloc d'instructions si l'expression logique est vraie ELSE Bloc d'instructions si l'expression logique est fausse END IF Ou plus simple :

IF Expression_Logique THEN Bloc d'instructions si l'expression logique est vraie END IF


Y.Grusson IUT Gnie Civil Universit Joseph Fourier 21

SEANCE 2
L'expression_logique est une expression calcule qui ne peut retourner que 2 valeurs : VRAI ou FAUX (TRUE ou FALSE) Comme toute opration elle a un ensemble d'oprateurs. Les plus courants sont : =, <, <=, >, >=, < >, ET, OU Exemples : A > 12 Zone.Text = "Bonjour" AGE >= 18 SURFACE1 < > SURFACE2 AGE > 18 ET DOMICILE = "Grenoble" (ET et OU relient deux expressions logiques)
Y.Grusson IUT Gnie Civil Universit Joseph Fourier 22

SEANCE 2
Exemple

Y.Grusson

IUT Gnie Civil Universit Joseph Fourier

23

SEANCE 2
Derrire le bouton :

Private Sub Command1_Click() Dim Rep as Integer If Val(Zone1.Text) >= Val(Zone2.Text) Then Rep = MsgBox("Oui, A est suprieur ou gal B", vbOKOnly, " A >= B ?") Else Rep = MsgBox("Non, A n'est pas suprieur ou gal B", vbOKOnly, " A >= B ?") End If End Sub
Y.Grusson IUT Gnie Civil Universit Joseph Fourier 24

SEANCE 2

Y.Grusson

IUT Gnie Civil Universit Joseph Fourier

25

SEANCE 2
Private Sub Command1_Click() Utilisation d'un "SI" Dim Rep as Integer imbriqu (dans le "THEN" If Val(Zone1.Text) >= 5 Then ou le "ELSE") If Val(Zone1.Text) <= 10 Then rep = MsgBox("A est compris entre 5 et 10", vbOKOnly, "5<=A<=10") Else rep = MsgBox("A est exterieur [5 et 10]", vbOKOnly, "5<=A<=10") End If Else rep = MsgBox("A est exterieur [5 et 10]", vbOKOnly, "5<=A<=10") End If End Sub
Y.Grusson IUT Gnie Civil Universit Joseph Fourier 26

SEANCE 2
Autre solution

Private Sub Command1_Click() Dim Rep as Integer If Val(Zone1.Text) >= 5 AND Val(Zone1.Text) <= 10 Then rep = MsgBox("A est compris entre 5 et 10", vbOKOnly, "5<=A<=10") Else rep = MsgBox("A est exterieur [5 et 10]", vbOKOnly, "5<=A<=10") End If End Sub
Y.Grusson IUT Gnie Civil Universit Joseph Fourier 27

SEANCE 2
Syntaxe avec des structures imbriques :

IF Expression_Logique1 THEN Bloc d'instructions si l'expression logique1 est vraie (Ce bloc peut contenir une structure IFEND IF) ELSEIF Expression_Logique2 THEN Bloc d'instructions si l'expression logique2 est vraie ELSEIF Expression_Logique3 THEN Bloc d'instructions si l'expression logique3 est vraie . ELSE Bloc d'instructions pour tous les autres cas (Optionnel) END IF
Y.Grusson IUT Gnie Civil Universit Joseph Fourier 28

SEANCE 2

Y.Grusson

IUT Gnie Civil Universit Joseph Fourier

29

SEANCE 2
Private Sub BCalculer_Click() Dim Rep as integer If Len(ZValeur.Text) = 0 Then Rep = MsgBox("A doit tre saisi", vbOKOnly, "Erreur") ElseIf Opt1.Value = Checked Then LResult.Caption = "Rsultat = " & Str(Val(ZValeur.Text) * 6) ElseIf Opt2.Value = Checked Then LResult.Caption = "Rsultat = " & Str(Val(ZValeur.Text) ^ 2) ElseIf Opt3.Value = Checked Then LResult.Caption = "Rsultat = " & Str(Val(ZValeur.Text) / 3) ElseIf Opt4.Value = Checked Then LResult.Caption = "Rsultat = " & Str(Val(ZValeur.Text) ^ 3) Else Rep = MsgBox("Il faut cocher...", vbOKOnly, "Erreur") End If Attention : ELSEIF et non ELSE IF. Pas de END IF pour fermer End Sub les ELSEIF.
Y.Grusson IUT Gnie Civil Universit Joseph Fourier 30

SEANCE 2

Y.Grusson

IUT Gnie Civil Universit Joseph Fourier

31

SEANCE 2
Private Sub CIci_Click() Dim Rep As Integer Select Case Val(ZColor.Text) Attention cette structure Case 1 n'est possible qu'avec un Ovale.FillColor = vbRed choix multiple sur la Case 2 mme valeur numrique Ovale.FillColor = vbYellow Case 3 ici Val(ZColor.Text)Ovale.FillColor = vbGreen Case 4 Ovale.FillColor = vbWhite Case Else Rep = MsgBox("Out", vbOKOnly, "Pfff!!!") End Select End Sub
Y.Grusson IUT Gnie Civil Universit Joseph Fourier 32

SEANCE 2
Syntaxe du SELECT CASE . END SELECT :

Select Case Variable Case liste de valeur 1


Bloc d'instructions quand "variable" possde une valeur de la liste 1

Case liste de valeur 2


Bloc d'instructions quand "variable" possde une valeur de la liste 2

Case liste de valeur 3


Bloc d'instructions quand "variable" possde une valeur de la liste 3

Case liste de valeur 4


Bloc d'instructions quand "variable" possde une valeur de la liste 4

. Case Else
Bloc d'instructions pour tous les autres cas (optionnel)

End Select
Y.Grusson IUT Gnie Civil Universit Joseph Fourier 33

SEANCE 3
LA STRUCTURE REPETITIVE Cette structure va permettre de rpter un bloc d'instructions. La syntaxe la plus gnrale de cette structure est la suivante : TANT QUE Expression_Logique FAIRE Bloc d'instructions excuter tant que l'expression logique RESTE vraie FIN TANT QUE
Y.Grusson IUT Gnie Civil Universit Joseph Fourier 34

SEANCE 3
Le bloc d'instructions est rpt "tant que l'expression logique reste vraie", ceci implique que : Pour s'arrter, il faut qu'elle deviennent fausse. Au moins une instruction dans le bloc doit donc faire voluer l'expression logique afin de la faire basculer de "vrai" "faux" (au risque sinon de rentrer dans une boucle infinie) De mme, il faut que l'expression logique soit initialise "vrai" (le plus gnralement) ou "faux". (Vous remarquerez qu'une structure "Tant Que" peut ne pas rpter son bloc d'instructions si l'expression logique est initialise "faux")
Y.Grusson IUT Gnie Civil Universit Joseph Fourier 35

SEANCE 3
Il possible de rcrire la structure ainsi : Instruction(s) d'initialisation de l'expression logique TANT QUE Expression_Logique FAIRE

Bloc d'instructions excuter tant que l'expression logique RESTE vraie. Ce bloc doit contenir au moins une Instruction d'volution de l'expression logique
FIN TANT QUE

En gnral l'Expression_Logique possde un oprande fixe (limite a ne pas dpasser) et un oprande variable qui tend vers l'oprande fixe.
Y.Grusson IUT Gnie Civil Universit Joseph Fourier 36

SEANCE 3
Syntaxe Visual Basic du "Tant Que"

DO WHILE Expression_logique Bloc d'instructions excuter tant que l'expression logique RESTE vraie

LOOP

Y.Grusson

IUT Gnie Civil Universit Joseph Fourier

37

SEANCE 3
Il existe deux autres structures rptitives : La structure REPETER REPETER Bloc d'instructions jusqu' ce que l'expression devienne FAUSSE JUSQU' Expression-logique En Visual Basic DO Bloc d'instructions LOOP UNTIL Expression-logique Ici, l'expression est value la fin de la boucle ; Par consquent, le bloc est excut au moins une fois.
Y.Grusson IUT Gnie Civil Universit Joseph Fourier 38

SEANCE 3
La structure POUR POUR Variable = Val_dbut Val_Fin PAS Val_pas FAIRE Bloc d'instructions FIN POUR En Visual Basic FOR Variable = Val_dbut TO Val_Fin STEP Val_pas Bloc d'instructions NEXT Remarque : Le pas est par dfaut gal 1 et la variable est de type entier.
Y.Grusson IUT Gnie Civil Universit Joseph Fourier 39

SEANCE 3
Exemple

Y.Grusson

IUT Gnie Civil Universit Joseph Fourier

40

SEANCE 3
Solution avec une structure DO WHILE. Private Sub BLancer_Click() Dim I As Integer Dim Total As Integer (Dclaration locales de 2 variables) Total = 0 I = 1 (Initialisation de l'expression logique) Do While I <= Val(ZLimite.Text) Total = Total + I I = I + 1 (Evolution de l'expression logique) Loop ZTotal.Text = Str(Total) End Sub
Y.Grusson IUT Gnie Civil Universit Joseph Fourier 41

SEANCE 3
Solution avec une structure DO UNTIL Private Sub BLancer_Click() Dim I As Integer Dim Total As Integer (Dclaration locales de 2 variables) Total = 0 I = 1 (Initialisation de l'expression logique) Do Total = Total + I I=I+1 (Dclaration locales de 2 variables) Loop Until I > Val(ZLimite.Text) ZTotal.Text = Str(Total) End Sub
Y.Grusson IUT Gnie Civil Universit Joseph Fourier 42

SEANCE 3
Solution avec une structure FOR NEXT Private Sub BLancer_Click() Dim I As Integer Dim Total As Integer (Dclaration locales de 2 variables) Total = 0 For I = 1 To Val(ZLimite.Text) (Le For initialise I avec I=1) Total = Total + I Next (Le NEXT fait voluer I en excutant I=I+1) ZTotal.Text = Str(Total) End Sub Cette solution est la plus adapte ce problme
Y.Grusson IUT Gnie Civil Universit Joseph Fourier 43

SEANCE 4

Sance de REVISION et de Synthse

Y.Grusson

IUT Gnie Civil Universit Joseph Fourier

44

SEANCE 5
Procdures et Fonctions
Ces deux notions correspondent la notion plus gnrale de "sous-programme" (terme qui n'est plus utilis actuellement). Le premier objectif d'une procdure ou d'une fonction est d'crire qu'une seule fois une partie de programme qui se rpte dans le mme programme ou dans plusieurs programmes. Le second objectif est de fractionner un (gros) programme en plusieurs parties (plus petites) dveloppes en gnral par des personnes diffrentes.
Y.Grusson IUT Gnie Civil Universit Joseph Fourier 45

SEANCE 5
Premier exemple de procdure :

Y.Grusson

IUT Gnie Civil Universit Joseph Fourier

46

SEANCE 5
Ce problme sera rsolu l'aide d'une procdure qui "dira" si un nombre entier est pair ou non. Cette procdure sera rutilisable dans un autre programme.

D'une faon gnrale, les procdures (ou fonctions) doivent tre considres comme des programmes autonomes. De ce fait : Elles n'utilisent que des variables locales Elles n'utilisent pas de composants graphiques (sauf si le composant fait partie des paramtres)
Y.Grusson IUT Gnie Civil Universit Joseph Fourier 47

SEANCE 5
La procdure demande (un nombre entier est-il pair ou impair ?) devra donc communiquer avec le programme qui l'utilise. Pour rpondre la question la procdure devra donc : Connatre le nombre entier concern, Donner sa rponse. La communication entre la procdure (ou la fonction) se fera au travers d'une interface.
Y.Grusson IUT Gnie Civil Universit Joseph Fourier 48

SEANCE 5
L'interface :
Programme Principal (ou appelant) 1 2 3 4 4 Interface
Le programme communique les donnes (ici le nombre entier) La procdure rcupre les donnes

La procdure communique le rsultat (le nombre est ou n'est pas pair)


Le programme rcupre et utilise le rsultat
Y.Grusson IUT Gnie Civil Universit Joseph Fourier

Procdure
49

SEANCE 5
Sub PairOuiOuNon(ByVal Nbre As Long, ByRef RepON As Boolean) RepON = False If Nbre Mod 2 = 0 Then RepON = True La procdure rcupre la valeur d'ALEAS dans End If La procdure rpond la variable NBRE. End Sub par true ou false dans la Private Sub BGenerer_Click() variable RepON. Dim OuiNon As Boolean Dim Aleas As Long La valeur contenue par Dim I As Integer "ALEAS" est passe la Randomize procdure Liste.Clear La rponse de la procdure est rcupre For I = 1 To 20 dans OUINON Aleas = Int(Rnd * 200) Call PairOuiOuNon(Aleas, OuiNon) If OuiNon = True Then Liste.AddItem (Aleas) Next End Sub
Y.Grusson IUT Gnie Civil Universit Joseph Fourier 50

SEANCE 5
Procdure (Syntaxe gnrale) La procdure : Sub Nom_procedure (Paramtres ) Ou Sub Nom_procedure ( )
Corps de la procdure
Absence de paramtres

End Sub

Appel de la procdure :
Call Nom_procedure(Paramtres) Ou Call Nom_procedure
Y.Grusson IUT Gnie Civil Universit Joseph Fourier 51

SEANCE 5
Procdure (Syntaxe dtaille)
Sub Nom_Procedure (ByVal NVar1 as type_NVar1, ByRef Nvar2 as type_NVar2, ) (Rcupration des valeurs de Var1 et Var2 dans NVar1 et NVar2) Modifications ventuelles de NVar1 et NVar2 End Sub Attention l'ordre Appel de la procdure :

(Initialisation de Var1 et Var2) Call Nom_Procedure (Var1, Var2,) (Rcupration de la valeur de NVar2 dans Var2. Par contre Var1 n'est pas touche par les modifications de NVar1)
Y.Grusson IUT Gnie Civil Universit Joseph Fourier 52

SEANCE 5
Il est galement possible d'appeler une procdure en prcisant directement des valeurs. Par exemple: Sub LaProc (Byval Age as integer, Byval Nom as string) . End Sub Call LaProc (12, "Pierre")
Y.Grusson IUT Gnie Civil Universit Joseph Fourier 53

SEANCE 5
Second exemple de procdure : Exemple : crire une procdure qui calcule n !

Y.Grusson

IUT Gnie Civil Universit Joseph Fourier

54

SEANCE 5
Sub Factoriel(ByVal N As Long, ByRef Prod As Double) Dim I As Integer Prod = 1 For I = 1 To N Prod = Prod * I Next End Sub Private Sub BFacto_Click() Dim Facto As Double Facto = 1 Call Factoriel(Val(Zn.Text), Facto) ZFacto.Text = Str(Facto) End Sub
Y.Grusson IUT Gnie Civil Universit Joseph Fourier 55

SEANCE 5
Contre exemple : Passons les deux paramtres par valeur
Sub Factoriel(ByVal N As Long, ByVal Prod As Double) Dim I As Integer Prod = 1 For I = 1 To N Prod = Prod * I Next End Sub
Private Sub BFacto_Click() Dim Facto As Double Facto = 1 Call Factoriel(Val(Zn.Text), Facto) ZFacto.Text = Str(Facto) End Sub
Y.Grusson

IUT Gnie Civil Universit Joseph Fourier

56

SEANCE 5
Contre exemple : Passons les deux paramtres par valeur

La variable FACTO n'a pas t influence par la procdure et conserver sa valeur d'appel

Y.Grusson

IUT Gnie Civil Universit Joseph Fourier

57

SEANCE 6
Procdures et Fonctions
Les FONCTIONS jouent un rle identique celui des procdures, elles peuvent possder des paramtres et retourner des rsultats grce eux. Deux diffrences nanmoins, les fonctions : Retournent obligatoirement un rsultat. S'utilisent toujours dans une expression.
(De nombreuses fonctions du langage ont dj t utilises : Ucase, Lcase, Mid, Len, Sqr, Rnd, etc.)
Y.Grusson IUT Gnie Civil Universit Joseph Fourier

58

SEANCE 6
Exemple de fonction :

Y.Grusson

IUT Gnie Civil Universit Joseph Fourier

59

SEANCE 6
Function Resultat(ByVal N As Long, ByVal Puis As Integer) As Long Resultat = N ^ Puis End Function Private Sub BCarre_Click() Dim I As Integer For I = Val(ZDebut) To Val(ZFin) Carre.AddItem (Resultat(I, 2)) Next End Sub

Private Sub BCube_Click() Dim I As Integer For I = Val(ZDebut) To Val(ZFin) Cube.AddItem (Resultat(I, 3)) Next End Sub
60

Y.Grusson

IUT Gnie Civil Universit Joseph Fourier

SEANCE 6
Syntaxe :
La fonction : Function Nom_Fonc (Paramtres ventuels) As type_du rsultat Corps de la fonction contenant au moins une fois l'instruction Nom_Fonc = .. End Function Appel de la fonction :

Obligatoirement dans une expression. Par exemple : Variable = Nom_Fonc(..) * P


Considrer le nom de la fonction comme un paramtre (ByRef)
Y.Grusson IUT Gnie Civil Universit Joseph Fourier 61

SEANCE 6
Annexe
Function Resultat(ByVal N As Long, ByVal Puis As Integer) As Long En conservant les 2 boutons, les 2 Resultat = N ^ Puis procdures peuvent-elles se runir End Function en une seule ? Private Sub BCarre_Click() Dim I As Integer For I = Val(ZDebut) To Val(ZFin) Carre.AddItem (Resultat(I, 2)) Next End Sub
Y.Grusson

Private Sub BCube_Click() Dim I As Integer For I = Val(ZDebut) To Val(ZFin) Cube.AddItem (Resultat(I, 3)) Next End Sub

IUT Gnie Civil Universit Joseph Fourier

62

SEANCE 6
Annexe Crer un bouton puis le copier et le coller afin d'obtenir un groupe de composants indics

Y.Grusson

IUT Gnie Civil Universit Joseph Fourier

63

SEANCE 6
Annexe
Function Resultat(ByVal N As Long, ByVal Puis As Integer) As Long Resultat = N ^ Puis End Function

Private Sub Btn_Click(Index As Integer) Dim I As Integer For I = Val(ZDebut) To Val(ZFin) Select Case Index Case 0 Carre.AddItem (Resultat(I, 2)) Case 1 Cube.AddItem (Resultat(I, 3)) End Select Next End Sub Y.Grusson IUT Gnie Civil
Universit Joseph Fourier

64

SEANCE 7
Les TABLEAUX Un tableau est une structure de donnes qui permet de stocker en mmoire des informations gnralement de mme type. Chaque valeur est repre dans le tableau par un indice qui indique sa position. Un tableau est une variable complexe.
Y.Grusson IUT Gnie Civil Universit Joseph Fourier 65

SEANCE 7
Reprsentation d'un tableau une dimension : Nom du tableau : PRIX
12.5 1 1.6 2 15 3 12.1 16.9 1.24 4 5 6 8.4 7 9.0 8 0.60 22.8 3.45 9 10 11

Ce tableau contient des rels. Il contient 11 lments. Le Nme lment sera not PRIX(N) c'est dire Nom_du_tableau (Numro_de_l'lment) Exemple : la valeur du 7me lment, not PRIX(7) est 8.4
Y.Grusson IUT Gnie Civil Universit Joseph Fourier 66

SEANCE 7
Un tableau doit tre DECLARE puis INITIALISE avant d'tre EXPLOITE. Type de la donne contenue par le tableau DECLARATION : PRIVATE (ou DIM) PRIX ( 1 TO 11 ) AS SINGLE

Nom du tableau

Valeur infrieure de l'indice

Valeur suprieure de l'indice

Les indices commencent gnralement 1 ou 0


Y.Grusson IUT Gnie Civil Universit Joseph Fourier 67

SEANCE 7
DECLARATION : (autres exemples) DIM SEMAINE (1 TO 7) AS STRING DIM AGE (0 TO 15) AS INTEGER DIM REPONSE (0 TO 20) AS BOOLEAN DIM CACLIENT (1 TO 358) AS DOUBLE

Y.Grusson

IUT Gnie Civil Universit Joseph Fourier

68

SEANCE 7
INITIALISATION : Un tableau tant une structure implante en mmoire centrale (comme une variable simple), il est obligatoire de l'initialise (le remplir) au dbut de chaque programme. Cette opration peut se faire : Manuellement (saisie par l'utilisateur dans une zone de texte puis affectation au tableau) Automatiquement A l'activation du programme A partir d'un source de sauvegarde (fichier).
Y.Grusson IUT Gnie Civil Universit Joseph Fourier 69

SEANCE 7
A l'activation du programme : Private AGE(0 To 5) As Integer Private Sub Form_activate() AGE(0) = 5 AGE(1) = 12 AGE(2) = 3 AGE(3) = 45 AGE(4) = 48 AGE(5) = 16 End Sub
Y.Grusson IUT Gnie Civil Universit Joseph Fourier 70

SEANCE 7
Saisie par l'utilisateur puis affecte au tableau : Soit Zsaisie un TextBox et I = 3 AGE(I) = Val(Zsaisie.Text) permettra d'affecte la valeur saisie dans la zone Zsaisie au troisime lment du tableau AGE. Remplissage alatoire DIM NBRE(1 TO 10) AS DOUBLE RANDOMIZE FOR J=1 TO 10 NBRE(J) = INT(RND*100) NEXT
Y.Grusson IUT Gnie Civil Universit Joseph Fourier 71

SEANCE 7
Cas particulier : L'indice peut lui-mme avoir une signification dans le contexte trait. Par exemple : DIM EFFECTIF (1 TO 45) AS LONG EFFECTIF est un tableau dans lequel le Nme lment contient le nombre de personnes ayant l'ge N (l'indice correspond la classe d'ge). Soit ZAge et ZEffectif, deux TextBox EFFECTIF(Val(ZAge.text)) = Val(ZEffectif.Text) Permet d'affecter l'effectif (saisi dans ZEffectif) la classe d'ge correspondante (saisi dans ZAge)
Y.Grusson IUT Gnie Civil Universit Joseph Fourier 72

SEANCE 7
EXPLOITATION : L'exploitation peut se faire : DIRECTEMENT en accdant directement l'lment en utilisant son indice : Liste.AddItem = Str(AGE(6)) EFFECTIF(Val(ZAge.text)) = Val(ZEffectif.Text) INDIRECTEMENT en parcourant le tableau soit pour utiliser toutes les donnes soit pour rechercher une valeur dont on ne connat pas l'indice.
Y.Grusson IUT Gnie Civil Universit Joseph Fourier 73

SEANCE 7
Exemples : DIM EFFECTIF (1 TO 45) AS LONG Combien de personnes ont 28 ans : ZONE.TEXT = STR(EFFECTIF(28))

Quel est l'effectif total de la population ? FOR I = 1 TO 45 TOTAL = TOTAL + EFFECTIF(I) NEXT ZONE.TEXT = STR(TOTAL)
Y.Grusson IUT Gnie Civil Universit Joseph Fourier 74

SEANCE 7
Quel est la premire classe d'ge ayant un effectif suprieur ou gal 2000 ?
FOR I=1 TO 45 IF EFFECTIF(I) >= 2000 THEN ZAGE.TEXT = STR(I) ZEFFECTIF.TEXT = STR(EFFECTIF(I)) END IF NEXT

Mauvaise solution car obtient la dernire classe d'ge et non la premire.


Y.Grusson IUT Gnie Civil Universit Joseph Fourier 75

SEANCE 7
Quel est la premire classe d'ge ayant un effectif suprieur ou gal 2000 ?
I=1 TROUVE = FALSE DO WHILE TROUVE = FALSE AND I <= 45 IF EFFECTIF(I) >= 2000 THEN TROUVE = TRUE I=I+1 LOOP IF TROUVE = TRUE THEN ZAGE.TEXT = STR(I-1) ZEFFECTIF.TEXT = STR(EFFECTIF(I-1) END IF
Y.Grusson IUT Gnie Civil Universit Joseph Fourier 76

SEANCE 7
Quel est la premire classe d'ge ayant un effectif suprieur ou gal 2000 ? (autre solution)
I=1 DO WHILE EFFECTIF(I) < 2000 AND I <= 45 I=I+1 LOOP IF I <= 45 THEN ZAGE.TEXT = STR(I-1) ZEFFECTIF.TEXT = STR(EFFECTIF(I-1) END IF
Y.Grusson IUT Gnie Civil Universit Joseph Fourier 77

SEANCE 7
Les tableaux 2 dimensions
Ces tableaux se dfinissent l'aide de 2 coordonnes, le premier reprsentant la ligne, le second la colonne. Par exemple :
1 1 A 2 R 3 Z 4 K

2
3
Y.Grusson

Q
O

M
F

W
P

X
R
78

IUT Gnie Civil Universit Joseph Fourier

SEANCE 7
1 2 3 4

1
2 3

A
Q O

R
M F

Z
W P

K
X R

Ce tableau nomm "LETTR" se dclarera de la faon suivante : PRIVATE LETTR (1 TO 3, 1 TO 4) AS STRING


LIGNE 1 3
Y.Grusson

COLONNE de 1 4
79

IUT Gnie Civil Universit Joseph Fourier

SEANCE 7
1 2 3 4

1
2 3

A
Q O

R
M F

Z
W P

K
X R

L'accs aux lments se fera ainsi : LETTR( 2 , 3 )

Coordonne de la ligne
Y.Grusson

Coordonne de la colonne
80

IUT Gnie Civil Universit Joseph Fourier

SEANCE 7
Parcours d'un tableau Le parcours d'un tableau se fera l'aide de deux structures rptitives imbriques, par exemple :
PRIVATE VOLUME(1 TO 12, 1 TO 15) AS DOUBLE RANDOMIZE FOR L = 1 TO 12 FOR C = 1 to 15 VOLUME(L,C)=RND*250 NEXT C NEXT L
Y.Grusson IUT Gnie Civil Universit Joseph Fourier 81

SEANCE 8

Sance de REVISION et de Synthse

Y.Grusson

IUT Gnie Civil Universit Joseph Fourier

82

Вам также может понравиться