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

Programmation VISUAL BASIC

Présentations similaires


Présentation au sujet: "Programmation VISUAL BASIC"— Transcription de la présentation:

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

2 Université Joseph Fourier
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) Y.Grusson IUT Génie Civil Université Joseph Fourier

3 Université Joseph Fourier
SEANCE 1 La Programmation Le langage Les concepts L’objet Héritage Évènement Présentation de Visual Basic Mise en pratique Y.Grusson IUT Génie Civil Université Joseph Fourier

4 Université Joseph Fourier
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. Y.Grusson IUT Génie Civil Université Joseph Fourier

5 Université Joseph Fourier
La Programmation 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.) Y.Grusson IUT Génie Civil Université Joseph Fourier

6 Université Joseph Fourier
La Programmation Écran PROGRAMME DONNEES Mémoire centrale Clavier Souris Imp. Bande Et … SCANNER, MODEM, APPAREIL PHOTO NUMERIQUE, etc. Y.Grusson IUT Génie Civil Université Joseph Fourier

7 Université Joseph Fourier
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 : Y.Grusson IUT Génie Civil Université Joseph Fourier

8 Compilation / Interprétation
La Compilation : Elle se fait une seule fois Programme directement exécutable par le processeur (.exe) Programme écrit par le programmeur COMPILATEUR Les langages sont variés : Assembleur, C, C++, Pascal, ADA, VisualBasic, Fortran, Cobol, etc. Précision : Le compilateur est spécifique à la fois au processeur et au langage Y.Grusson IUT Génie Civil Université Joseph Fourier

9 Compilation / Interprétation
L'interprétation : Elle se fait à chaque exécution Exécution de la ligne traduite Programme écrit par le programmeur 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 Y.Grusson IUT Génie Civil Université Joseph Fourier

10 Université Joseph Fourier
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 Y.Grusson IUT Génie Civil Université Joseph Fourier

11 Université Joseph Fourier
Les concepts : l'objet 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. Y.Grusson IUT Génie Civil Université Joseph Fourier

12 Les concepts : l'héritage
L'objet VETEMENT Propriétés : TauxTVA = 0.186 TauxMarge = 0.01 PrixAchat PrixVente Méthodes : Calcul de la TVA = PrixVente * TauxTva Calcul du Prix de Vente = Prix Achat * (1 + TauxMarge) L'objet PANTALON genre de VETEMENT Propriétés : Celles de VÊTEMENT TauxMarge = (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) Y.Grusson IUT Génie Civil Université Joseph Fourier

13 Les concepts : l'évènement
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) Y.Grusson IUT Génie Civil Université Joseph Fourier

14 Présentation de Visual Basic
Structure du projet Le projet Les propriétés Les Objets Y.Grusson IUT Génie Civil Université Joseph Fourier

15 Présentation de Visual Basic
Label TextBox CommandButton ComboBox ListBox Les objets (ou les composants) Line Y.Grusson IUT Génie Civil Université Joseph Fourier

16 Présentation de Visual Basic
Exemple de propriétés pour un composant "TextBox" Y.Grusson IUT Génie Civil Université Joseph Fourier

17 Présentation de Visual Basic
Héritage Y.Grusson IUT Génie Civil Université 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 Y.Grusson IUT Génie Civil Université 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" Y.Grusson IUT Génie Civil Université Joseph Fourier

20 LA STRUCTURE CONDITONNELLE
SEANCE 2 LA STRUCTURE CONDITONNELLE La 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 Y.Grusson IUT Génie Civil Université Joseph Fourier

21 Université Joseph Fourier
SEANCE 2 Syntaxe VB la plus générale : 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 : Y.Grusson IUT Génie Civil Université Joseph Fourier

22 SEANCE 2 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 > 12 Zone.Text = "Bonjour" AGE >= 18 SURFACE1 < > SURFACE2 AGE > 18 ET DOMICILE = "Grenoble" (ET et OU relient deux expressions logiques) Y.Grusson IUT Génie Civil Université Joseph Fourier

23 Université Joseph Fourier
SEANCE 2 Exemple Y.Grusson IUT Génie Civil Université Joseph Fourier

24 Université Joseph Fourier
SEANCE 2 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 If End Sub Y.Grusson IUT Génie Civil Université Joseph Fourier

25 Université Joseph Fourier
SEANCE 2 Y.Grusson IUT Génie Civil Université Joseph Fourier

26 Université Joseph Fourier
SEANCE 2 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, End If End Sub Utilisation d'un "SI" imbriqué (dans le "THEN" ou le "ELSE") Y.Grusson IUT Génie Civil Université Joseph Fourier

27 Université Joseph Fourier
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, End If End Sub Y.Grusson IUT Génie Civil Université Joseph Fourier

28 Université Joseph Fourier
SEANCE 2 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 Y.Grusson IUT Génie Civil Université Joseph Fourier

29 Université Joseph Fourier
SEANCE 2 Y.Grusson IUT Génie Civil Université Joseph Fourier

