Programmation VISUAL BASIC

Slides:



Advertisements
Présentations similaires
Sintaks : Tentative de guide de mise en œuvre Michel Hassenforder.
Advertisements

Produit Gammes Nomenclatures Modules Techniques Prix de Revient Prix de Vente Modules Techniques Client Marges Mise en route Temps Unitaire Prix (Ex:
Premier programme en C :
La boucle for : init7.c et init71.c
Introduction a L’algorithme
TECHNOLOGIE DES ORDINATEURS
Initiation à l’utilisation du logiciel STATISTICA
Portée des variables VBA & Excel
Informatique Deug2 Sciences Eco S. Maabout 2004/2005.
Eléments visuels. 2009/2010L3-Eco - Université de Bordeaux2 Les feuilles La feuille : cest le cadre dans lequel tous les autres éléments (visuels) dune.
Introduction à l’Algorithmique
Calculs de complexité d'algorithmes
Cours n°2M2. IST-IE (S. Sidhom) UE 303 Promo. M2 IST-IE 2005/06 Conception dun système d'information multimédia Architecture trois-tiers : PHP/MySQL &
A abstraction b assembleur c nombre binaire d bit e cache f UC g puce h compilateur i famille dordinateurs j contrôle k chemin de données l défaut m dé
Objectifs Nous allons concevoir une mise en œuvre contenant un noyau de jeu d’instructions. Nous verrons comment l’architecture de jeu d’instructions.
FORMATION OUTILS « FONCTIONS »
Lexique des manœuvres de base pour utiliser à PowerPoint
INITIATION à la PROGRAMMATION STRUCTUREE
Autorisations Utilisation eCATT
Introduction : Compilation et Traduction
JOME, un Composant Logiciel pour le Télé-Enseignement des Mathématiques via le WEB, Compatible OpenMath et MathML Laurent DIRAT OVE / I3S-UNSA.
Architecture de machines Principes généraux
Cours Visual Basic pour Application
Chapitre 4: Logiciel les Types de logiciels . L'interface du logiciel
Les requêtes La Requête est une méthode pour afficher les enregistrements qui répondent à des conditions spécifiques. La requête est donc un filtre.
Les bases de l’Algorithmique
Page 1 Introduction à ATEasy 3.0 Page 2 Quest ce quATEasy 3.0? n Ensemble de développement très simple demploi n Conçu pour développer des bancs de test.
Cours de programmation
Récursivité.
Par Fabrice Pasquier Cours IV
44 Contrôle du déroulement du programme. 4-2 Objectifs A la fin de ce cours, vous serez capables de : Utiliser les constructions de prise de décision.
KAKI - Gestion budgétaire et comptable de la paye
Les éléments de base de l’algorithmique
Structures de contrôle de l’exécution
RESUMES Module II1 SOMMAIRE CYCLE 1 : Saisir – Afficher – Données
Programmation multimédia 3
Introduction à la programmation (Java)
F Copyright © Oracle Corporation, Tous droits réservés. Créer des programmes avec Procedure Builder.
Complément Le diagramme des classes
Semaine #1 INF130 par Frédérick Henri.
I&G- chapitre 11-La logique Logarithmique -Mme Roulaud
LIFI-Java 2004 Séance du Jeudi 9 sept. Cours 1. La notion de langage Décrire une tâche à effectuer –programme Écrire à un haut niveau –facile pour lutilisateur.
Chapitre 3 Syntaxe et sémantique.
Partie II Sémantique.
COURS DE PROGRAMMATION ORIENTEE OBJET :
Initiation aux bases de données et à la programmation événementielle
Structures alternative et répétitive
Animateur : Med HAIJOUBI
Les différents langages de programmation
Logique programmée & Microprocesseurs
Création et présentation d’un tableau avec Word 2007
Algorithmique Les structures Rappel L'enchaînement séquentiel
Outil de gestion des cartes grises
LES PILES ET FILES.
Initiation MS Access 2010 Requêtes - Sélection (travail en autonomie)
Université de Sherbrooke
1 Algorithmique et programmation en février - juin 2007 ORSAY.
Algorithmique et programmation en
Algorithmique et programmation (1)‏
Un survol du language C.
 Syntaxe du langage PHP
Module I3 algorithmique et programmation
La programmation.
1 École des Mines de Saint-Etienne. 158, cours Fauriel Saint-Etienne Cedex 2. Tél Fax Jean-Jacques Girardot
Langage de programmation
QCM VBA.
Initiation aux bases de données et à la programmation événementielle
Algorithmique Algorithmique  Pascal
FLASH Séance 2 Xiaoliang Liang Morgane Le Nan SI28 P05.
1 Initiation aux bases de données et à la programmation événementielle VBA sous ACCESS Cours N° 1 Support de cours rédigé par Bernard COFFIN Université.
Transcription de la présentation:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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 + 1 (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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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