• Aucun résultat trouvé

[PDF] Ressource de formation sur le langage vb dotnet | cours informatique

N/A
N/A
Protected

Academic year: 2021

Partager "[PDF] Ressource de formation sur le langage vb dotnet | cours informatique"

Copied!
346
0
0

Texte intégral

(1)

Projet de développement

ou

développements d’applications de gestion

en

VB.Net

(2)

Plan du cours

Le cours est scindé en plusieurs parties auxquelles s’ajoute une liste d’énoncés d’exercices. Le syllabus de chaque partie se distingue des autres par le préfixe attaché à chaque numéro de page.

Le cours est autant destiné aux débutants en programmation qu’à la mise à niveau de programmeurs chevronnés n’ayant pas l’expérience du .Net. Les différents points de la matière doivent être abordés de manière plus ou moins détaillée et à un rythme plus ou moins soutenu selon le niveau des participants.

Pages VBLab Enoncés d’exercices divers

Les pages LaboVB reprennent tous les énoncés d’exercices appropriés à l’ensemble du cours. Chaque énoncé désigne la partie du cours pour laquelle il est pertinent.

Pages VBNF Notions fondamentales de programmation en VB.Net

Les pages VBNF sont destinées à tous. Pour les débutants, certaines pages peuvent être détaillées pendant les leçons et d’autres sommairement abordées. Ces pages doivent être traitées inversement lorsque le cours est dispensé à des programmeurs. Elles exposent les structures des données et les moyens de traitements sous VB.Net.

Pages VBPV Bases de la programmation visuelle et événementielle en VB.Net

Les pages VBPV s’adressent également à tous les étudiants. Elles expliquent les outils de la programmation d’applications pour l’environnement graphique de Windows.

Pages VBPA Programmation

avancée

en VB.Net

Les pages VBPA sont destinées aux programmeurs qui, maîtrisant bien la programmation visuelle, souhaitent doper leurs applications en y exploitant au mieux les services du Framework.

Pages VBOBJ Programmation orientée objet en VB.Net

Les pages VBOBJ sont uniquement destinées aux programmeurs qui maîtrisent la programmation procédurale et qui souhaitent programmer des applications conçues en orienté objet. Le cours expose les concepts de base de la POO et détaille leur mise en œuvre sous .Net.

Pages VBDB Programmation orientée bases de données en VB.Net

Les pages VBDB s’adressent à tous. Elles expliquent les moyens d’accès aux bases de données et leur exploitation.

Pages VBWEB Eléments de programmation orientée Internet en VB.Net

Les pages VBWEB sont destinées aux programmeurs et aux débutants qui ont déjà acquis par ailleurs des connaissances de la programmation pour Internet. Elles traitent essentiellement de trois concepts : les pages ASP, les services Web et les applications client/serveur.

Pages VBCD Compléments divers en VB.Net

Les pages VBCD présentent divers sujets qui ne sont pas exposés dans le cadre du cours. Elles livrent des compléments d’informations que le lecteur peut consulter selon ses besoins. Elles sont notamment destinées à la présentation d’assistants de l’environnement DotNet, comme l’assistant d’empaquetage par exemple.

Avertissement

Les programmes repris dans ce cours sont censés être illustratifs et non être à toute épreuve. Bien que généralement de bonne facture, ils n’ont pas subi de tests approfondis. Le programmeur souhaitant en intégrer dans un développement aura soin de pratiquer les tests nécessaires à la fiabilité de son application.

(3)

Conventions d'écriture

Afin de permettre au lecteur de différencier rapidement diverses parties du texte, la rédaction et la mise en page de ce cours sont réalisées autant que possible dans le respect des règles suivantes.

Mots du langage et mots du programmeur.

Les mots des langages sont écrits dans le texte courant en Courier New gras. Il en est de même pour les mots utilisés par le programmeur dans les lignes de codes des exemples, mais ceux-ci sont francisés.

Exemples :

… le contrôle d’accès n'est pas assuré car la variable Cinq déclarée Public est accessible … … les portées Public et Friend sont …

Programme complet et extraits.

Les lignes de codes des exemples sont cadrées à gauche lorsqu'elles constituent un programme complet, même si son code est entrecoupé de textes explicatifs, et elles sont décalées d'un retrait vers la droite lorsqu'elles constituent un extrait de programme.

Exemple de programme complet :

Module MonModule Sub Main()

Console.WriteLine("Bonjour") End Sub

End Module

Exemple d'extrait de programme :

Sub Main()

Console.WriteLine("Bonjour") End Sub

Codes et commentaires.

Les lignes et fins de lignes qui sont des commentaires sont écrites en plus petit et en italique. Certaines d'entre elles présentent des résultats d'affichages : l'italique est supprimé pour les caractères effectivement affichés.

Exemples :

' La Sub Main suivante a pour but d'afficher le mot Bonjour à l'écran

Sub Main() ' Entête de la procédure

Console.WriteLine("Bonjour") ' Affichage : Bonjour

End Sub ' Fin de la procédure

Longues lignes de codes.

Les lignes de codes trop longues pour tenir sur la largeur de la page sont continuées cadrées à droite à la ligne suivante. Cette typographie signifie donc que le code ainsi représenté doit être programmé sur une seule ligne.

Exemple :

Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs)

Handles MyBase.Load

Divers, abus de langage, particularités.

Les mots dont le sens premier est détourné, ceux représentant pour la première fois un objet ou un concept particulier, ceux dont la définition est donnée plus loin, ou simplement ceux qui méritent une attention spéciale dans le contexte, et qui ne sont pas des mots du langage, ni des extraits des lignes de codes des exemples, sont écrits en italique dans le texte courant.

Exemples :

… la variable de type valeur est bien traitée comme telle …

(4)

Lectures utiles

(offertes sous format électronique en début de cours)

