82
Y.Grusson IUT Génie Civil Université Joseph Fourier 1 Programmation VISUAL BASIC

Y.GrussonIUT Génie Civil Université Joseph Fourier 1 Programmation VISUAL BASIC

Embed Size (px)

Citation preview

Page 1: Y.GrussonIUT Génie Civil Université Joseph Fourier 1 Programmation VISUAL BASIC

Y.Grusson IUT Génie CivilUniversité Joseph Fourier

1

Programmation VISUAL BASIC

Page 2: Y.GrussonIUT Génie Civil Université Joseph Fourier 1 Programmation VISUAL BASIC

Y.Grusson IUT Génie CivilUniversité Joseph Fourier

2

PLAN DES SEANCES• Séance 1 : Prise en main de l’outils et des premiers

composants - Premiers programmes.

• Séance 2 : La structure conditionnelle.

• Séance 3 : La structure répétitive.

• Séance 4 : Synthèse des structures conditionnelles et répétitives - Contrôle écrit.

• Séance 5 : Procédures / fonctions.

• Séance 6 : Procédures / fonctions.

• Séance 7 : Tableaux à 1 et 2 dimensions.

• Séance 8 : Synthèse – Contrôle écrit.

• Contrôle sur machine (date fixée ultérieurement)

Page 3: Y.GrussonIUT Génie Civil Université Joseph Fourier 1 Programmation VISUAL BASIC

Y.Grusson IUT Génie CivilUniversité Joseph Fourier

3

SEANCE 1

• La Programmation• Le langage• Les concepts

– L’objet– Héritage– Évènement

• Présentation de Visual Basic• Mise en pratique

Page 4: Y.GrussonIUT Génie Civil Université Joseph Fourier 1 Programmation VISUAL BASIC

Y.Grusson IUT Génie CivilUniversité Joseph Fourier

4

La Programmation

• A tout moment un programme fonctionne ("tourne") sur un ordinateur.

• Le programme est toujours situé en mémoire centrale après son chargement en général depuis le disque dur. Il est exécuté par le processeur.

• Que signifie "exécuter" ? Un programme est composé d'instructions. Chaque instruction représente une action élémentaire. Le processeur va chercher les instructions les unes après les autres en mémoire centrale pour faire (exécuter) les actions élémentaires qu'elles représentent.

Page 5: Y.GrussonIUT Génie Civil Université Joseph Fourier 1 Programmation VISUAL BASIC

Y.Grusson IUT Génie CivilUniversité Joseph Fourier

5

• Le programme utilise des données qui sont également en mémoire centrale. – Des données peuvent être introduites en mémoire

centrale par l’utilisateur (saisie au clavier) à la demande du programme.

– Des données peuvent être introduites en mémoire depuis le disque dur (fichier) sans intervention de l'utilisateur.

