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

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

Présentations similaires


Présentation au sujet: "Y.GrussonIUT Génie Civil Université Joseph Fourier 1 Programmation VISUAL BASIC."— Transcription de la présentation:

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

2 Y.GrussonIUT Génie Civil Université Joseph Fourier 2 PLAN DES SEANCES Séance 1 : Prise en main de loutils 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)

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

4 Y.GrussonIUT Génie Civil Université 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.

5 Y.GrussonIUT Génie Civil Université 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 lutilisateur (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

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

7 Y.GrussonIUT Génie Civil Université 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 :

8 Y.GrussonIUT Génie Civil Université 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 Programme directement exécutable par le processeur (.exe) COMPILATEUR Les langages sont variés : Assembleur, C, C++, Pascal, ADA, VisualBasic, Fortran, Cobol, etc.

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

10 Y.GrussonIUT Génie Civil Université 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

11 Y.GrussonIUT Génie Civil Université 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

12 Y.GrussonIUT Génie Civil Université Joseph Fourier 12 Les concepts : l'héritage L'objet VETEMENT Propriétés : TauxTVA = 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)

13 Y.GrussonIUT Génie Civil Université 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

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

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

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

17 Y.GrussonIUT Génie Civil Université Joseph Fourier 17 Présentation de Visual Basic Héritage

18 Y.GrussonIUT 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

19 Y.GrussonIUT 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"

20 Y.GrussonIUT Génie Civil Université Joseph Fourier 20 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

21 Y.GrussonIUT Génie Civil Université Joseph Fourier 21 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 : IF Expression_Logique THEN Bloc d'instructions si l'expression logique est vraie END IF

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

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

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

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

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

27 Y.GrussonIUT Génie Civil Université 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 If End Sub SEANCE 2 Autre solution

28 Y.GrussonIUT Génie Civil Université 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

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

30 Y.GrussonIUT Génie Civil Université 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 If End Sub SEANCE 2 Attention : ELSEIF et non ELSE IF. Pas de END IF pour fermer les ELSEIF.

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

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

33 Y.GrussonIUT Génie Civil Université 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

34 Y.GrussonIUT Génie Civil Université 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

35 Y.GrussonIUT Génie Civil Université 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")

36 Y.GrussonIUT Génie Civil Université 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.

37 Y.GrussonIUT Génie Civil Université 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

38 Y.GrussonIUT Génie Civil Université Joseph Fourier 38 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.

39 Y.GrussonIUT Génie Civil Université Joseph Fourier 39 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 Bloc d'instructions NEXT Remarque : Le pas est par défaut égal à 1 et la variable est de type entier.

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

41 Y.GrussonIUT Génie Civil Université Joseph Fourier 41 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 + 1 (Evolution de l'expression logique) Loop ZTotal.Text = Str(Total) End Sub

42 Y.GrussonIUT Génie Civil Université Joseph Fourier 42 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 + 1 (Déclaration locales de 2 variables) Loop Until I > Val(ZLimite.Text) ZTotal.Text = Str(Total) End Sub

43 Y.GrussonIUT Génie Civil Université 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

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

45 Y.GrussonIUT Génie Civil Université 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

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

47 Y.GrussonIUT Génie Civil Université 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

48 Y.GrussonIUT Génie Civil Université 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

49 Y.GrussonIUT Génie Civil Université Joseph Fourier 49 L'interface : SEANCE Le programme communique les données (ici le nombre entier) 2 2 La procédure récupère les données 3 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 Programme Principal (ou appelant) Procédure Interface

50 Y.GrussonIUT Génie Civil Université Joseph Fourier 50 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 End 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

51 Y.GrussonIUT Génie Civil Université 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

52 Y.GrussonIUT Génie Civil Université 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

53 Y.GrussonIUT Génie Civil Université 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

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

55 Y.GrussonIUT Génie Civil Université 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 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 SEANCE 5

56 Y.GrussonIUT Génie Civil Université 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 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 SEANCE 5

57 Y.GrussonIUT Génie Civil Université 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

58 Y.GrussonIUT Génie Civil Université 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

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

60 Y.GrussonIUT Génie Civil Université Joseph Fourier 60 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 SEANCE 6 Private Sub BCube_Click() Dim I As Integer For I = Val(ZDebut) To Val(ZFin) Cube.AddItem (Resultat(I, 3)) Next End Sub

61 Y.GrussonIUT Génie Civil Université 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

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

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

64 Y.GrussonIUT Génie Civil Université Joseph Fourier 64 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 SEANCE 6

65 Y.GrussonIUT Génie Civil Université 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

66 Y.GrussonIUT Génie Civil Université Joseph Fourier 66 Représentation d'un tableau à une dimension : Nom du tableau : PRIX SEANCE 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

67 Y.GrussonIUT Génie Civil Université 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 tableau Valeur inférieure de l'indice Valeur supérieure de l'indice Type de la donnée contenue par le tableau Les indices commencent généralement à 1 ou à 0

68 Y.GrussonIUT Génie Civil Université 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

69 Y.GrussonIUT Génie Civil Université 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

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

71 Y.GrussonIUT Génie Civil Université 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éatoire DIM NBRE(1 TO 10) AS DOUBLE RANDOMIZE FOR J=1 TO 10 NBRE(J) = INT(RND*100) NEXT SEANCE 7

72 Y.GrussonIUT Génie Civil Université 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 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) SEANCE 7

73 Y.GrussonIUT Génie Civil Université 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

74 Y.GrussonIUT Génie Civil Université 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) NEXT ZONE.TEXT = STR(TOTAL) SEANCE 7

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

76 Y.GrussonIUT Génie Civil Université Joseph Fourier 76 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 SEANCE 7

77 Y.GrussonIUT Génie Civil Université Joseph Fourier 77 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 SEANCE 7

78 Y.GrussonIUT Génie Civil Université 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 AR MQW Z PROF K X

79 Y.GrussonIUT Génie Civil Université 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 AR MQW Z PROF K X LIGNE 1 à 3 COLONNE de 1 à 4

80 Y.GrussonIUT Génie Civil Université Joseph Fourier 80 L'accès aux éléments se fera ainsi : LETTR( 2, 3 ) SEANCE 7 AR MQW Z PROF K X Coordonnée de la ligne Coordonnée de la colonne

81 Y.GrussonIUT Génie Civil Université Joseph Fourier 81 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 SEANCE 7

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


Télécharger ppt "Y.GrussonIUT Génie Civil Université Joseph Fourier 1 Programmation VISUAL BASIC."

Présentations similaires


Annonces Google