30 Université Joseph Fourier
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 = "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 If End Sub Attention : ELSEIF et non ELSE IF. Pas de END IF pour fermer les ELSEIF. Y.Grusson IUT Génie Civil Université Joseph Fourier

31 Université Joseph Fourier
SEANCE 2 Y.Grusson IUT Génie Civil Université Joseph Fourier

32 Université Joseph Fourier
SEANCE 2 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 Select End Sub Attention cette structure n'est possible qu'avec un choix multiple sur la même valeur numérique –ici Val(ZColor.Text)- Y.Grusson IUT Génie Civil Université Joseph Fourier

33 Université Joseph Fourier
SEANCE 2 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 Y.Grusson IUT Génie Civil Université Joseph Fourier

34 LA STRUCTURE REPETITIVE
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 Y.Grusson IUT Génie Civil Université Joseph Fourier

35 Université Joseph Fourier
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") Y.Grusson IUT Génie Civil Université Joseph Fourier

36 Université Joseph Fourier
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. Y.Grusson IUT Génie Civil Université Joseph Fourier

37 Université Joseph Fourier
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 Y.Grusson IUT Génie Civil Université Joseph Fourier

38 Université Joseph Fourier
SEANCE 3 Il existe deux autres structures répétitives : 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 évaluée à la fin de la boucle ; Par conséquent, le bloc est exécuté au moins une fois. Y.Grusson IUT Génie Civil Université Joseph Fourier

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

40 Université Joseph Fourier
SEANCE 3 Exemple Y.Grusson IUT Génie Civil Université Joseph Fourier

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

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

43 Université Joseph Fourier
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 Y.Grusson IUT Génie Civil Université Joseph Fourier

44 Université Joseph Fourier
SEANCE 4 Séance de REVISION et de Synthèse Y.Grusson IUT Génie Civil Université Joseph Fourier

45 Procédures et Fonctions
SEANCE 5 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. Y.Grusson IUT Génie Civil Université Joseph Fourier

46 Université Joseph Fourier
SEANCE 5 Premier exemple de procédure : Y.Grusson IUT Génie Civil Université Joseph Fourier

47 Université Joseph Fourier
SEANCE 5 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) Y.Grusson IUT Génie Civil Université Joseph Fourier

48 Université Joseph Fourier
SEANCE 5 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. Y.Grusson IUT Génie Civil Université Joseph Fourier

49 Université Joseph Fourier
SEANCE 5 L'interface : 1 Le programme communique les données (ici le nombre entier) Programme Principal (ou appelant) 4 Le programme récupère et utilise le résultat Interface 2 La procédure récupère les données 3 La procédure communique le résultat (le nombre est ou n'est pas pair) Procédure Y.Grusson IUT Génie Civil Université Joseph Fourier

50 Université Joseph Fourier
SEANCE 5 Sub PairOuiOuNon(ByVal Nbre As Long, ByRef RepON As Boolean) RepON = False If Nbre Mod 2 = 0 Then RepON = True End If End Sub Private Sub BGenerer_Click() Dim OuiNon As Boolean Dim Aleas As Long Dim 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) Next 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 valeur contenue par "ALEAS" est passée à la procédure La réponse de la procédure est récupérée dans OUINON Y.Grusson IUT Génie Civil Université Joseph Fourier

51 Université Joseph Fourier
SEANCE 5 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 Absence de paramètres Y.Grusson IUT Génie Civil Université Joseph Fourier

52 Université Joseph Fourier
SEANCE 5 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) Attention à l'ordre Y.Grusson IUT Génie Civil Université Joseph Fourier

53 Université Joseph Fourier
SEANCE 5 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") Y.Grusson IUT Génie Civil Université Joseph Fourier

54 Université Joseph Fourier
SEANCE 5 Second exemple de procédure : Exemple : Écrire une procédure qui calcule n ! Y.Grusson IUT Génie Civil Université Joseph Fourier

55 Université Joseph Fourier
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) Y.Grusson IUT Génie Civil Université Joseph Fourier

56 Université Joseph Fourier
SEANCE 5 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 Next End Sub Private Sub BFacto_Click() Dim Facto As Double Facto = 1 Call Factoriel(Val(Zn.Text), Facto) ZFacto.Text = Str(Facto) Y.Grusson IUT Génie Civil Université Joseph Fourier

57 Université Joseph Fourier
SEANCE 5 Contre exemple : Passons les deux paramètres par valeur La variable FACTO n'a pas été influencée par la procédure et à conserver sa valeur d'appel Y.Grusson IUT Génie Civil Université Joseph Fourier

58 Procédures et Fonctions
SEANCE 6 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.) Y.Grusson IUT Génie Civil Université Joseph Fourier

59 Université Joseph Fourier
SEANCE 6 Exemple de fonction : Y.Grusson IUT Génie Civil Université Joseph Fourier

60 Université Joseph Fourier
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 Y.Grusson IUT Génie Civil Université Joseph Fourier