• Le programme produit des résultats (affichage à l'écran, enregistrement sur disque, etc.)

La Programmation

Page 6: Y.GrussonIUT Génie Civil Université Joseph Fourier 1 Programmation VISUAL BASIC

Y.Grusson IUT Génie CivilUniversité Joseph Fourier

6

La Programmation

Écran

PROGRAMME

DONNEES

Mémoire centrale

Clavier

Souris

Imp.

Bande

Et … SCANNER, MODEM, APPAREIL PHOTO NUMERIQUE, etc.

Page 7: Y.GrussonIUT Génie Civil Université Joseph Fourier 1 Programmation VISUAL BASIC

Y.Grusson IUT Génie CivilUniversité Joseph Fourier

7

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 compréhensible et indépendant des processeurs.

La rencontre de ces deux extrémités se fera par l'intermédiaire d'une traduction.

Il y a deux types de traduction :

Page 8: Y.GrussonIUT Génie Civil Université Joseph Fourier 1 Programmation VISUAL BASIC

Y.Grusson IUT Génie CivilUniversité Joseph Fourier

8

Compilation / Interprétation

Précision : Le compilateur est spécifique à la fois au processeur et au langage

La Compilation : Elle se fait une seule fois

Programmeécrit par le

programmeur

Programmedirectementexécutable

par leprocesseur

(.exe)

COMPILATEUR

Les langages sont variés : Assembleur, C, C++, Pascal, ADA, VisualBasic, Fortran, Cobol, etc.

Page 9: Y.GrussonIUT Génie Civil Université Joseph Fourier 1 Programmation VISUAL BASIC

Y.Grusson IUT Génie CivilUniversité Joseph Fourier

9

Compilation / Interprétation

L'interprétation : Elle se fait à chaque exécution

Programmeécrit par le

programmeur

Exécutionde la lignetraduite

Interprétation"ligne par ligne"

On parle ici de script : JavaScript, HTML, VBScritp, les scripts des système d'exploitation (MsDos, Unix, etc)

Cette technique a été repopularisée avec les développements pour les applications Web

Page 10: Y.GrussonIUT Génie Civil Université Joseph Fourier 1 Programmation VISUAL BASIC

Y.Grusson IUT Génie CivilUniversité Joseph Fourier

10

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-mêmes des programmes.

Les objets possèdent : des propriétés des méthodes

Page 11: Y.GrussonIUT Génie Civil Université Joseph Fourier 1 Programmation VISUAL BASIC

Y.Grusson IUT Génie CivilUniversité Joseph Fourier

11

Les objets peuvent représentés des éléments variés (objet réel – vêtement, voiture, etc.- des objets visuels –une fenêtre Windows, un menu, une liste déroulante, etc.- des objets abstraits –une connexion-)

Les objets peuvent être hiérarchisés. Un objet qui "découle" d'un autre objet héritera ("récupérera") ses propriétés et ses méthodes.

Exemple : L'objet VETEMENT. Les objets PANTALON et CHEMISE seront des types

de VETEMENT et ils en hériteront certaines propriétés et méthodes.

Les concepts : l'objet

Page 12: Y.GrussonIUT Génie Civil Université Joseph Fourier 1 Programmation VISUAL BASIC

Y.Grusson IUT Génie CivilUniversité Joseph Fourier

12

Les concepts : l'héritage

L'objet VETEMENTPropriétés : TauxTVA = 0.186 TauxMarge = 0.01 PrixAchat PrixVenteMéthodes : Calcul de la TVA = PrixVente * TauxTva Calcul du Prix de Vente = Prix Achat * (1 + TauxMarge)

L'objet PANTALON genre de VETEMENTPropriétés : Celles de VÊTEMENT TauxMarge = 0.015 (redéfinition de la propriété) Couleur = "Bleu" (Nouvelle propriété)Méthodes : Celles de VETEMENT Modification de la propriété COULEUR (nouvelle méthode)

(Les méthodes peuvent également être redéfinies)

Page 13: Y.GrussonIUT Génie Civil Université Joseph Fourier 1 Programmation VISUAL BASIC

Y.Grusson IUT Génie CivilUniversité Joseph Fourier

13

La programmation des applications Windows utilise des objets : fenêtre, bouton, menu, zone de saisie, liste déroulante, etc.

Ces objets ont des propriétés : couleur, libellé, position, taille, etc.

Ces objets ont des méthodes : Par exemple "Ajouter un élément dans une liste déroulante".Une des particularité de certaines méthodes est de réagir à des évènements extérieurs (le click de la souris par exemple)

Les concepts : l'évènement

Page 14: Y.GrussonIUT Génie Civil Université Joseph Fourier 1 Programmation VISUAL BASIC

Y.Grusson IUT Génie CivilUniversité Joseph Fourier

14

Présentation de Visual Basic

Les Objets Les propriétés

Structuredu projet

Le projet

Page 15: Y.GrussonIUT Génie Civil Université Joseph Fourier 1 Programmation VISUAL BASIC

Y.Grusson IUT Génie CivilUniversité Joseph Fourier

15

Présentation de Visual Basic

TextBox

CommandButtonComboBox

Label

LineLes objets

(ou les composants)

ListBox

Page 16: Y.GrussonIUT Génie Civil Université Joseph Fourier 1 Programmation VISUAL BASIC

Y.Grusson IUT Génie CivilUniversité Joseph Fourier

16

Présentation de Visual Basic

Exemple de propriétés pour un composant "TextBox"

Page 17: Y.GrussonIUT Génie Civil Université Joseph Fourier 1 Programmation VISUAL BASIC

Y.Grusson IUT Génie CivilUniversité Joseph Fourier

17

Présentation de Visual Basic

Héritage

Page 18: Y.GrussonIUT Génie Civil Université Joseph Fourier 1 Programmation VISUAL BASIC

Y.Grusson IUT Génie CivilUniversité Joseph Fourier

18

Présentation de Visual Basic

Les méthodes de l'objet "CommandButton" nommé dans l'application "Bouton"

La liste des objets de l'application

Page 19: Y.GrussonIUT Génie Civil Université Joseph Fourier 1 Programmation VISUAL BASIC

Y.Grusson IUT Génie CivilUniversité Joseph Fourier

19

Présentation de Visual Basic

Les méthodes de l'objet "CommandButton" nommé dans l'application "Bouton"

La liste des méthode de l'objet "Bouton"

Écriture de la méthode qui réagit à l'événement "Click" de l'objet "Bouton"

Page 20: Y.GrussonIUT Génie Civil Université Joseph Fourier 1 Programmation VISUAL BASIC

Y.Grusson IUT Génie CivilUniversité Joseph Fourier

20

SEANCE 2

LA STRUCTURE CONDITONNELLELa structure conditionnelle de programmation permet de mettre

en place une alternative en fonction d'une condition. L'expression générale 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

Page 21: Y.GrussonIUT Génie Civil Université Joseph Fourier 1 Programmation VISUAL BASIC

Y.Grusson IUT Génie CivilUniversité Joseph Fourier

21

SEANCE 2

Syntaxe VB la plus générale :

IF Expression_Logique THEN Bloc d'instructions si l'expression logique est vraieELSE Bloc d'instructions si l'expression logique est fausseEND IF

Ou plus simple :

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

Page 22: Y.GrussonIUT Génie Civil Université Joseph Fourier 1 Programmation VISUAL BASIC

Y.Grusson IUT Génie CivilUniversité Joseph Fourier

22

• L'expression_logique est une expression calculée qui ne peut retourner que 2 valeurs :

VRAI ou FAUX (TRUE ou FALSE)• Comme toute opération elle a un ensemble

d'opérateurs. Les plus courants sont :=, <, <=, >, >=, < >, ET, OU

• Exemples :A > 12Zone.Text = "Bonjour"AGE >= 18SURFACE1 < > SURFACE2AGE > 18 ET DOMICILE = "Grenoble"(ET et OU relient deux expressions logiques)

SEANCE 2

Page 23: Y.GrussonIUT Génie Civil Université Joseph Fourier 1 Programmation VISUAL BASIC

Y.Grusson IUT Génie CivilUniversité Joseph Fourier

23

SEANCE 2Exemple

Page 24: Y.GrussonIUT Génie Civil Université Joseph Fourier 1 Programmation VISUAL BASIC

Y.Grusson IUT Génie CivilUniversité Joseph Fourier

24

Derrière le bouton :

Private Sub Command1_Click()Dim Rep as Integer If Val(Zone1.Text) >= Val(Zone2.Text) Then Rep = MsgBox("Oui, A est supérieur ou égal à B", vbOKOnly, " A >= B ?") Else Rep = MsgBox("Non, A n'est pas supérieur ou égal à B", vbOKOnly, " A >= B ?") End IfEnd Sub

SEANCE 2

Page 25: Y.GrussonIUT Génie Civil Université Joseph Fourier 1 Programmation VISUAL BASIC

Y.Grusson IUT Génie CivilUniversité Joseph Fourier

25

SEANCE 2

Page 26: Y.GrussonIUT Génie Civil Université Joseph Fourier 1 Programmation VISUAL BASIC

Y.Grusson IUT Génie CivilUniversité Joseph Fourier

26

Private Sub Command1_Click()Dim Rep as Integer If Val(Zone1.Text) >= 5 Then 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 IfEnd Sub

SEANCE 2Utilisation d'un "SI" imbriqué (dans le "THEN" ou le "ELSE")

Page 27: Y.GrussonIUT Génie Civil Université Joseph Fourier 1 Programmation VISUAL BASIC

Y.Grusson IUT Génie CivilUniversité Joseph Fourier

27

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 IfEnd Sub

SEANCE 2

Autre solution

Page 28: Y.GrussonIUT Génie Civil Université Joseph Fourier 1 Programmation VISUAL BASIC

Y.Grusson IUT Génie CivilUniversité Joseph Fourier

28

Syntaxe avec des structures imbriquées :

IF Expression_Logique1 THEN Bloc d'instructions si l'expression logique1 est vraie (Ce bloc peut contenir une structure IF……END 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

SEANCE 2

Page 29: Y.GrussonIUT Génie Civil Université Joseph Fourier 1 Programmation VISUAL BASIC

Y.Grusson IUT Génie CivilUniversité Joseph Fourier

29

SEANCE 2

Page 30: Y.GrussonIUT Génie Civil Université Joseph Fourier 1 Programmation VISUAL BASIC

Y.Grusson IUT Génie CivilUniversité Joseph Fourier

30

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 = "Résultat = " & Str(Val(ZValeur.Text) * 6) ElseIf Opt2.Value = Checked Then LResult.Caption = "Résultat = " & Str(Val(ZValeur.Text) ^ 2) ElseIf Opt3.Value = Checked Then LResult.Caption = "Résultat = " & Str(Val(ZValeur.Text) / 3) ElseIf Opt4.Value = Checked Then LResult.Caption = "Résultat = " & Str(Val(ZValeur.Text) ^ 3) Else Rep = MsgBox("Il faut cocher...", vbOKOnly, "Erreur") End IfEnd Sub

SEANCE 2

Attention : ELSEIF et non ELSE IF. Pas de END IF pour fermer les ELSEIF.

Page 31: Y.GrussonIUT Génie Civil Université Joseph Fourier 1 Programmation VISUAL BASIC

Y.Grusson IUT Génie CivilUniversité Joseph Fourier

31

SEANCE 2

Page 32: Y.GrussonIUT Génie Civil Université Joseph Fourier 1 Programmation VISUAL BASIC

Y.Grusson IUT Génie CivilUniversité Joseph Fourier

32

Private Sub CIci_Click()Dim Rep As Integer Select Case Val(ZColor.Text) Case 1 Ovale.FillColor = vbRed Case 2 Ovale.FillColor = vbYellow Case 3 Ovale.FillColor = vbGreen Case 4 Ovale.FillColor = vbWhite Case Else Rep = MsgBox("Out", vbOKOnly, "Pfff!!!") End SelectEnd Sub

SEANCE 2

Attention cette structuren'est possible qu'avec un choix multiple sur la même valeur numérique–ici Val(ZColor.Text)-

Page 33: Y.GrussonIUT Génie Civil Université Joseph Fourier 1 Programmation VISUAL BASIC

Y.Grusson IUT Génie CivilUniversité Joseph Fourier

33

Syntaxe du SELECT CASE …. END SELECT :Select Case Variable Case liste de valeur 1 Bloc d'instructions quand "variable" possède une valeur de la liste 1

Case liste de valeur 2 Bloc d'instructions quand "variable" possède une valeur de la liste 2

Case liste de valeur 3 Bloc d'instructions quand "variable" possède une valeur de la liste 3

Case liste de valeur 4 Bloc d'instructions quand "variable" possède une valeur de la liste 4

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

End Select

SEANCE 2

Page 34: Y.GrussonIUT Génie Civil Université Joseph Fourier 1 Programmation VISUAL BASIC

Y.Grusson IUT Génie CivilUniversité Joseph Fourier

34

SEANCE 3

LA STRUCTURE REPETITIVE

Cette structure va permettre de répéter un bloc d'instructions. La syntaxe la plus générale de cette structure est la suivante :

TANT QUE Expression_Logique

FAIRE

Bloc d'instructions à exécuter tant que l'expression logique RESTE vraie

FIN TANT QUE

Page 35: Y.GrussonIUT Génie Civil Université Joseph Fourier 1 Programmation VISUAL BASIC

Y.Grusson IUT Génie CivilUniversité Joseph Fourier

35

SEANCE 3

Le bloc d'instructions est répété "tant que l'expression logique reste vraie", ceci implique que :• Pour s'arrêter, 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 même, il faut que l'expression logique soit initialisée à "vrai" (le plus généralement) ou à "faux".

(Vous remarquerez qu'une structure "Tant Que" peut ne pas répéter son bloc d'instructions si l'expression logique est initialisée à "faux")

Page 36: Y.GrussonIUT Génie Civil Université Joseph Fourier 1 Programmation VISUAL BASIC

Y.Grusson IUT Génie CivilUniversité Joseph Fourier

36

SEANCE 3

Il possible de réécrire la structure ainsi :

Instruction(s) d'initialisation de l'expression logique

TANT QUE Expression_Logique

FAIRE

Bloc d'instructions à exécuter 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 général l'Expression_Logique possède un opérande fixe (limite a ne pas dépasser) et un opérande variable qui tend vers l'opérande fixe.

Page 37: Y.GrussonIUT Génie Civil Université Joseph Fourier 1 Programmation VISUAL BASIC

Y.Grusson IUT Génie CivilUniversité Joseph Fourier

37

SEANCE 3

Syntaxe Visual Basic du "Tant Que"

DO WHILE Expression_logique

Bloc d'instructions à exécuter tant que l'expression logique RESTE vraie

LOOP

Page 38: Y.GrussonIUT Génie Civil Université Joseph Fourier 1 Programmation VISUAL BASIC

Y.Grusson IUT Génie CivilUniversité Joseph Fourier

38

SEANCE 3

Il existe deux autres structures répétitives :• La structure REPETER

REPETERBloc d'instructions jusqu'à ce que l'expression

devienne FAUSSEJUSQU'À Expression-logique

• En Visual BasicDO Bloc d'instructionsLOOP UNTIL Expression-logique

Ici, l'expression est évaluée à la fin de la boucle ; Par conséquent, le bloc est exécuté au moins une fois.

Page 39: Y.GrussonIUT Génie Civil Université Joseph Fourier 1 Programmation VISUAL BASIC

Y.Grusson IUT Génie CivilUniversité Joseph Fourier

39

SEANCE 3

• La structure POURPOUR Variable = Val_début à Val_Fin PAS Val_pasFAIRE

Bloc d'instructionsFIN POUR

• En Visual BasicFOR Variable = Val_début TO Val_Fin STEP Val_pas

Bloc d'instructionsNEXT

Remarque : Le pas est par défaut égal à 1 et la variable est de type entier.

Page 40: Y.GrussonIUT Génie Civil Université Joseph Fourier 1 Programmation VISUAL BASIC

Y.Grusson IUT Génie CivilUniversité Joseph Fourier

40

SEANCE 3

Exemple

Page 41: Y.GrussonIUT Génie Civil Université Joseph Fourier 1 Programmation VISUAL BASIC

Y.Grusson IUT Génie CivilUniversité Joseph Fourier

41

SEANCE 3Solution avec une structure DO WHILE….

Private Sub BLancer_Click()Dim I As IntegerDim Total As Integer (Déclaration locales de 2 variables)Total = 0I = 1 (Initialisation de l'expression logique)Do While I <= Val(ZLimite.Text) Total = Total + I I = I + 1 (Evolution de l'expression logique)LoopZTotal.Text = Str(Total)

End Sub

Page 42: Y.GrussonIUT Génie Civil Université Joseph Fourier 1 Programmation VISUAL BASIC

Y.Grusson IUT Génie CivilUniversité Joseph Fourier

42

SEANCE 3Solution avec une structure DO … UNTIL

Private Sub BLancer_Click()Dim I As IntegerDim Total As Integer (Déclaration locales de 2 variables) Total = 0I = 1 (Initialisation de l'expression logique)Do

Total = Total + I I = I + 1 (Déclaration locales de 2 variables)

Loop Until I > Val(ZLimite.Text)ZTotal.Text = Str(Total)

End Sub

Page 43: Y.GrussonIUT Génie Civil Université Joseph Fourier 1 Programmation VISUAL BASIC

Y.Grusson IUT Génie CivilUniversité Joseph Fourier

43

SEANCE 3

Solution avec une structure FOR … NEXT

Private Sub BLancer_Click() Dim I As Integer Dim Total As Integer (Déclaration 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 exécutant I=I+1) ZTotal.Text = Str(Total)End Sub

Cette solution est la plus adaptée à ce problème

Page 44: Y.GrussonIUT Génie Civil Université Joseph Fourier 1 Programmation VISUAL BASIC

Y.Grusson IUT Génie CivilUniversité Joseph Fourier

44

Séance deREVISION

et de Synthèse

SEANCE 4

Page 45: Y.GrussonIUT Génie Civil Université Joseph Fourier 1 Programmation VISUAL BASIC

Y.Grusson IUT Génie CivilUniversité Joseph Fourier

45

Procédures et Fonctions

• Ces deux notions correspondent à la notion plus générale de "sous-programme" (terme qui n'est plus utilisé actuellement).

• Le premier objectif d'une procédure ou d'une fonction est d'écrire qu'une seule fois une partie de programme qui se répète dans le même programme ou dans plusieurs programmes.

• Le second objectif est de fractionner un (gros) programme en plusieurs parties (plus petites) développées en général par des personnes différentes.

SEANCE 5

Page 46: Y.GrussonIUT Génie Civil Université Joseph Fourier 1 Programmation VISUAL BASIC

Y.Grusson IUT Génie CivilUniversité Joseph Fourier

46

Premier exemple de procédure :

SEANCE 5

Page 47: Y.GrussonIUT Génie Civil Université Joseph Fourier 1 Programmation VISUAL BASIC

Y.Grusson IUT Génie CivilUniversité Joseph Fourier

47

• Ce problème sera résolu à l'aide d'une procédure qui "dira" si un nombre entier est pair ou non.• Cette procédure sera réutilisable dans un autre programme.

• D'une façon générale, les procédures (ou fonctions) doivent être considérées 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 paramètres)

SEANCE 5

Page 48: Y.GrussonIUT Génie Civil Université Joseph Fourier 1 Programmation VISUAL BASIC

Y.Grusson IUT Génie CivilUniversité Joseph Fourier

48

• La procédure demandée (un nombre entier est-il pair ou impair ?) devra donc communiquer avec le programme qui l'utilise.

• Pour répondre à la question la procédure devra donc :

– Connaître le nombre entier concerné,– Donner sa réponse.

• La communication entre la procédure (ou la fonction) se fera au travers d'une interface.

SEANCE 5

Page 49: Y.GrussonIUT Génie Civil Université Joseph Fourier 1 Programmation VISUAL BASIC

Y.Grusson IUT Génie CivilUniversité Joseph Fourier

49

L'interface :

SEANCE 5

1

1 Le programme communique les données (ici le nombre entier) 2

2 La procédure récupère les données3

3 La procédure communique le résultat (le nombre est ou n'est pas pair)

4

4 Le programme récupère et utilise le résultat

ProgrammePrincipal

(ou appelant)

Procédure

Interface

Page 50: Y.GrussonIUT Génie Civil Université Joseph Fourier 1 Programmation VISUAL BASIC

Y.Grusson IUT Génie CivilUniversité Joseph Fourier

50

Sub PairOuiOuNon(ByVal Nbre As Long, ByRef RepON As Boolean) RepON = False If Nbre Mod 2 = 0 Then RepON = True End IfEnd SubPrivate Sub BGenerer_Click()Dim OuiNon As BooleanDim Aleas As LongDim I As Integer Randomize Liste.Clear For I = 1 To 20 Aleas = Int(Rnd * 200) Call PairOuiOuNon(Aleas, OuiNon) If OuiNon = True Then Liste.AddItem (Aleas) NextEnd Sub

SEANCE 5

La valeur contenue par "ALEAS" est passée à la procédure

La procédure récupère la valeur d'ALEAS dans la variable NBRE. La procédure répond

par true ou false dans la variable RepON.

La réponse de la procédure est récupérée dans OUINON

Page 51: Y.GrussonIUT Génie Civil Université Joseph Fourier 1 Programmation VISUAL BASIC

Y.Grusson IUT Génie CivilUniversité Joseph Fourier

51

Procédure (Syntaxe générale) La procédure :

Sub Nom_procedure (Paramètres )Ou Sub Nom_procedure ( )

Corps de la procédure

End Sub

Appel de la procédure :Call Nom_procedure(Paramètres)Ou Call Nom_procedure

SEANCE 5

Absence de paramètres

Page 52: Y.GrussonIUT Génie Civil Université Joseph Fourier 1 Programmation VISUAL BASIC

Y.Grusson IUT Génie CivilUniversité Joseph Fourier

52

Procédure (Syntaxe détaillée)

Sub Nom_Procedure (ByVal NVar1 as type_NVar1, ByRef Nvar2 as type_NVar2,… ) (Récupération des valeurs de Var1 et Var2 dans NVar1 et

NVar2)Modifications éventuelles de NVar1 et NVar2

End Sub

Appel de la procédure :

(Initialisation de Var1 et Var2)Call Nom_Procedure (Var1, Var2,…)(Récupération de la valeur de NVar2 dans Var2. Par contre

Var1 n'est pas touchée par les modifications de NVar1)

SEANCE 5

Attention à l'ordre

Page 53: Y.GrussonIUT Génie Civil Université Joseph Fourier 1 Programmation VISUAL BASIC

Y.Grusson IUT Génie CivilUniversité Joseph Fourier

53

Il est également possible d'appeler une procédure en précisant directement des valeurs.

Par exemple:Sub LaProc (Byval Age as integer, Byval Nom

as string) …….End Sub

Call LaProc (12, "Pierre")

SEANCE 5

Page 54: Y.GrussonIUT Génie Civil Université Joseph Fourier 1 Programmation VISUAL BASIC

Y.Grusson IUT Génie CivilUniversité Joseph Fourier

54

Second exemple de procédure :

Exemple : Écrire une procédure qui calcule n !

SEANCE 5

Page 55: Y.GrussonIUT Génie Civil Université Joseph Fourier 1 Programmation VISUAL BASIC

Y.Grusson IUT Génie CivilUniversité Joseph Fourier

55

Sub Factoriel(ByVal N As Long, ByRef Prod As Double) Dim I As Integer Prod = 1 For I = 1 To N Prod = Prod * I NextEnd Sub

Private Sub BFacto_Click() Dim Facto As Double Facto = 1 Call Factoriel(Val(Zn.Text), Facto) ZFacto.Text = Str(Facto)End Sub

SEANCE 5

Page 56: Y.GrussonIUT Génie Civil Université Joseph Fourier 1 Programmation VISUAL BASIC

Y.Grusson IUT Génie CivilUniversité Joseph Fourier

56

Contre exemple : Passons les deux paramètres 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 NextEnd Sub

Private Sub BFacto_Click() Dim Facto As Double Facto = 1 Call Factoriel(Val(Zn.Text), Facto) ZFacto.Text = Str(Facto)End Sub

SEANCE 5

Page 57: Y.GrussonIUT Génie Civil Université Joseph Fourier 1 Programmation VISUAL BASIC

Y.Grusson IUT Génie CivilUniversité Joseph Fourier

57

Contre exemple : Passons les deux paramètres par valeur

SEANCE 5

La variable FACTO n'a pas été influencée par la procédure et à conserver sa valeur d'appel

Page 58: Y.GrussonIUT Génie Civil Université Joseph Fourier 1 Programmation VISUAL BASIC

Y.Grusson IUT Génie CivilUniversité Joseph Fourier

58

Procédures et Fonctions

Les FONCTIONS jouent un rôle identique à celui des procédures, elles peuvent posséder des paramètres et retourner des résultats grâce à eux.

Deux différences néanmoins, les fonctions : Retournent obligatoirement un résultat. S'utilisent toujours dans une expression.

(De nombreuses fonctions du langage ont déjà été utilisées : Ucase, Lcase, Mid, Len, Sqr, Rnd, etc.)

SEANCE 6

Page 59: Y.GrussonIUT Génie Civil Université Joseph Fourier 1 Programmation VISUAL BASIC

Y.Grusson IUT Génie CivilUniversité Joseph Fourier

59

Exemple de fonction :

SEANCE 6

Page 60: Y.GrussonIUT Génie Civil Université Joseph Fourier 1 Programmation VISUAL BASIC

Y.Grusson IUT Génie CivilUniversité Joseph Fourier

60

Function Resultat(ByVal N As Long, ByVal Puis As Integer) As Long

Resultat = N ^ PuisEnd Function

Private Sub BCarre_Click() Dim I As Integer For I = Val(ZDebut) To Val(ZFin) Carre.AddItem (Resultat(I, 2)) NextEnd Sub

SEANCE 6

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

Page 61: Y.GrussonIUT Génie Civil Université Joseph Fourier 1 Programmation VISUAL BASIC

Y.Grusson IUT Génie CivilUniversité Joseph Fourier

61

Syntaxe : La fonction :

Function Nom_Fonc (Paramètres éventuels)As type_du résultat

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

Considérer le nom de la fonction comme un paramètre (ByRef)

SEANCE 6

Page 62: Y.GrussonIUT Génie Civil Université Joseph Fourier 1 Programmation VISUAL BASIC

Y.Grusson IUT Génie CivilUniversité Joseph Fourier

62

AnnexeFunction Resultat(ByVal N As Long, ByVal Puis As Integer)

As Long Resultat = N ^ PuisEnd Function

Private Sub BCarre_Click() Dim I As Integer For I = Val(ZDebut) To Val(ZFin) Carre.AddItem (Resultat(I, 2)) NextEnd Sub

SEANCE 6

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

En conservant les 2 boutons, les 2 procédures peuvent-elles se réunir en une seule ?

Page 63: Y.GrussonIUT Génie Civil Université Joseph Fourier 1 Programmation VISUAL BASIC

Y.Grusson IUT Génie CivilUniversité Joseph Fourier

63

AnnexeCréer un bouton puis

le copier et le coller afin d'obtenir un groupe de composants indicés

SEANCE 6

Page 64: Y.GrussonIUT Génie Civil Université Joseph Fourier 1 Programmation VISUAL BASIC

Y.Grusson IUT Génie CivilUniversité Joseph Fourier

64

Annexe

Function Resultat(ByVal N As Long, ByVal Puis As Integer) As Long Resultat = N ^ PuisEnd 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 SelectNextEnd Sub

SEANCE 6

Page 65: Y.GrussonIUT Génie Civil Université Joseph Fourier 1 Programmation VISUAL BASIC

Y.Grusson IUT Génie CivilUniversité Joseph Fourier

65

Les TABLEAUX

Un tableau est une structure de données qui permet de stocker en mémoire des informations généralement de même type. Chaque valeur est repérée dans le tableau par un indice qui indique sa position.

Un tableau est une variable complexe.

SEANCE 7

Page 66: Y.GrussonIUT Génie Civil Université Joseph Fourier 1 Programmation VISUAL BASIC

Y.Grusson IUT Génie CivilUniversité Joseph Fourier

66

Représentation d'un tableau à une dimension :Nom du tableau : PRIX

SEANCE 7

12.5 1.6 15 12.1 16.9 1.24 8.4 9.0 0.60 22.8 3.45

1 2 3 4 5 6 7 8 9 10 11

Ce tableau contient des réels.

Il contient 11 éléments.

Le Nème élément sera noté PRIX(N) c'est à dire

Nom_du_tableau (Numéro_de_l'élément)

Exemple : la valeur du 7ème élément, noté PRIX(7) est 8.4

Page 67: Y.GrussonIUT Génie Civil Université Joseph Fourier 1 Programmation VISUAL BASIC

Y.Grusson IUT Génie CivilUniversité Joseph Fourier

67

Un tableau doit être DECLARE puis INITIALISE avant d'être EXPLOITE.

DECLARATION :

PRIVATE (ou DIM) PRIX ( 1 TO 11 ) AS SINGLE

SEANCE 7

Nom du tableauValeur inférieure

de l'indiceValeur supérieure

de l'indice

Type de la donnée contenue par le tableau

Les indices commencent généralement à 1 ou à 0

Page 68: Y.GrussonIUT Génie Civil Université Joseph Fourier 1 Programmation VISUAL BASIC

Y.Grusson IUT Génie CivilUniversité Joseph Fourier

68

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

SEANCE 7

Page 69: Y.GrussonIUT Génie Civil Université Joseph Fourier 1 Programmation VISUAL BASIC

Y.Grusson IUT Génie CivilUniversité Joseph Fourier

69

INITIALISATION :Un tableau étant une structure implantée en mémoire

centrale (comme une variable simple), il est obligatoire de l'initialisée (le remplir) au début de chaque programme. Cette opération 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).

SEANCE 7

Page 70: Y.GrussonIUT Génie Civil Université Joseph Fourier 1 Programmation VISUAL BASIC

Y.Grusson IUT Génie CivilUniversité Joseph Fourier

70

A l'activation du programme :

Private AGE(0 To 5) As IntegerPrivate Sub Form_activate() AGE(0) = 5 AGE(1) = 12 AGE(2) = 3 AGE(3) = 45 AGE(4) = 48 AGE(5) = 16End Sub

SEANCE 7

Page 71: Y.GrussonIUT Génie Civil Université Joseph Fourier 1 Programmation VISUAL BASIC

Y.Grusson IUT Génie CivilUniversité Joseph Fourier

71

Saisie par l'utilisateur puis affectée au tableau :Soit Zsaisie un TextBox et I = 3

AGE(I) = Val(Zsaisie.Text)permettra d'affectée la valeur saisie dans la zone

Zsaisie au troisième élément du tableau AGE.

Remplissage aléatoireDIM NBRE(1 TO 10) AS DOUBLERANDOMIZEFOR J=1 TO 10

NBRE(J) = INT(RND*100)NEXT

SEANCE 7

Page 72: Y.GrussonIUT Génie Civil Université Joseph Fourier 1 Programmation VISUAL BASIC

Y.Grusson IUT Génie CivilUniversité Joseph Fourier

72

Cas particulier : L'indice peut lui-même avoir une signification dans le contexte traité. Par exemple :

DIM EFFECTIF (1 TO 45) AS LONGEFFECTIF est un tableau dans lequel le Néme élément

contient le nombre de personnes ayant l'âge N (l'indice correspond à la classe d'âge).

Soit ZAge et ZEffectif, deux TextBoxEFFECTIF(Val(ZAge.text)) = Val(ZEffectif.Text)

Permet d'affecter l'effectif (saisi dans ZEffectif) à la classe d'âge correspondante (saisi dans ZAge)

SEANCE 7

Page 73: Y.GrussonIUT Génie Civil Université Joseph Fourier 1 Programmation VISUAL BASIC

Y.Grusson IUT Génie CivilUniversité Joseph Fourier

73

EXPLOITATION : L'exploitation peut se faire :

DIRECTEMENT en accédant directement à l'élément 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 données soit pour rechercher une valeur dont on ne connaît pas l'indice.

SEANCE 7

Page 74: Y.GrussonIUT Génie Civil Université Joseph Fourier 1 Programmation VISUAL BASIC

Y.Grusson IUT Génie CivilUniversité Joseph Fourier

74

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)NEXTZONE.TEXT = STR(TOTAL)

SEANCE 7

Page 75: Y.GrussonIUT Génie Civil Université Joseph Fourier 1 Programmation VISUAL BASIC

Y.Grusson IUT Génie CivilUniversité Joseph Fourier

75

Quel est la première classe d'âge ayant un effectif supérieur ou égal à 2000 ?FOR I=1 TO 45

IF EFFECTIF(I) >= 2000 THENZAGE.TEXT = STR(I)ZEFFECTIF.TEXT = STR(EFFECTIF(I))

END IFNEXT

SEANCE 7

Mauvaise solution car obtient la dernière classe d'âge et non la première.

Page 76: Y.GrussonIUT Génie Civil Université Joseph Fourier 1 Programmation VISUAL BASIC

Y.Grusson IUT Génie CivilUniversité Joseph Fourier

76

Quel est la première classe d'âge ayant un effectif supérieur ou égal à 2000 ?I=1TROUVE = FALSEDO WHILE TROUVE = FALSE AND I <= 45

IF EFFECTIF(I) >= 2000 THEN TROUVE = TRUEI=I+1

LOOPIF TROUVE = TRUE THEN ZAGE.TEXT = STR(I-1)

ZEFFECTIF.TEXT = STR(EFFECTIF(I-1)END IF

SEANCE 7

Page 77: Y.GrussonIUT Génie Civil Université Joseph Fourier 1 Programmation VISUAL BASIC

Y.Grusson IUT Génie CivilUniversité Joseph Fourier

77

Quel est la première classe d'âge ayant un effectif supérieur ou égal à 2000 ? (autre solution)I=1DO WHILE EFFECTIF(I) < 2000 AND I <= 45

I=I+1LOOPIF I <= 45 THEN ZAGE.TEXT = STR(I-1)

ZEFFECTIF.TEXT = STR(EFFECTIF(I-1)END IF

SEANCE 7

Page 78: Y.GrussonIUT Génie Civil Université Joseph Fourier 1 Programmation VISUAL BASIC

Y.Grusson IUT Génie CivilUniversité Joseph Fourier

78

Les tableaux à 2 dimensions

Ces tableaux se définissent à l'aide de 2 coordonnées, le premier représentant la ligne, le second la colonne. Par exemple :

SEANCE 7

A R

MQ W

Z

P RO F

K

X

1

3

32 4

2

1

Page 79: Y.GrussonIUT Génie Civil Université Joseph Fourier 1 Programmation VISUAL BASIC

Y.Grusson IUT Génie CivilUniversité Joseph Fourier

79

Ce tableau nommé "LETTR" se déclarera de la façon suivante :PRIVATE LETTR (1 TO 3, 1 TO 4) AS STRING

SEANCE 7

A R

MQ W

Z

P RO F

K

X

1

3

32 4

2

1

LIGNE 1 à 3 COLONNE de 1 à 4

Page 80: Y.GrussonIUT Génie Civil Université Joseph Fourier 1 Programmation VISUAL BASIC

Y.Grusson IUT Génie CivilUniversité Joseph Fourier

80

L'accès aux éléments se fera ainsi :LETTR( 2 , 3 )

SEANCE 7

A R

MQ W

Z

P RO F

K

X

1

3

32 4

2

1

Coordonnée de la ligne Coordonnée de la colonne

Page 81: Y.GrussonIUT Génie Civil Université Joseph Fourier 1 Programmation VISUAL BASIC

Y.Grusson IUT Génie CivilUniversité Joseph Fourier

81

Parcours d'un tableauLe parcours d'un tableau se fera à l'aide de deux

structures répétitives imbriquées, par exemple :

PRIVATE VOLUME(1 TO 12, 1 TO 15) AS DOUBLE

RANDOMIZEFOR L = 1 TO 12 FOR C = 1 to 15 VOLUME(L,C)=RND*250 NEXT CNEXT L

SEANCE 7

Page 82: Y.GrussonIUT Génie Civil Université Joseph Fourier 1 Programmation VISUAL BASIC

Y.Grusson IUT Génie CivilUniversité Joseph Fourier

82

Séance deREVISION

et de Synthèse

SEANCE 8