* Christophe Darmangeat. – Algorithmique et programmation – Adaptation (avec l’autorisation de l’auteur) à la programmation sous VB.Net du cours de Ch. Darmangeat (Université Paris 7 – http://www.pise.info).

* Eléments de SQL : éléments d’algèbre relationnelle (non mathématique) et approche inédite de conception de requêtes.

Table des matières des pages VBNF : Notions fondamentales de programmation en VB.Net

Historique du Basic ...4

La technologie .NET...5

Visual Studio .Net ...5

L’environnement de développement Visual Studio...6

Application Console ...7

Application Windows...8

Les entrées et les sorties de données...11

Applications Console ...11

Les entrées...11

Les sorties ...12

Applications Windows ...13

Les types et structures de données...14

Brève révision de notions fondamentales...14

Les variables ...14

Les structures composées (tableaux)...14

Les structures complexes (types utilisateurs)...15

Déclarations des variables. ...16

Les types de données...20

Notation littérale de données ...21

Déclaration des tableaux ...21

Définition des structures...23

Les structures de tableaux ...24

Les tableaux de structures ...24

Les énumérations...25

Les instructions de contrôles et moyens de traitements...26

Brève révision de notions fondamentales...26

La séquence...26 La rupture de séquence ...26 L’alternative ...26 Les itérations ...26 Ni contrôle, ni traitement...27 Les commentaires ...27 La continuation ...27 L’économie de dactylographie...27 Le séparateur d’instructions ...27

Les instructions de contrôles ...28

La rupture de séquence ...28

L’alternative ...28

La sélection ...30

Les itérations ...31

Les boucles logiques...31

La boucle arithmétique ...32

Une boucle ni logique, ni arithmétique...33

L’appel de sous-programmes ...33

L’exécution de programmes externes. ...34

Le mot de la fin ...34

Les moyens de traitements ...35

Les opérateurs ...35

L’affectation ...35

La concaténation ...35

(5)

Les formes contractées de l’affectation ...35

Les opérateurs relationnels ...35

Les opérateurs logiques ...36

Les opérateurs binaires ...37

Ordre d’évaluation des expressions et hiérarchie des opérateurs ...37

Les procédures et fonctions intrinsèques, et les méthodes...37

Déclarations des procédures et des fonctions...38

Déclarations des arguments des procédures, fonctions et méthodes ...40

Type de donnée des arguments ...42

Valeur de retour des fonctions ...42

La récursivité...43

Table des matières des pages VBPV :

Bases de la programmation visuelle et événementielle en VB.Net Programmation orientée objet, visuelle et événementielle ...5

Une application Windows (Form et Button) ...6

Deux propriétés pour commencer : Name et Text ...9

Propriétés généralement associées à la propriété Text : BackColor, ForeColor et Font...10

Quelques propriétés communes à la plupart des composants visuels ...10

Quelques méthodes communes à la plupart des composants visuels ...11

Quelques événements communs à la plupart des composants visuels ...11

Débogage et gestion des erreurs ...13

Le pas à pas ...14

Le point d’arrêt...14

L’évaluation des variables en cours d’exécution...15

L’insertion d’envois de messages...15

La gestion des erreurs...17

Générer des erreurs...18

L’essentiel des composants visuels et de leurs membres ...19

Le formulaire : Form ...19

Propriétés ...19

Méthodes...21

Evénements ...22

Membres communs à la plupart des composants visibles ...22

Propriétés ...22

Méthode ...23

Evénements ...23

L’étiquette : Label ...23

Propriétés ...23

La boîte de texte : TextBox ...24

Propriétés ...24

Méthodes...25

Evénement...25

La case à cocher : CheckBox ...25

Propriétés ...25

Evénements ...25

Le bouton radio : RadioButton ...26

Les groupes d’objets : GroupBox et Panel...27

Différences essentielles...27

L’étiquette hyperlien : LinkLabel...27

La boîte de liste : ListBox ...28

Propriétés ...28

Méthodes...29

Evénement...29

Quelques exemples ...29

La liste de cases à cocher : CheckedListBox...30

La liste déroulante : ComboBox ...30

La liste de visualisation : ListView...30

(6)

Méthodes...32

Evénements ...32

Quelques exemples ...32

Les vues en arborescence : TreeView ...34

Propriétés ...34

Méthodes...34

Evénément...35

Lecture d’un TreeView ...35

Le calendrier mensuel : MonthCalendar ...36

Le sélectionneur de date : DateTimePicker ...36

La boîte à image : PictureBox ...37

Le diviseur : Splitter...38

Une réalisation ...38

Son code...38

Son résultat ...38

Le contrôle à onglets : TabControl ...39

Le menu : MainMenu et MenuStrip ...40

La minuterie : Timer ...41

Propriétés ...41

Méthodes...41

Evénement...41

Exemple ...41

Les boîtes de dialogue ...42

L’ouverture de fichiers : OpenFileDialog ...42

Propriétés ...42

Méthode ...43

Exemple ...43

L’enregistrement de fichiers : SaveFileDialog ...43

L’explorateur de dossiers : FolderBrowserDialog...43

Les polices de caractères : FontDialog ...44

Les couleurs : ColorDialog ...44

L’impression des documents ...45

Le moteur d’impression : PrintDocument...45

La mise en page : PageSetupDialog...47

La sélection de l’imprimante : PrintDialog ...47

La fenêtre de prévisualisation : PrintPreviewDialog...47

Le composant de prévisualisation : PrintPreviewControl ...47

Exemple récapitulatif ...47

Programmation multi formulaires...49

L’ouverture de formulaires secondaires ...49

Le passage de données entre formulaires ...49

L’InputBox à l’ancienne...55

Résumé des modes de communications abordés...56

L’exploitation des mémoires de masse...57

Les dossiers ...57

Liste des unités...57

Liste des dossiers d’une unité ...57

Liste des fichiers d’un dossier...57

Liste des sous dossiers et fichiers d’un dossier ...57

Créer un dossier ...58 Copier un dossier ...58 Déplacer un dossier ...58 Renommer un dossier...58 Supprimer un dossier ...58 Les fichiers ...59 Créer un fichier ...59 Copier un fichier ...59 Déplacer un fichier...59 Renommer un fichier ...59

(7)

Supprimer un fichier ...59

Création, enregistrement et lecture d’un fichier texte ...60

Création, enregistrement et lecture d’un fichier de données à accès séquentiel ...61

Création, enregistrement et lecture d’un fichier de données à accès aléatoire...62

Les modes d’ouvertures ...62

Les types d’accès ...62

Tableau récapitulatif des associations permises du mode d’ouverture et du type d’accès ...62

Quelques membres de la classe FileStream...62

L’écriture et la lecture du fichier ...63

Exemple complet ...64

La protection des données des fichiers lors des accès simultanés ...70

Création, enregistrement et lecture d’un fichier binaire...72

Inventaire des principaux outils concernant les dossiers et les fichiers ...75

Méthodes communes des classes Directory et File...75

Propriétés communes des classes DirectoryInfo et FileInfo ...75

Méthodes communes des classes DirectoryInfo et FileInfo...75

Méthodes spécifiques de la classe Directory...75

Propriétés spécifiques de la classe DirectoryInfo ...75

Méthodes spécifiques de la classe DirectoryInfo...75

Méthodes spécifiques de la classe File...76

Propriétés spécifiques de la classe FileInfo...76

Méthodes spécifiques de la classe FileInfo ...76

La classe Stream...77

Propriétés et méthodes de la classe StreamWriter ...77

Méthodes de la classe StreamReader ...77

Méthodes de la classe BinaryWriter ...77

Méthodes de la classe BinaryReader...78

Table des matières des pages VBPA : Programmation avancée en VB.Net

Autant savoir...3

Les traitements en ligne de commande ...3

Les assemblages ...4

Manifeste de l'assemblage...5

Assemblages mono fichier et multi fichiers...5

Le désassemblage...6

Espace de noms ...7

Nom complet...7

Instructions au niveau de l'espace de noms...7

Références, Imports et Declare ...8

Arguments d'appel d'une application...9

Application Console...9

Application Windows ...9

A partir d’une session Dos...9

A partir de Windows...10

Les régions ...11

Les fonctionnalités du Framework ...12

L'espace de noms System ...12

La classe System.Object ...12 Méthodes...12 La classe String ...13 Propriété...13 Méthodes...13 La classe DateTime ...16 Propriétés ...17 Méthodes...17 La classe RegEx ...19 Membres ...22 La classe Math ...25 Propriétés ...25

(8)

Méthodes...25

La classe VBMath ...25

L'espace de nom System.Drawing...26

La classe Graphics ...26

L'espace de noms System.Collections...31

Les classes offertes...31

Membres communs à la plupart des collections...31

Propriétes ...31 Méthodes...31 La classe ArrayList ...32 Propriété...32 Méthodes...32 La classe BitArray...35 Propriété...35 Méthodes...35 La classe Hashtable ...36 Propriétés ...36 Méthodes...36 La classe SortedList ...37 Méthodes...37 La classe Queue ...38 Méthodes...38 La classe Stack ...39 Méthodes...39

Une dernière comparaison ...40

La classe CollectionBase ...41

L’espace de noms Collections.Generic ...43

Table des matières des pages VBOBJ : Programmation orientée objet en VB.Net

Introduction ...3

Depuis 1960...3

Quelles différences ? ...3

Programmation orientée objet...4

Classe et structure...4

Gestion de la mémoire...8

Ramasse-miettes...9

Enveloppement, contrôle d’accès, encapsulation ...9

Une propriété par défaut ...12

L'héritage...13

Programmation de l'héritage ...14

Membre statique ...15

Dérivations publique, protégée et privée ...18

Constructeurs et destructeurs ...19

Constructeur par recopie ...21

Interface et Implements...22

Le polymorphisme...26

Classe abstraite et méthode virtuelle...26

Surdéfinition, surcharge et masquage ...30

La surcharge des opérateurs ...33

L'interdiction de dériver ...33

Les événements ...34

Emission d'événements ...34

Réception et traitement d'événements ...35

Aspects avancés ...37

La délégation ...37

Programmation asynchrone ...40

La commande asynchrone Shell...40

(9)

Le multithreading ...43

Les processus actifs...43

Synchrone, asynchrone et multithreading ...44

Programmation et gestion du multithreading ...45

Accès à une ressource partagée ...45

Accès exclusif à une ressource ...47

Instanciation d'un thread par délégation ...48

Echange d'informations avec un thread ...48

Le marshaling ...51

Programmation asynchrone et multithreading : une synthèse ...56

La persistance ...57

Table des matières des pages VBDB : Programmation orientée bases de données en VB.Net

L'ADO.Net...4

L'accès aux sources de données...4

Les modes d'accès aux bases de données ...4

Le mode connecté ...4

Le mode déconnecté...5

Les bases de données Access...5

Création d'une base Access ...5

Compactage d'une base Access ...6

Réglage d'un pilote ODBC pour Access ...7

Le mode connecté ...8

La connexion ...8

Fonctionnalités de l'objet Connection ...8

Propriétés ...8 Méthodes...9 Evénements...9 L'objet Command ...10 Propriétés ...10 Méthodes...10 Exemple ...11 L'objet DataReader ...11 Propriétés ...11 Méthodes...12 Exemples...12 L'objet Transaction ...13 Exemple ...13 Connexion polyvalente...14

Obtention de la chaîne de connexion ...15

Le mode déconnecté ...16

La connexion en lecture ...16

L'objet DataAdapter ...16

Deux méthodes de lecture ...16

Les objets DataSet et DataTable ...16

Propriété du DataSet ...16

Propriété du DataSet et du DataTable...16

Propriétés du DataTable...16

Méthodes du DataSet et du DataTable...17

Usage simple du DataSet ...17

Usage simple du DataTable ...18

Création d'une base de données en mémoire...19

Sauvegarde de la base mémoire dans une base Access...22

Utilisation des relations et contraintes d'intégrité...23

Lectures des données ...23

Lecture linéaire ...23

Lectures hiérarchiques ...23

(10)

Quelques cas ...24

Mise à jour de la base source et gestion des conflits ...25

Bases de données et composants visuels ...29

La liaison à une base de données...29

La présentation des données...29

Lecture et affichage d'une simple table ...31

Lecture et affichage de tables liées par une relation ...31

La recherche d'un enregistrement...33

La manipulation des données ...34

L'édition contrôlée d'un enregistrement ...34

L'ajout d'un enregistrement ...36

La suppression d'un enregistrement ...37

La mise à jour de la base ...38

Le composant DataGridView ...40

L’impression des données par CrystalReport...41

Table des matières des pages

VBWEB :

Eléments de p

rogrammation orientée Internet en VB.Net Introduction ...3

Les Web Forms...4

La page HTML...4

La page ASPX ...6

Les composants ASP visuels...8

L'objet Page ...9 Le composant TextBox...11 Le composant HyperLink ...11 Le composant LinkButton ...11 Le composant ImageButton ...11 Le composant Image...12 Le composant HiddenField ...12 Le composant Menu...12 Le composant Table...13

Les composants CheckBox, CheckBoxList, RadioButton et RadioButtonList ...13

Le composant Panel ...16

Les composants View et MultiView...16

Le composant FileUpload ...17

Liaisons de composants à une base de données ...18

Connexion à une base Access ...18

Les composants ListBox et DropDownList...19

Les services Web ...20

Introduction ...20

Cycle de fonctionnement ...20

Utilisation d'un service Web ...21

Recherche du service ...21

Mise en place du service ...21

Exploitation du service...23

Création d'un service Web...24

Exploitation du service...26

Exemple d'exploitation synchrone ...26

Exemple d'exploitation asynchrone ...26

Création et exploitation d'un service avec contrôle d'accès ...27

Le Net Remoting ...29

Le choix entre Service Web et Net Remoting ...29

Fonctionnement du Net Remoting ...29

Programmation du Net Remoting...30

Création d'une application serveur élémentaire ...30

Création d'une application cliente ...31

(11)

Table des matières des pages VBCD : Compléments divers en VB.Net

Le Basic : son histoire en un coup d’œil...3

Le Visual Studio et "son" framework ...3

Améliorations du langage dans Visual Basic 2005 ...4

Introduction ...4 My ...4 Les commentaires XML ...6 Génériques...7 Instruction Using ...8 Instruction Continue ...8 Mot Global ...8 Opérateur IsNot ...9 Instruction TryCast...9

Surcharge des opérateurs et opérateurs de conversion ...9

Accessibilité des mécanismes d'accès aux propriétés ...9

Limites explicites des tableaux...9

Accesseurs aux événements personnalisés ...10

Types partiels ...10

Événements de niveau application ...11

Avertissements du compilateur ...11

Nouveaux types numériques ...11

Instances par défaut ...12

La documentation du code source ...13

Commentaires XML...13

Les commentaires ordinaires...14

Les commentaires spécialisés...14

Les signets ...15

Usage de fichiers de paramètres ...16

La lecture de fichiers XML ...16

Le fichier ressource programmé...17

Synthèse des fichiers de paramètres ...17

Fichier de ressources ajouté à l’espace My...17

Fichier de paramètres ajouté à l’espace My...17

Fichier XML de paramètres ...17

Fichier de paramètres programmé...17

(12)

Enoncés des labos

en

(13)

Contenu des pages VBLab

Modalités

Enoncés des labos

1. BonjourConsole (/100) (cf. Pages VBNF : Application Console) 2. BonjourWindows (/100) (cf. Pages VBNF : Application Windows)

3. Débile (/200) (cf. Pages VBPV : Propriétés et événements communs à la plupart des composants visuels) c 4. Debug (/100) (cf. Pages VBNF + VBPV : Déclaration des arguments … et Débogage)

5. DesChoix (/100) (cf. Pages VBPV : CheckBox et RadioButton) c 6. MesAmis (/200) (cf. Pages VBPV : Le composant ListView) c 7. BonneImpression (/150) (cf. Pages VBPV : Menu et impression)

8. MesAmisEnFichier (/200) (cf. Pages VBPV : Les boîtes de dialogues + Exploitation des mémoires de masse) c 9. SauvezLes (/100) (cf. Pages VBPV : Minuterie) c

10. UnBonArgument (/200) (cf. Pages VBPV + VBPA : Mémoires de masse + Arguments d'appel …) c 11. Remplace (/150) (cf. Pages VBPA : La classe String) c

12. LeBonMoment (/100) (cf. Pages VBPA : DateTime et RegEx) c

13. UneCollection (/200) (cf. Pages VBNF et VBPA : Structure + CollectionBase) c 14. MesPremiers (/200) (cf. Pages VBOBJ : Encapsulation et abstraction) c

15. MesPersonnes (/300) (cf. Pages VBPA et VBOBJ : CollectionBase + Propriété par défaut) c 16. MesFractions (/100) (cf. Pages VBOBJ : Surcharge des opérateurs) c

17. EncoreDesPersonnes (/400) (cf. Pages VBPA et VBOBJ : CollectionBase + Propriété par défaut + Persistance) c 18. UneDBPersonnes (/400) (cf. Pages VBDB : Bases de données et composants visuels) c

19. CarnetDAdresses (/600) (cf. Pages VBDB : Bases de données et composants visuels) 20. AutreCarnetDAdresses (/800) (cf. Pages VBDB : Bases de données et composants visuels) Travaux complémentaires

21. Tableaux (/100) (cf. Pages VBNF : Les tableaux)

22. StructuresTableaux (/100) (cf. Pages VBNF : Les structures de tableaux) 23. TableauxStructures (/100) (cf. Pages VBNF : Les tableaux de structures)

24. DeclareProc (/100) (cf. Pages VBNF : Déclarations des procédures et des fonctions) 25. ToString (/100) (cf. Pages VBPA : La classe System.Object et la classe String) c 26. Sinus (/100) (cf. Pages VBPA : La classe Graphics)

27. Async (/200) (cf. Pages VBOBJ : Synchrone, asynchrone et multithreading) c

28. ListeDesPersonnes (/400) (cf. Pages VBPV et VBDB : ListBox, Impression et DataGridView)

29. MesAmisWeb (/400) (cf. Pages VBWEB : Les composants ASP visuels + Liaison à une base de données) c 30. JeuDuPendu (/400) (cf. Pages VBWEB : Programmation du Net Remoting) c

Exercices divers

31. LesImpairs (cf. Pages VBNF: Itérations) 32. SomEntiers (cf. Pages VBNF : Itérations)

33. DesMots (cf. Pages VBNF et VBPV : Les tableaux + Boutons + Boîte de texte) c 34. MonRepertoire (cf. Pages VBPV : ListView + Impression) c

35. DevineNombre (cf. Pages VBPV : Générer des erreurs + Form + Programmation multi formulaires) c

36. ChercheEtRemplace (cf. Pages VBPV et VBPA : Mémoires de masse + Classes String et RegularExpressions) c 37. RepertoireTelephones (cf. Pages VBPA : Collections génériques) c

38. DesEtudiants (cf. Pages VBOBJ : Constructeurs et destructeurs, constructeur par recopie) c 39. MailAGogo (cf. Pages VBDB : OleDB et DataReader) c

40. DBMails (cf. Pages VBDB : Création d'une base Access + Mode connecté) c

c

(14)

Modalités

Chaque labo doit être considéré comme une application à part entière et, à ce titre, doit avoir un dossier qui lui est spécialement réservé sur l'ordinateur où a lieu son développement. Ce dossier doit recevoir un nom représentatif de son contenu. Pour un labo, le nom est composé du numéro et du nom du labo séparés par un souligné (ex.

1_BonjourConsole si le nom du premier labo est BonjourConsole).

Ce dossier DOIT contenir TOUT le nécessaire à son labo et un document Word contenant les copies documentées (à l’image de ce qui est fait dans le support de cours) de quelques écrans représentatifs des expérimentations effectuées. Le cas échéant, ce document contiendra les explications requises par l’énoncé du labo. Certains labos ne consistent qu’en la production d’un document Word. Celui-ci doit également être stocké dans un dossier au nom du labo.

Ce(s) dossier(s) de labos est (sont) compressé(s) dans un fichier dont le nom est celui de l’étudiant. Ce fichier ZIP

(ou RAR) doit être transmis par e-mail à phr@skynet.be ou à phr.phr@base.be ou encore à

phr.phr@belgacom.net. Ainsi donc, par exemple, l’étudiant Jules Denface envoyant les labos 1 et 2, transmettra un fichier DENFACE.ZIP qui contiendra les dossiers 1_BonjourConsole et 2_BonjourWindows, chacun de ceux ci contenant tous les fichiers du labo correspondant.

Ces directives permettent d'automatiser la réception des labos et leur rangement sur le disque à partir duquel ils sont expérimentés et évalués. Aussi, les envois ne respectant pas ces directives sont refusés et leurs labos reçoivent la cote nulle.

Les indications /100, /200, … représentent le poids de chaque labo en matière de cotation et sont fonction du temps nécessaire à la réalisation des labos. Ces temps sont estimés en sachant que les étudiants disposent des codes du cours en fichiers non protégés et qu’ils peuvent donc effectuer des copier/coller de ces codes offerts pour amorcer leurs labos en réalisant une grande économie de dactylographie. A défaut d’indication, le poids d’un labo vaut 100.

Chaque énoncé de labo est assorti d’une indication des pages du cours auxquelles il se rapporte principalement. Le nécessaire à la réalisation d’un labo est presque toujours contenu ces pages. Les quelques vitamines parfois nécessaires sont des membres proches de ceux expliqués dans le cours et il n’est donc jamais nécessaire d’entreprendre de longues recherches dans les pages d’aide ou sur Internet pour mener à bien un labo. De plus l’objet des labos est l’expérimentation de la matière enseignée et non la mise en œuvre d’autres techniques.

Pour chacun des labos, les fichiers VB comptent pour la moitié des points et le document Word pour l’autre moitié, mais un document Word seul ne compte pas. La cote attribuée au document Word n’excède jamais celle attribuée au projet VB. Pour la détermination de celle-ci, les fichiers VB sont testés et leur bon fonctionnement vérifié. La qualité du projet est également évaluée sur base des noms attribués aux différents fichiers, objets et variables qui le composent, sur base du respect de l’énoncé, de la pertinence des copies d’écrans réalisées, …

Répartition des points :

Les interrogations éventuelles et l’examen (ou le travail de fin de cours) fournissent ensemble une cote A sur 100. L’ensemble des labos fournit une cote B sur 100.

Le poids de chacune de ces 2 cotes dans la cote globale est déterminé par la règle suivante : Résultats obtenus pour les cotes A et B Cote globale

Cote A

(Interrog. + TFF et/ou examen)

Cote B (les labos) % de A % de B >= 60 >= 50 75 25 >= 60 < 50 50 50 <60 >= 50 100 0 <60 < 50 50 50 Échéances :

Sauf indication contraire, un labo doit être transmis au plus tard le samedi matin de la semaine qui suit celle où a été énoncé ce labo. Un faible retard entraîne la division de sa cote par 2. Passé le dimanche (ou le jour suivant dans le cas d'une échéance précisée), la cote devient nulle.

L’objet des labos est l’expérimentation de la matière enseignée

et non la mise en œuvre d’autres techniques !

(15)

Enoncés des labos

1. BonjourConsole (/100) (cf. Pages VBNF : Application Console)

Réalisez une application Console qui demande le nom de l'utilisateur et lui affiche ensuite Bonjour suivi du nom. Exemple supposant que l'utilisateur s'appelle Jules :

Quel est ton nom ? Bonjour Jules

2. BonjourWindows (/100) (cf. Pages VBNF : Application Windows)

Réalisez une application Windows qui demande le nom de l'utilisateur et lui affiche ensuite Bonjour. Cette application doit utiliser un Label pour la question, un TextBox pour l'encodage et un MessageBox pour l'affichage demandé. 3. Débile (/200) (cf. Pages VBPV : Propriétés et événements communs à la plupart des composants visuels) c

Réalisez une application Windows ouvre un formulaire contenant un bouton en son centre. La largeur du formulaire doit être supérieure à 3 fois la largeur du bouton, et la hauteur doit être supérieure à 3 fois celle du bouton.

Libellé du bouton : "Clique-moi si tu peux". Cette application doit déplacer le bouton dans une des 9 zones possibles à chaque tentative de clic. Chaque zone doit avoir être occupée par le bouton à l'occasion de 9 tentatives de clic.

Les traits interrompus de l’illustration suivante ne doivent pas être implémentés dans le labo.

9 6 8 7 4 3 2 1

4. Debug (/100) (cf. Pages VBNF + VBPV : Déclaration des arguments … et Débogage)

Réalisez une application Console qui met en œuvre les codes des exemples contenus dans les pages VBNF pour illustrer la déclaration des arguments des procédures, fonctions et méthodes.

Exécutez cette application en pas à pas et en évaluant diverses valeurs de sorte à vérifier les résultats annoncés dans les pages VBNF.

5. DesChoix (/100) (cf. Pages VBPV : CheckBox et RadioButton) c

Réalisez une application d'expérimentation des codes proposés à propos des RadioButton et de sorte à les appliquer également aux CheckBox en indiquant dans ce cas, si un CheckBox est coché ou décoché.

6. MesAmis (/200) (cf. Pages VBPV : Le composant ListView) c

Réalisez une application de gestion des personnes avec un numéro de téléphone pour chacune. La liste des personnes doit être un composant

ListView avec 2 colonnes visibles et intitulées Noms et Numéros. Le formulaire doit présenter deux TextBox, l'un pour le nom et l'autre pour le numéro. Ils doivent servir à l'encodage des informations des personnes en ajout et en recherche.

Trois boutons libellés Ajout, Cherche et Supprime doivent activer les procédures correspondantes. Si lors d'un ajout, le nom de la personne encodée existe déjà dans la liste, l'ajout doit être annulé et la procédure de recherche activée.

La recherche d'une personne, qui s'effectue uniquement sur le nom, doit

sélectionner l'enregistrement de la personne dans la liste et, si la personne n'existe pas, un MessageBox doit en informer l'utilisateur. Si la personne existe, son numéro de téléphone doit être présenté dans le TextBox approprié. La sélection d'une personne dans la liste doit provoquer l'affichage de son nom et de son numéro de téléphone dans les

(16)

7. BonneImpression (/150) (cf. Pages VBPV : Menu et impression)

Expérimentez l'exemple récapitulatif proposé dans le cours à propos des impressions en remplaçant les cinq boutons par un menu.

8. MesAmisEnFichier (/200) (cf. Pages VBPV : Les boîtes de dialogues + Exploitation des mémoires de masse) c Améliorez le labo n°6 en y intégrant les boîtes de dialogues permettant la désignation des fichiers en ouverture et à l'enregistrement et en y implémentant la sauvegarde des données de la liste, ainsi que son chargement par la lecture d'un fichier. Il convient d'ajouter deux boutons Charger et Enregistrer au formulaire du labo n°6.

9. SauvezLes (/100) (cf. Pages VBPV : Minuterie) c

Améliorez le labo n°8 précédent en y intégrant une minuterie qui comptabilise le temps d'exécution de l'application à partir du moment où des modifications ont été réalisées. Toutes les 5 minutes, un MessageBox doit alors rappeler à l'utilisateur qu'il serait prudent de sauvegarder ses données.

10. UnBonArgument (/200) (cf. Pages VBPV + VBPA : Mémoires de masse + Arguments d'appel …) c

Réalisez une application Windows à lancer en ligne de commande avec deux paramètres, le premier désignant le chemin complet d'un dossier et le second désignant les fichiers à inventorier. L'application ouverte doit afficher un composant ListBox présentant tous les noms de fichiers ayant l'extension désignée dans le dossier également désigné, ainsi que dans tous ses sous-dossiers. L'application doit donc réaliser le même travail que la commande Dir utilisée avec les paramètres /B et /S, comme par exemple : Dir X:\MesDonnees\*.TXT /B /S lorsque ses arguments d'appel sont X:\MesDonnees\ et *.TXT .

11. Remplace (/150) (cf. Pages VBPA : La classe String) c

Réalisez une application Windows qui recherche dans une chaîne donnée, une autre chaîne dont seuls quelques caractères de chaque extrémité sont connus, et la remplace par une chaîne également donnée.

12. LeBonMoment (/100) (cf. Pages VBPA : DateTime et RegEx) c

Réalisez une application Windows qui calcule des échéances de payements de factures sur base d'une date encodée au format jj/mm/aaaa vérifié par l'usage des expressions régulières. Les échéances calculées doivent être affichées au

format Jour jj Mois aaaa et correspondre à l'une des échéances 30 ou 60 jours, de date de facture ou de fin de mois, selon le choix de l'utilisateur.

13. UneCollection (/200) (cf. Pages VBNF et VBPA : Structure + CollectionBase) c

Créez une collection de personnes et une application pour son exploitation en mode Console. La collection inspirée de la Classe MesChaines décrite à la fin des pages VBPA doit gérer des structures Personnes dont les champs sont

Nom de type String, DateNais de type Date et Telephone de type String. La collection doit garder les informations ordonnées sur le champ Nom.

14. MesPremiers (/200) (cf. Pages VBOBJ : Encapsulation et abstraction) c

Créez une application qui remplit un ListBox avec les nombres premiers compris entre deux valeurs obligatoirement impaires encodées dans des TextBox. Cette application doit exploiter la classe MesPremiers décrite dans le cours. 15. MesPersonnes (/300) (cf. Pages VBPA et VBOBJ : CollectionBase + Propriété par défaut) c

Modifiez la classe ClTableauDePersonnes décrite dans le cours de sorte que les objets ClPersonne gérés soient constamment ordonnés par ordre croissant ou décroissant à la guise du programmeur client. Il faut notamment doter la classe fournie des membres SensTri, Add et ChangeOrdre, ainsi que d'une procédure locale de tri. Un constructeur approprié peut s'avérer utile. L’application doit gérer un tableau de personnes et non une collection. La consultation des pages CollectionBase peut fournir l’inspiration nécessaire à la programmation des membres demandés. Expérimentez la nouvelle classe dans une application Windows.

(17)

16. MesFractions (/100) (cf. Pages VBOBJ : Surcharge des opérateurs) c

Complétez la classe Fraction du cours en y implémentant la soustraction, la division et les six opérateurs relationnels de base, ainsi qu'une méthode CType permettant la conversion vers un réel Double. La méthode CType permettant la conversion vers une chaîne doit subsister. Complétez aussi l'application Console du cours de sorte à permettre l'expérimentation de tous les opérateurs.

17. EncoreDesPersonnes (/400) (cf. Pages VBPA et VBOBJ : CollectionBase + Propriété par défaut + Persistance) c Modifiez et complétez les classes ClPersonne et ClTableauDePersonnes. La classe ClPersonne doit gérer les noms et numéros de téléphones des personnes, ainsi que leurs localités. La classe ClTableauDePersonnes doit intégrer les fonctionnalités et membres tels qu'énoncés au labo n°15, mais aussi ses propres moyens de persistances. Un membre supplémentaire ChoixClef doit permettre à l'utilisateur d'obtenir la liste des personnes ordonnées sur le nom (par défaut) ou sur la localité. Expérimentez la nouvelle classe dans une application Windows qui doit permettre l'ajout de personnes ainsi que les chargements et sauvegardes de l'instance active de ClTableauDePersonnes.

18. UneDBPersonnes (/400) (cf. Pages VBDB : Bases de données et composants visuels) c

L'application de gestion des personnes et des localités présentée dans le cours à partir du titre Bases de données et composants visuels est construite progressivement au gré des concepts développés. L'objet de ce labo est de reconstituer cette application et de l'améliorer en y intégrant la sélection d'une base de données de type Access. L'usage de boîtes de dialogues permettant la désignation des fichiers en ouverture s'impose.

L'utilisateur doit pouvoir choisir une base encore inexistante qui est alors créée. Pour fonctionner à partir d'une base de données vide, l'application doit permettre l'encodage distinct de localités et de personnes. C'est pourquoi, un menu (ou un jeu de boutons) doit permettre l'ajout des localités et l'ajout des personnes par des formulaires spécifiques. L'accès au formulaire MesDonnées présenté dans le cours ne peut avoir lieu tant qu'aucune personne n'est encodée, de même que l'accès au formulaire d'encodage des personnes ne peut avoir lieu tant qu'aucune localité n'est encodée. Le contrôle de l’encodage d’une personne doit être amélioré à l’instar de ce qui est fait dans le cours pour les localités (donc aussi implémenter les concepts de nature ergonomique qui permettent l’ajout et la modification à partir d’encodages sur les zones de présentation des données).

19. CarnetDAdresses (/600) (cf. Pages VBDB : Bases de données et composants visuels)

En partant de l’application du labo précédent, réalisez une application gérant une base de données selon les conditions suivantes.

L’application doit permettre la gestion (recherche et balayage pour consultation, ajout, modification et suppression, avec confirmation et annulation possibles) distincte de chaque entité permanente (ou signalétique). Mais l’encodage d’un champ qui ne correspond pas à une donnée connue doit provoquer l’ouverture du formulaire de gestion correspondant avec par défaut la donnée encodée dans la gestion fille. Par exemple, l’encodage dans la gestion des personnes d’une localité inconnue doit provoquer l’ouverture du formulaire de gestion des localités en présentant l’information qui vient d’être encodée au niveau des personnes. Il doit en être de même pour l’encodage d’un pays inexistant dans la gestion des localités. Au retour dans le formulaire de départ, l’information proposée doit être celle qui vient d’être confirmée dans le formulaire de gestion appelé, ou l’information initiale de l’enregistrement en cas d’annulation.

Afin de préserver la cohérence de la base de données, il faut empêcher la suppression d’un pays qui comporte une localité habitée. La suppression d’un pays ne comportant aucune localité habitée doit provoquer la suppression de toutes les localités de ce pays. De plus, la suppression d’une localité habitée ne peut avoir lieu. Les modifications des champs Pays, CPost, Localite et NomPers doivent donner lieu à confirmation, de même que le déménagement d’une personne vers une autre localité. Lors d’une modification des champs CPost et Localite, la demande de confirmation ne peut avoir lieu que lorsque les deux zones de saisie sont abandonnées par l’utilisateur.

TPays

IdPays Entier court (non auto) Pays Texte

TLocalite

IdLoc Entier (non auto) CPost Texte Localite Texte XIdPays Entier court

TPers

IdPers Entier (non auto) NomPers Texte PrenomPers Texte AdrPers Texte Telephone Texte EMail Texte XIdLoc Entier

(18)

L’encodage de doublons sur les champs CPost, Localite et NomPers doit donner lieu à confirmation. Les doublons sur le champ Pays et sur la paire CPost/Localite sont interdits.

L’utilisateur doit pouvoir choisir la base de données sur laquelle il souhaite travailler et, le cas échéant, créer une nouvelle base. La fermeture de l’application doit provoquer le compactage de la base.

20. AutreCarnetDAdresses (/800) (cf. Pages VBDB : Bases de données et composants visuels)

En partant de l’application du labo précédent, réalisez une application gérant une base de données selon les conditions suivantes.

TPays

IdPays Entier court (non auto) Pays Texte

TCommunication

IdCom Entier court (non auto) Libelle Texte

TLocalite

IdLoc Entier (non auto) CPost Texte Localite Texte XIdPays Entier court

TNumero

XIdPers Entier XIdCom Entier court Numero Texte

TPers

IdPers Entier (non auto) NomPers Texte PrenomPers Texte AdrPers Texte XIdLoc Entier

L’application doit permettre la gestion (recherche et balayage pour consultation, ajout, modification et suppression, avec confirmation et annulation possibles) distincte de chaque entité permanente (ou

signalétique). Mais l’encodage d’un champ qui ne correspond pas à une donnée connue doit provoquer l’ouverture du formulaire de gestion correspondant avec par défaut la donnée encodée dans la gestion fille. Par exemple, l’encodage dans la gestion des personnes d’une localité inconnue doit provoquer l’ouverture du formulaire de gestion des localités en présentant l’information qui vient d’être encodée au niveau des personnes. Il doit en être de même pour l’encodage d’un pays inexistant dans la gestion des localités. Au retour dans le formulaire de départ, l’information proposée doit être celle qui vient d’être confirmée dans le formulaire de gestion appelé, ou l’information initiale de l’enregistrement en cas d’annulation.

Afin de préserver la cohérence de la base de données, il faut empêcher la suppression d’un pays qui comporte une localité habitée. La suppression d’un pays ne comportant aucune localité habitée doit provoquer la suppression de toutes les localités de ce pays. De plus, la suppression d’une localité habitée et la suppression d’une ligne de communication utilisée par une personne ne peuvent avoir lieu. Les modifications des champs Pays, CPost,

Localite, Libelle et NomPers doivent donner lieu à confirmation, de même que le déménagement d’une personne vers une autre localité et la suppression d’une ligne de communication d’une personne. Lors d’une modification des champs CPost et Localite, la demande de confirmation ne peut avoir lieu que lorsque les deux zones de saisie sont abandonnées par l’utilisateur.

L’encodage de doublons sur les champs CPost, Localite et NomPers doit donner lieu à confirmation. Les doublons sur les champs Pays et Libelle, ainsi que sur les paires CPost/Localite et XIdPers/XIdCom, sont interdits. Ce dernier point n’empêche pas une personne de disposer de plusieurs lignes de communications et, à ce propos, il convient que l’interface utilisateur permette le choix aisé d’une ligne parmi d’autres.

L’utilisateur doit pouvoir choisir la base de données sur laquelle il souhaite travailler et, le cas échéant, créer une nouvelle base. La fermeture de l’application doit provoquer le compactage de la base.

(19)

Travaux complémentaires

21. Tableaux (/100) (cf. Pages VBNF : Les tableaux)

Etablissez en Word un tableau comparatif des possibilités offertes, avantages et inconvénients, de chaque mode d’utilisation de tableaux proposés dans les 5 exemples du cours.

22. StructuresTableaux (/100) (cf. Pages VBNF : Les structures de tableaux)

Créez un exemple de définition de structure dans laquelle l’usage d’un tableau est pertinent. Définissez la structure et son ou ses tableau(x). Fournissez une page Word (pas d’application).

23. TableauxStructures (/100) (cf. Pages VBNF : Les tableaux de structures)

Créez un exemple pertinent d’usage d’un tableau de structures. Définissez la ou les structure(s) et le tableau. Fournissez une page Word (pas d’application).

24. DeclareProc (/100) (cf. Pages VBNF : Déclarations des procédures et des fonctions)

Etablissez en Word un tableau comparatif des possibilités offertes, similitudes et oppositions, des attributs de portée

Overloads, Overrides, Overridable, NotOverridable et MustOverride. 25. ToString (/100) (cf. Pages VBPA : La classe System.Object et la classe String) c

Pour certains types de données tels que les Date, Time et les numériques, la méthode ToString offre des possibilités de formatage semblables à celles de la méthode Format. Par exemple F.ToString(".###") présente le réel F avec

3 décimales. Réalisez une application Windows qui permet l’encodage d’un nombre réel, d’un nombre de caractères pour la partie entière et d’un nombre de décimales, et réalise ensuite l’affichage du nombre réel formaté comme souhaité par la méthode ToString.

26. Sinus (/100) (cf. Pages VBPA : La classe Graphics)

Réalisez une application mettant en œuvre l’exemple du cours (tracé d’une sinusoïde) en permettant à l’utilisateur d’encoder en degrés d’angle les limites qu’il souhaite pour la représentation de la sinusoïde.

27. Async (/200) (cf. Pages VBOBJ : Synchrone, asynchrone et multithreading) c

Réalisez l’application Console permettant l’expérimentation des modes de traitements synchrone, asynchrone et multithreads, en y intégrant les affichages de temps comme indiqué dans le cours. Etablissez un tableau comparatif des temps (semblable à celui du support) pour chacun de ces modes : mise en exécution, délai de reprise par l’appelant et durée de l’exécution. Outre les fichiers du projet et les copies d’écran, ce labo implique la livraison d’une page Word présentant le tableau réalisé.

28. ListeDesPersonnes (/400) (cf. Pages VBPV et VBDB : ListBox, Impression et DataGridView)

Réalisez une application de consultation de la base de données créée au labo 18. L'usage d’une boîte de dialogue permettant la désignation de la base à consulter s'impose.

La fenêtre principale doit présenter la liste des personnes, chacune avec sa localité, dans un DataGridView. Aucune modification de données de ce composant ne peut affecter la base de données. L’ajout d’enregistrements doit être impossible.

Un menu doit proposer : Autre base, Impression et Quitter. Le menu Impression doit offrir le choix entre : Personnes sélectionnées et Toutes les localités. Les impressions doivent se faire via un formulaire secondaire qui présente les données préparées selon le type d’impression demandé dans un ListBox. L’impression des lignes sélectionnées, doit fournir le nom et la localité de chaque personne de la sélection. L’impression de toutes les localités, ne tient pas compte d’éventuelles sélections. Il doit fournir toutes les localités et pour chacune, la liste des habitants.

Ce formulaire secondaire présente un menu qui propose : Imprimer et Quitter. La première option provoque l’impression effective du contenu du ListBox, la seconde ferme le formulaire et rend la main au formulaire principal. Cette application doit être absolument distincte de celle du labo 18.

(20)

29. MesAmisWeb (/400) (cf. Pages VBWEB : Les composants ASP visuels + Liaison à une base de données) c

Réalisez une page Web dynamique de gestion des personnes avec un numéro de téléphone pour chacune. La liste des personnes doit être présentée dans un composant DropDownList lequel doit également servir à la recherche d’une personne. La page aussi doit présenter deux TextBox, l'un pour le nom et l'autre pour le numéro. Ils doivent servir à l'encodage des informations lors de l’ajout d’une personne. Le TextBox utilisé pour le numéro de téléphone doit présenter en permanence le numéro d’appel de la personne dont le nom est visible dans le DropDownList.

Deux boutons libellés Ajout et Supprime doivent activer les procédures correspondantes. Si lors d'un ajout, le nom de la personne encodée existe déjà dans la liste, l'ajout doit être ignoré. Les nom et numéro d’appel de chaque personne doivent être stockés dans une base de données Access.

30. JeuDuPendu (/400) (cf. Pages VBWEB : Programmation du Net Remoting) c

Réalisez une application client/serveur permettant aux utilisateurs de divers ordinateurs d’utiliser les services d’un serveur pour jouer au pendu.

A l’initialisation du jeu, le serveur doit :

⇒ Prendre un mot au hasard dans un fichier stocké sur l’ordinateur serveur; ⇒ Déterminer le nombre de points à comptabiliser pour ce mot;

⇒ Présenter le mot avec toutes les lettres intérieures remplacées par des points. Pendant le jeu, à chaque proposition de lettre à placer, le serveur doit :

⇒ Placer la lettre proposée dans le mot aux endroits adéquats si elle convient ou comptabiliser les erreurs si la lettre ne convient pas.

Le démarrage du serveur nécessite l’attribution d’un port de communication et le démarrage d’un client nécessite l’adresse IP du serveur et le numéro de port employé. Les interfaces graphiques ci-après conviennent bien à cette application (cette illustration présente le serveur, mais aussi trois clients connectés).

(21)

Exercices divers

31. LesImpairs (cf. Pages VBNF: Itérations)

Réalisez une application Console qui affiche les N premiers entiers positifs impairs. La valeur de N doit être donnée par l’utilisateur et le traitement se réalise à l’aide d’une seule boucle For.

Exemple (en supposant que l’utilisateur réponde 5 à la question) :

Valeur de N ? 5 1 3 5 7 9

32. SomEntiers (cf. Pages VBNF : Itérations)

Réalisez une application Windows qui calcule et affiche la somme de tous les entiers compris dans un intervalle désigné par deux nombres Min et Max.

33. DesMots (cf. Pages VBNF et VBPV : Les tableaux + Boutons + Boîte de texte) c Réalisez une application permettant la gestion d’un maximum de 10 mots stockés dans un vecteur de chaînes. La gestion doit permettre l’ajout et la suppression de mots ainsi que le balayage du vecteur. Seuls les mots réellement encodés doivent être présentés lors du balayage. L’illustration ci contre est un modèle d’interface qui convient très bien à cette application.

34. MonRepertoire (cf. Pages VBPV : ListView + Impression) c Réalisez une application permettant la gestion d’un répertoire d’adresses dans un composant ListView. Des TextBox doivent constituer les zones d’encodages des données qui sont ensuite ajoutées dans le

ListView par le clic d’un bouton Ajout. Deux autres boutons, Supprime et Imprime, doivent provoquer les actions attendues sur les lignes sélectionnées du

ListView. L’illustration ci contre représente l’interface de cette application.

35. DevineNombre (cf. Pages VBPV : Générer des erreurs + Form + Programmation multi formulaires) c L’application demandée ici est un jeu qui consiste à faire deviner par l’utilisateur un

nombre pensé par l’ordinateur. A l’ouverture du formulaire de base présenté ci-contre, un nombre caché d’une valeur allant de 1 à 100, est calculé à partir du millième de seconde du temps actuel fournit par Date.Now.Millisecond.

Le joueur tente alors de trouver ce nombre caché par des encodages successifs et il est

aidé à chaque coup par l’indication que le nombre encodé est trop grand ou trop petit. Lorsqu’il trouve enfin le nombre caché, un message de félicitation est exprimé ainsi que le nombre de coups joués.

Pour l’expérimentation de la gestion des erreurs, de la génération des erreurs et de la

communication entre formulaires, la vérification du nombre encodé doit être confiée à une fonction qui retourne True

en cas de réussite et qui dans le cas contraire, génère une erreur dont le message est Trop grand ou Trop petit. Ce message doit être passé à une MessageBox originale qui se présente sous la forme d’un bouton du fait que sa taille n’excède pas celle du bouton qu’elle contient (cf. illustrations). C’est le texte de ce bouton qui doit exprimer le message.

(22)

36. ChercheEtRemplace (cf. Pages VBPV et VBPA : Mémoires de masse + Classes String et RegularExpressions) c L’application demandée doit faire la copie d’un fichier texte en

remplaçant une chaîne donnée par une autre. Les recherches de fichiers doivent utiliser les DialogBox adéquates.

L’information du nombre de remplacements effectués par ligne doit être affichée dans un ListBox. Il ne doit pas y être fait mention des lignes pour lesquelles il n’y a pas de remplacement. Le traitement terminé doit être signalé par un message approprié dans le ListBox

et indiquer le nombre total de remplacements réalisés.

Le comptage des remplacements doit être réalisé à l’aide de la classe

RegularExpressions (la chaîne recherchée est supposée ne jamais contenir de métacaractère) et les remplacements doivent être réalisés par la méthode adéquate de la classe String.

37. RepertoireTelephones (cf. Pages VBPA : Collections génériques) c

Créez une collection générique de structures Personne contenant les noms et numéros de téléphones de personnes, toujours en ordre alphabétique croissant des noms. Réalisez une application Console qui permet, sur base d’un menu, l’ajout et la suppression de personnes, l’affichage de toutes les personnes de la collection ainsi que l’affichage des informations d’une personne recherchée indifféremment sur base de son nom ou de son numéro de téléphone.

38. DesEtudiants (cf. Pages VBOBJ : Constructeurs et destructeurs, constructeur par recopie) c

Créez la classe ClEtudiant en complétant le code qui est livré ci-dessous et implémentez-la ensuite dans une application Windows qui gère une classe d’étudiants nommée MaClasse et qui est une ArrayList de ClEtudiant. L’affichage des étudiants d’une classe se réalise dans une ListView nommée LVEtudiants. Les boutons BNouveau, BDouble, BCopie et BSupprime commandent les opérations correspondantes. Le click d’un entête de colonne recopie la cote correspondante de la ligne sélectionnée dans une TextBox nommée TCote où elle peut être modifiée. La validation d’une cote modifiée est commandée par le bouton BCoteOK.

La création d’un nouvel étudiant implique qu’il ait un nom et un nombre de cours. Cette dernière valeur est plafonnée à

10 pour les besoins de cet exercice. Ce nombre de cours définit la taille d’un vecteur CoteEtud créé et initialisé à zéro dans l’instance.

La création d’un double ne nécessite que la sélection d’une ligne de la ListView. Le double est en tous points identique à son modèle.

La copie nécessite un nom dans la TextBox TNom et la sélection d’une ligne. Sauf pour son nom qui lui est propre, la copie est en tous points identique à son modèle.

La suppression concerne la ligne sélectionnée. Cette suppression doit libérer la mémoire en conséquence.

L’arrêt de l’application provoque l’émission de l’événement FormClosed. Il convient d’en profiter pour libérer la mémoire encore occupée par d’éventuelles instances et tout autre objet.

L’intérêt de l’exercice réside davantage dans la réalisation de ClEtudiant, l’application Windows ne servant qu’à l’expérimentation de cette classe.

(23)

Public Class ClEtudiant

Implements IDisposable

#Region "Données et membres privés"

Private NomEtud As String Private CoteEtud() As Single Private NbreCotes As Integer Private MaxNbCote As Integer = 10

Private WriteOnly Property NbreCours() As Integer

' ... ... ...

End Property

#End Region

#Region "Interface de la classe"

Public ReadOnly Property NombreCours() As Integer

' ... ... ...

End Property

Public Property Nom() As String

' ... ... ...

End Property

Public Property Cote(ByVal Index As Integer) As Single

' ... ... ...

End Property

#End Region

#Region "Constructeurs"

Public Sub New(ByVal ArgNom As String, ByVal ArgNbreCours As Integer)

' ... ... ...

End Sub

Public Overloads Function Clone() As ClEtudiant

' Ce constructeur doit permettre à une instance de se cloner elle-même : C = A.Clone() ' ... ... ...

End Function

Public Overloads Function Clone(ByVal ArgSource As ClEtudiant) As ClEtudiant

' Ce constructeur doit permettre à une instance d’en cloner une autre : C = A.Clone(B) ' ... ... ...

End Function

Public Function Copy(ByVal ArgNom As String, ByVal ArgSource As ClEtudiant) As ClEtudiant

' Le nom de l’étudiant cible doit être différent de celui de l’étudiant source ' ... ... ... End Function #End Region #Region "Destructeur" ' ... ... ... #End Region End Class

(24)

39. MailAGogo (cf. Pages VBDB : OleDB et DataReader) c

Créez l’application Windows MailAGogo qui permet l’envoi d’un message de plusieurs expéditeurs à plusieurs destinataires.

Les adresses des serveurs SMTP et les adresses des messageries sont encodées par une application distincte dans deux tables Access (TServSMTP et TAdrMail). Elles sont chargées sur l’action d’un bouton BCharge pour remplir les objets

de présentations CBServeur (un ComboBox), LBExpediteurs et LBDestinataires (deux ListBox).

Un TextBox nommé TObjet permet l’encodage de l’objet du message et un RichTextBox nommé RTBMessage permet l’encodage du message proprement dit.

Un bouton BEnvoi lance l’émission des mails.

A toutes fins utiles, voici le code qui permet d’envoyer un message d’un expéditeur vers un destinataire.

Dim Mail As System.Net.Mail.MailMessage Dim smtp As System.Net.Mail.SmtpClient Dim Expediteur As String

Dim Destinataire As String Try

' Désigner le serveur SMTP

smtp = New System.Net.Mail.SmtpClient("smtp.unprovider.com")

' Instancier un mail

Mail = New System.Net.Mail.MailMessage

' Préciser les codages employés pour l'objet du message et pour le message

Mail.SubjectEncoding = System.Text.UTF8Encoding.UTF8 Mail.BodyEncoding = System.Text.UTF8Encoding.UTF8

' Désigner l’objet du message situé ici dans un TextBox nommé TObjet

Mail.Subject = TObjet.Text

' Désigner le message situé ici dans un RichTextBox nommé RTBMessage

Mail.Body = RTBMessage.Text

' Donner les adresses des expéditeur et destinataire

Expediteur = "CocoLeFilou@encavale.net" Destinataire = "JacoLePirate@alcatraz.bg"

Mail.From = New System.Net.Mail.MailAddress(Expediteur) Mail.To.Add(New System.Net.Mail.MailAddress(Destinataire)) ' Expédier le message smtp.Send(Mail) ' Libérer la mémoire Mail.Dispose() Catch ex As ApplicationException MessageBox.Show(ex.Message) Finally

Try ' Libérer la mémoire dans un Try car si le message

smtp = Nothing

Mail.Dispose() ' s’est bien passé, c’est déjà chose faite.

Catch End Try

Mail = Nothing End Try

40. DBMails (cf. Pages VBDB : Création d'une base Access + Mode connecté) c

Créez une application Windows qui permet la création et la gestion d’une base de données Access contenant les adresses des serveurs SMTP et les lieux d’émission, ainsi que celles des expéditeurs et destinataires potentiels des messages électroniques.

La base de données doit répondre aux règles de gestion des données suivantes : - Un serveur SMTP est accessible de plusieurs lieux

- Un seul serveur SMTP est accessible à partir d’un lieu donné

- Une adresse de messagerie est de type Expéditeur ou de type Destinataire, mais pas les deux - Les doublons d’adresses SMTP sont interdits

(25)

- Les doublons de lieux sont interdits

- Les doublons sur la paire Adresse-Type sont interdits - Les doublons d’adresses de messagerie sont permis.

Le modèle physique illustré ici permet cette gestion des données. Dans la mesure où les contraintes de développement exposées ci après imposent le contrôle des règles de gestion des données par la programmation, la relation entre les entités TServSMTP et TLieux ne doit pas obligatoirement être mise en place dans la base. L’attribut Type de l’entité TAdrMail peut avoir pour valeur 1 (si Expéditeur) ou 2 (si Destinataire).

Les codes SQL de création des entités et de la relation sont :

CREATE TABLE TServSMTP (IdSMTP Int, ServSMTP TEXT (40)) ALTER TABLE TServSMTP ADD PRIMARY KEY (IdSMTP)

CREATE TABLE TLieux (Lieu TEXT (40), XIdSMTP Int)

ALTER TABLE TLieux ADD FOREIGN KEY (XIdSMTP) REFERENCES TServSMTP (IdSMTP) CREATE TABLE TAdrMail (AdrMail TEXT (40), Type Byte)

L’interface demandée est celle illustrée ci contre. Outre un bouton BDonnees destiné au choix de la base à ouvrir ou à créer, l’interface est constituée de deux GroupBox

(GPBConsultation et GPBEncodage). L’accès à GPBEncodage doit être le seul possible au moment de la création d’une nouvelle base. Le bouton BDonnees doit être rendu inactif de sorte à empêcher une double sélection de base de données.

Le GroupBox GPBConsultation contient quatre ListBox

(LBLieux, LBServeur, LBExpediteur et LBDestinataire) et une TextBox (TServeurDuLieu) qui présente le serveur du premier lieu présenté dans LBLieux à l’ouverture, et le serveur du lieu sélectionné par la suite.

Le GroupBox GPBEncodage contient quatre TextBox (TLieux, TServeur, TExpediteur et TDestinataire), un

ComboBox (CBServeur) et trois boutons (BVideZone, BAjout et BSuppression). Le bouton BVideZone commande l’effacement de toutes les zones de textes du GroupBox. Les boutons BAjout et BSuppression activent les procédures correspondantes pour chacune des zones non vides. Une confirmation doit être demandée à l’utilisateur pour chacune des informations à ajouter ou à supprimer. La sélection d’une donnée dans un des ListBox de GPBConsultation doit provoquer la réplication de cette donnée dans la TextBox correspondante de GPBEncodage. Ce dispositif doit notamment permettre de désigner les informations à supprimer.

Le respect des règles de gestion des données doit être vérifié par le code de chaque procédure d’ajout ou de suppression. La création d’enregistrements orphelins dans TLieux doit être évitée.

L’ajout ou la suppression d’enregistrement doit provoquer la mise à jour de tous les objets de présentation des données. Pour faire simple, une procédure ChargeEtAffiche() est utilisée à l’ouverture de la base et à chaque modification (il serait préférable de programmer les mises à jours des ListBox et ComboBox, mais ce n’est pas l’objet de cet exercice). L’objet de cet exercice étant de réaliser une application exclusivement en mode connecté, l’initialisation des objets de liaison à la base de données peut être faite dès l’ouverture ou la création et ils peuvent être détruits en réponse de l’événement FormClosed . Les déclarations de ces objets peuvent être globales et, outre les Imports, les premières lignes de codes peuvent être les suivantes :

Public Class FDBMail

Dim FlgDB As Integer ' -1 = pas de base, 0 = nouvelle base, 1 = base opérationnelle

Dim NomDB As String

Dim MaConnexion As New OleDbConnection Dim MaCommande As New OleDbCommand Dim DesAdresses As OleDbDataReader

(26)

Notions fondamentales

de programmation

en

VB.Net

(27)

Tables des matières des pages VBNF

Historique du Basic ...4 La technologie .NET...5 Visual Studio .Net ...5 L’environnement de développement Visual Studio...6 Application Console ...7 Application Windows...8 Les entrées et les sorties de données...11 Applications Console ...11 Les entrées...11 Les sorties ...12 Applications Windows ...13 Les types et structures de données...14 Brève révision de notions fondamentales...14 Les variables ...14 Les structures composées (tableaux)...14 Les structures complexes (types utilisateurs)...15 Déclarations des variables. ...16 Les types de données...20 Notation littérale de données ...21 Déclaration des tableaux ...21 Définition des structures...23 Les structures de tableaux ...24 Les tableaux de structures ...24 Les énumérations...25 Les instructions de contrôles et moyens de traitements...26 Brève révision de notions fondamentales...26 La séquence...26 La rupture de séquence ...26 L’alternative ...26 Les itérations ...26 Ni contrôle, ni traitement...27 Les commentaires ...27 La continuation ...27 L’économie de dactylographie...27 Le séparateur d’instructions ...27 Les instructions de contrôles ...28 La rupture de séquence ...28 L’alternative ...28 La sélection ...30 Les itérations ...31 Les boucles logiques...31 La boucle arithmétique ...32 Une boucle ni logique, ni arithmétique...33 L’appel de sous-programmes ...33 L’exécution de programmes externes. ...34 Le mot de la fin ...34 Les moyens de traitements ...35 Les opérateurs ...35 L’affectation ...35 La concaténation ...35 Les opérateurs arithmétiques ...35 Les formes contractées de l’affectation ...35 Les opérateurs relationnels ...35 Les opérateurs logiques ...36 Les opérateurs binaires ...37 Ordre d’évaluation des expressions et hiérarchie des opérateurs ...37 Les procédures et fonctions intrinsèques, et les méthodes...37 Déclarations des procédures et des fonctions...38

(28)

Déclarations des arguments des procédures, fonctions et méthodes ...40 Type de donnée des arguments ...42 Valeur de retour des fonctions ...42 La récursivité...43

Figure

Tableau récapitulatif des associations permises du mode d’ouverture et du type d’accès

Références

Documents relatifs

‌أ فورظلا بسح كلذ و ةعونتلما ةينفلا و ةيناسنلإا ميقلا نم ديدعلاب ثيدلحا يرئازلجا بدلأا رخزي ب كلذ و رامدتسلاا ءازإ ابه رم تيلا لحارلما و زاربإ نم

Fig. 7: An Example of non-declared sponsored post: 1) A verified Mega influencer holding a box on her hand and promoting products. 2) The product page is tagged in the photo

Les garçons Roms, dont les actes de délinquance (essentiellement des actes de petite délinquance : vol, recel, escroquerie) sont fortement réprimés, ne sont certes

La seconde partie de cette thèse s'attache à construire un mécanisme de régula- tion qui minimise le dommage lié à la dégradation de la qualité de l'eau, maintienne une activité

Ces matériaux ont été développés suivant trois axes principaux : d’abord l’axe des mouvements, associés aux moyens de transport et aux centres névralgiques

L’archive ouverte pluridisciplinaire HAL, est destinée au dépôt et à la diffusion de documents scientifiques de niveau recherche, publiés ou non, émanant des

L’Etat est devenu un agent économique déclinant, ce qui ne manque pas de poser la question de la permanence des services publics dans leur contenu et leur importance

Le Parti communiste chinois (PCC) et Xi Jinping, son tout-puissant secrétaire général depuis 2013, se seraient bien passés de cette publicité : plus de 1 000 manifestations,