61 Université Joseph Fourier
SEANCE 6 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) Y.Grusson IUT Génie Civil Université Joseph Fourier

62 Université Joseph Fourier
SEANCE 6 Annexe 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 En conservant les 2 boutons, les 2 procédures peuvent-elles se réunir en une seule ? Private Sub BCube_Click() Dim I As Integer For I = Val(ZDebut) To Val(ZFin) Cube.AddItem (Resultat(I, 3)) Next End Sub Y.Grusson IUT Génie Civil Université Joseph Fourier

63 Université Joseph Fourier
SEANCE 6 Annexe Créer un bouton puis le copier et le coller afin d'obtenir un groupe de composants indicés Y.Grusson IUT Génie Civil Université Joseph Fourier

64 Université Joseph Fourier
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 Génie Civil Université Joseph Fourier

65 Université Joseph Fourier
SEANCE 7 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. Y.Grusson IUT Génie Civil Université Joseph Fourier

66 Nom_du_tableau (Numéro_de_l'élément)
SEANCE 7 Représentation d'un tableau à une dimension : Nom du tableau : PRIX 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 Y.Grusson IUT Génie Civil Université Joseph Fourier

67 SEANCE 7 Un tableau doit être DECLARE puis INITIALISE avant d'être EXPLOITE. DECLARATION : PRIVATE (ou DIM) PRIX ( 1 TO 11 ) AS SINGLE Type de la donnée contenue par le tableau Nom du tableau Valeur inférieure de l'indice Valeur supérieure de l'indice Les indices commencent généralement à 1 ou à 0 Y.Grusson IUT Génie Civil Université Joseph Fourier

68 Université Joseph Fourier
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 Génie Civil Université Joseph Fourier

69 Université Joseph Fourier
SEANCE 7 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). Y.Grusson IUT Génie Civil Université Joseph Fourier

70 Université Joseph Fourier
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 Génie Civil Université Joseph Fourier

71 AGE(I) = Val(Zsaisie.Text)
SEANCE 7 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éatoire DIM NBRE(1 TO 10) AS DOUBLE RANDOMIZE FOR J=1 TO 10 NBRE(J) = INT(RND*100) NEXT Y.Grusson IUT Génie Civil Université Joseph Fourier

72 SEANCE 7 Cas particulier : L'indice peut lui-même avoir une signification dans le contexte traité. Par exemple : DIM EFFECTIF (1 TO 45) AS LONG EFFECTIF 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 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 Génie Civil Université Joseph Fourier

73 SEANCE 7 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. Y.Grusson IUT Génie Civil Université Joseph Fourier

74 DIM EFFECTIF (1 TO 45) AS LONG ZONE.TEXT = STR(EFFECTIF(28))
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 Génie Civil Université Joseph Fourier

75 Université Joseph Fourier
SEANCE 7 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 THEN ZAGE.TEXT = STR(I) ZEFFECTIF.TEXT = STR(EFFECTIF(I)) END IF NEXT Mauvaise solution car obtient la dernière classe d'âge et non la première. Y.Grusson IUT Génie Civil Université Joseph Fourier

76 Université Joseph Fourier
SEANCE 7 Quel est la première classe d'âge ayant un effectif supérieur 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 Génie Civil Université Joseph Fourier

77 Université Joseph Fourier
SEANCE 7 Quel est la première classe d'âge ayant un effectif supérieur 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 Génie Civil Université Joseph Fourier

78 Les tableaux à 2 dimensions
SEANCE 7 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 : A R M Q W Z P O F K X 1 3 2 4 Y.Grusson IUT Génie Civil Université Joseph Fourier

79 PRIVATE LETTR (1 TO 3, 1 TO 4) AS STRING
SEANCE 7 A R M Q W Z P O F K X 1 3 2 4 Ce tableau nommé "LETTR" se déclarera de la façon suivante : PRIVATE LETTR (1 TO 3, 1 TO 4) AS STRING LIGNE 1 à 3 COLONNE de 1 à 4 Y.Grusson IUT Génie Civil Université Joseph Fourier

80 Coordonnée de la colonne
SEANCE 7 A R M Q W Z P O F K X 1 3 2 4 L'accès aux éléments se fera ainsi : LETTR( 2 , 3 ) Coordonnée de la ligne Coordonnée de la colonne Y.Grusson IUT Génie Civil Université Joseph Fourier

81 Université Joseph Fourier
SEANCE 7 Parcours d'un tableau Le 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 RANDOMIZE FOR L = 1 TO 12 FOR C = 1 to 15 VOLUME(L,C)=RND*250 NEXT C NEXT L Y.Grusson IUT Génie Civil Université Joseph Fourier

82 Université Joseph Fourier
SEANCE 8 Séance de REVISION et de Synthèse Y.Grusson IUT Génie Civil Université Joseph Fourier


Télécharger ppt "Programmation VISUAL BASIC"

Présentations similaires


Annonces Google