Académique Documents
Professionnel Documents
Culture Documents
NET
1)- Les
1.1 Introduction
Nous traitons VB.NET d'abord comme un langage de programmation classique. Nous aborderons les objets ultrieurement. Dans un programme on trouve deux choses -des donnes -les instructions qui les manipulent On s'efforce gnralement de sparer les donnes des instructions : +--------------------+ DONNEES +-------------------- INSTRUCTIONS +--------------------+
1.2 Les donnes de VB.NET VB.NET utilise les types de donnes suivants: 1. les nombres entiers, rels et dcimaux 2. les caractres et chanes de caractres 3. les boolens 4. les dates 5. les objets 1.2.1 Les types de donnes prdfinis
Type VB Type .NET quivalent Taille
Boolean System.Boolean 2 octets. Byte System.Byte 1 octet Char System.Char 2 octets Date System.DateTime 8 octets Decimal System.Decimal 16 octets Double System.Double 8 octets. Long System.Int64 8 octets Object System.Object 4 octets Short System.Int16 2 octets Single System.Single 4 octets String System.String (classe)
exemple de programme
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load ' nombres entiers Dim var1 As Integer = 100 Dim var2 As Long = 10000000000L Dim var3 As Byte = 100 Dim var4 As Short = 4 ' nombres rels Dim var5 As Decimal = 4.56789D Dim var6 As Double = 3.4 Dim var7 As Single = -0.000103F ' date Dim var8 As Date = New Date(2003, 1, 1, 12, 8, 4) ' boolen Dim var9 As Boolean = True ' caractre Dim var10 As Char = "A"c ' chane de caractres Dim var11 As String = "abcde" ' objet Dim var12 As Object = New Object ' affichages Console.Out.WriteLine("var1=" + var1.ToString) Console.Out.WriteLine("var2=" + var2.ToString) Console.Out.WriteLine("var3=" + var3.ToString) Console.Out.WriteLine("var4=" + var4.ToString) Console.Out.WriteLine("var5=" + var5.ToString) Console.Out.WriteLine("var6=" + var6.ToString) Console.Out.WriteLine("var7=" + var7.ToString) Console.Out.WriteLine("var8=" + var8.ToString) Console.Out.WriteLine("var9=" + var9.ToString) Console.Out.WriteLine("var10=" + var10) Console.Out.WriteLine("var11=" + var11) Console.Out.WriteLine("var12=" + var12.ToString) 4 End Sub
Integer 145, -7, &FF (hexadcimal) Long 100000L Double 134.789, -45E-18 (-45 10-18) Single 134.789F, -45E-18F (-45 10-18) Decimal 100000D Char "A"c String "aujourd'hui" Boolean true, false date New Date(2003, 1, 1) pour le 01/01/2003
On notera les points suivants : - 100000L, le L pour signifier qu'on considre le nombre comme un entier long - 134.789F, le F pour signifier qu'on considre le nombre comme un rel simple prcision - 100000D, le D pour signifier qu'on considre le nombre comme un rel dcimal - "A"c, pour transformer la chane de caractres "A" en caractre 'A' - la chane de caractres est entour du caractre ". Si la chane doit contenir le caractre ", on double celui-ci comme dans "abcd""e" pour reprsenter la chane [abcd"e].
6
Les conversions entre nombres et chanes de caractres nombre -> chane nombre.ToString ou "" & nombre ou CType(nombre,String) objet -> chane objet.ToString chaine -> Integer Integer.Parse(chaine) ou Int32.Parse chane -> Long Long.Parse(chaine) pu Int64.Parse chane -> Double Double.Parse(chane) chane -> Single Single.Parse(chane)
On peut galement utiliser la fonction CType(expression, type) comme le montre le programme suivant :
On remarquera que les nombres rels sous forme de chane de caractres doivent utiliser la virgule et non le point
10
dcimal. Ainsi on crira Dim d As Double = -14.98 mais Dim d1 As Double = Double.Parse("100,87")
11
12
Exemple d'entres-sorties
13
( affectation )
La priorit des oprateurs lors de l'valuation d'une expression arithmtique est la suivante (du plus prioritaire au moins prioritaire)
14
squence d'instructions
crire un algorithme qui permet de saisir des valeurs pour A et B , faire la somme et afficher le rsultat? Solution : A)- Analyse
Donnes : A,B saisis par clavier Rsultats : S Traitements : S:=A+B
Fin
15
squence d'instructions
crire un algorithme qui permet de calculer et afficher la surface dun cercle? Solution : A)- Analyse
Donnes : R et P saisis par clavier Rsultats : S Traitements : S:=R*R*P
Fin
squence d'instructions
crire un algorithme qui permet de calculer et afficher le salaire brut dun ouvrier connaissant le nombre dheure et le tarif dhoraire? Solution : A)- Analyse
Donnes : H et TH saisis par clavier Rsultats : SB Traitements : SB:=H*TH
Fin
Structure Alternative If Condition Then End if Si la Condition est vraie alors Une instruction (ou un bloc dinstructions) peut tre excute si une condition est vraie. Exemple: If A=B then MsgBox("A=B") End If If A=B Then MsgBox("A=B")
If A=B then MsgBox("A=B") Else MsgBox("A diffrend de B") End If
structure alternative
On dsire comparer deux valeurs ,crire un algorithme qui affiche la plus grande des deux? Solution : A)- Analyse
Donnes : A et B saisis par clavier Rsultats : A ou B Traitements : A < B
Fin
19
structure alternative
Afficher le rsultat de fin danne pour un tudiant connaissant sa moyenne gnrale? Solution : A)- Analyse
Si Moy < 10 Alors crire( Le rsultat de ltudiant est: Doublant) SinonSi Moy < 12 Alors crire( Le rsultat de ltudiant est: Admis) SinonSi Moy < 14 Alors crire( Le rsultat de ltudiant est: Bien) Sinon crire(Le rsultat de ltudiant est: trs Bien) FinSi
Fin
20
Structure de rptition
21
22
23
structure rptitive
Exercice Exercice 1 1
crire un algorithme qui saisie 15 entier et affiche leur somme et leur moyenne ? Solution :
A)- Analyse
Donnes : N, Val saisis par clavier Rsultats : Moy, Somme Traitements : Somme:=Somme + Val
B)- Algorithme
Moy :=Somme/N
Fin
24
Exercice 5.1 crire un algorithme qui demande lutilisateur un nombre compris entre 1 et 3 jusqu ce que la rponse convienne.
25
Exercice 5.2 Ecrire un algorithme qui demande un nombre compris entre 10 et 20, jusqu ce que la rponse convienne. En cas de rponse suprieure 20, on fera apparatre un message : Plus petit ! , et inversement, Plus grand ! si le nombre est infrieur 10.
26
Calcul dun cercle Quel est le rayon du cercle Sa circonfrence est de Sa surface est de Voulez-vous faire un autre calcul (O/N) Quel est le rayon du cercle Sa circonfrence est de Sa surface est de Voulez-vous faire un autre calcul (O/N) Au revoir et bientt ! : 0,75 : 4,71239 : 1,76716 :O : 27 : 169,646 : 2290,22104 :N
27
y = ax2 + bx + c Quelle est la valeur de a Quelle est la valeur de b Quelle est la valeur de c Lquation ne possde pas de racine relle Voulez-vous faire un autre calcul (O/N)
RACINE DE LQUATION DU 2ME DEGR :5 :3 :2 : d = -31 :O : -2 : 0,6 : 0,5 : d = 4,36 : x1 = - 0,37 : x2 = 0,67
28
Quelle est la valeur de a Quelle est la valeur de b Quelle est la valeur de c Lquation possde deux racines distinctes Lquation sannule pour et
Voulez-vous faire un autre calcul (O/N) Quelle est la valeur de a Quelle est la valeur de b Quelle est la valeur de c Lquation possde une racine double Lquation sannule pour Voulez-vous faire un autre calcul (O/N) Quelle est la valeur de a Quelle est la valeur de b Quelle est la valeur de c Lquation est du premier degr ! Lquation sannule pour x = - (c/b) Voulez-vous faire un autre calcul (O/N) Quelle est la valeur de a Quelle est la valeur de b Quelle est la valeur de c Lquation nen est plus une !!! Voulez-vous faire un autre calcul (O/N) Au revoir et bientt !
: -0,25 : : : : O 0 0 0,5
:N
29
Exercice Exercice 6 6
Le reprsentant dune socit de distribution des produits daffichage lectroniques sont rmunrs de faon suivante :
un fixe mensuel de 4000 DH une commission a pourcentage variable sur chaque tranche du chiffre daffaire mensuel : une commission de 5% pour un chiffre daffaire compris entre 0 et 1000. une commission de 10% pour un chiffre daffaire compris entre 1000 et 3000. une commission de 14% pour un chiffre daffaire suprieur 3000.
Faire un programme qui permet de calculer et afficher le montant total de la rmunration de chaque reprsentant. En utilisant une boucle.
30
Exercice Exercice 7 7
Une salle de cinma dsire automatiser la gestion de la billetterie pour chaque client qui se prsente, on calcule le prix du billet en fonction des donnes suivantes:
NF : Numro du fil HS : heure de la sance Age : Age de spectateur Le prix normal de la facture est de 30 DH, cependant des remises peuvent tre accorder en fonction du critres suivants : NF=2 ou Age < 15 ou HS>20 remise de 50% NF=2 et Age >75 remise 25% NF=3 et Age < 15 entre refuse Faire un programme qui permet de calculer et dcider le prix payer pou chaque client qui se prsente . on arrte la saisie par "non"
31
Dim Tableau(3) As Integer entrane la cration des variables 'Integer' suivante: Tableau Tableau Tableau Tableau (0) (1) (2) (3)
Contenu du tableau:
0 0 0 0
32
Dim Tableau(3) comporte 4 lments (lments d'index 0 3). Tableau(1)= 12 permet daffecter le nombre 12 au 2eme lment du tableau. 0 12 0 0 S=Tableau(1) permet daffecter la variable S le 2eme lment du tableau. Un tableau peut avoir plusieurs dimensions : Dim T(2,2) lment:0,0 lment:1,0 lment:2,0 lment:0,1 lment:1,1 lment:2,1 lment:0,2 lment:1,2 lment:2,2
33
Exemple: La premire ligne comporte les 3 lments: T(0,0) T(0,1) et T(0,2) Pour mettre 33 dans l'lment central: Dim T(2.2) As Integer T(1,1)=33 voyons le contenu du tableau:
0 0 0
0 33 0
0 0 0
Il est possible de crer des tableaux 3, 4 ..dimensions: Exemple: Dim T(3,1,2) cre un tableau de 4X2X3 lments.
34
Un tableau est un objet Crons 2 tableaux et examinons les principales mthodes. Dim a(3) As String Dim b(3) As String b=a.clone La Classe Array. Tous les tableaux viennent de la classe Array; vous pouvez accder aux mthodes et proprits de System.Array de chaque tableau Par exemple, la proprit Rank retourne le nombre de dimension du tableau la mthode Sort trie ses lments. Copie le tableau a dans b
35
Exemple : Soit un tableau Mois() Clear Array.Clear(Mois,0,2) Efface 2 lments du tableau Mois partir de llment 0 Reverse Array.Reverse(Mois) inverse les 3 lments partir de llment 1 Copy Array.Copy(Mois1,Mois2,20) copie 20 lments de Mois vers Mois2 Sort Array.sort(Mois) Trie le tableau Mois
36
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Dim a() As String = New String(3) {"youness", "amine", "morad", "dalila"} Dim b(3) As String Dim c(3) As String b = a.Clone 'Copie le tableau a dans b
For i As Integer = 0 To b.Length - 1 MsgBox(b(i)) Next Array.Clear(b, 0, 2) For i As Integer = 0 To b.Length - 1 MsgBox(b(i)) Next Array.Reverse(a) For i As Integer = 0 To a.Length - 1 MsgBox(a(i)) Next Array.Copy(a, c, 3) For i As Integer = 0 To c.Length - 1 MsgBox(c(i)) Next Array.Sort(c) For i As Integer = 0 To c.Length - 1 MsgBox(c(i)) Next End Sub
37
Equals
compare 2 tableaux.
Binarysearch recherche un lment dans un tableau tri unidimensionnel. Exemple : I=Array.BinarySearch(Mois, "Fvrier") retourne I=1 IndexOf Recherche un objet spcifi dans un tableau unidimensionnel (tri ou non), retourne l'index de la premire occurrence. Dim myIndex As Integer = Array.IndexOf(myArray, myString) Retourne -1 si l'lment n'est pas trouv. LastIndexOf fait une recherche partir de la fin.
Ubound Retourne le plus grand indice disponible pour la dimension indique d'un tableau Dim Indice, MonTableau(10, 15, 20)
38 Indice = UBound(MonTableau, 1) ' Retourne 10. (1 indique la premire dimension du tableau)
GetUpperBound mme fonction Indice = MonTableau.GetUpperBound(0) '( 0 pour premire dimension!!) Retourne 10. Length retourne un entier qui reprsente le nombre d'lments total dans le tableau. Pour un tableau une dimension Lenght-1 retourne l'indice du dernier lment. Cela est souvent utilis pour parcourir tous les lments du tableau: Dim t(10) As String Dim i As Integer For i = 0 To t.Lenght-1 t(i)=.. Next t GetValue et SetValue permettent de connatre ou de modifier la valeur d'un lment du tableau: Mois.GetValue(0) est quivalent Mois(0) Dans un tableau 2 dimensions comment modifier l'lment (0,3): myArray.SetValue("fox", 0, 3) C'est quivalent myArray(0,3)="fox"
39
Retourne le plus grand indice disponible pour la dimension indique d'un tableau
40
41
Exemple: Crer un tableau de 6 lments, mettre dans chaque lment du tableau le carr de son indice, afficher le contenu du tableau.
Dim arr(5) As Integer Dim i As Integer For i = 0 To arr.GetUpperBound(0) GetUpperBound(0) retourne 5 arr(i) = i * i Next i For i = 0 To arr.GetUpperBound(0) msgbox("arr(" & i & ") = " & arr(i)) Next i
42
Exemple de recherche dans un tableau: Dans un tableau de String rechercher dans quel lment et quelle position se trouve la string "MN". Dim Tableau() As String = {"ABCDEFG", "HIJKLMNOP"} Dim AChercher As String = "MN" Dim i As Integer Dim position As Integer For i = 0 To Tableau.Length - 1 'on parcourt chaque lment du tableau position = Tableau(i).IndexOf(AChercher) 'dans l'lment du tableau on cherche la sous-chane If position >= 0 Then Exit For Next i
43
Tableau Note(12) en Numrique Variables Moy, Som en Numrique Dbut POUR i ALLANT DE 0 A 11 Ecrire "Entrez la note n", i Lire Note(i) FinPour Som := 0 POUR i ALLANT DE 0 A 11 Som := Som + Note(i) FinPour Moy := Som / 12
crire(la somme est: crire(La moyenne est:
Fin
Som) Moy)
44
Les tableaux
crivez un algorithme permettant lutilisateur de saisir un nombre quelconque de valeurs, qui devront tre stockes dans un tableau. Lutilisateur doit donc commencer par entrer le nombre de valeurs quil compte saisir. Il effectuera ensuite cette saisie. Enfin, une fois la saisie termine, le programme affichera le nombre de valeurs ngatives et le nombre de valeurs positives. Solution :
Variables Nb, Nbpos 0, Nbneg 0 en Numrique Tableau T() en Numrique Debut Ecrire "Entrez le nombre de valeurs :" Lire Nb Redim T(Nb) Pour i 0 Nb - 1 Ecrire "Entrez le nombre n ", i + 1 Lire T(i) Si T(i) > 0 alors Nbpos Nbpos + 1 Sinon Nbneg Nbneg + 1 Finsi i Suivant Ecrire "Nombre de valeurs positives : ", Nbpos Ecrire "Nombre de valeurs ngatives : ", Nbneg Fin
45
collections
Dim maCollection As New Collection Une collection fonctionne plutt comme un groupe d'lments dans laquelle il est possible dajouter ou denlever un lment nimporte quel endroit sans avoir se proccuper de la taille de la collection, ni ou se trouve l'lment. Le nombre d'lment n'est pas dfini au dpart comme dans un tableau. Dans une collection il n'y a que les lments que l'on a ajout. Les lments sont reprs grce un index ou avec une Cl unique Ds que cet objet est cr, vous pouvez ajouter (avec Add), enlever ou manipuler des lments. On utilise la syntaxe: NomCollection.Add( lment, Cl)
Col.Remove(2)
l'index:
La cl
47
Rsum
Faire un programme qui gre un carnet dadresses.
48
1 :Ajouter
49
1 :Consulter
50
1 :Rechercher
51
52
53
54
S3 = S3.Insert(6, " ") 'Donne S= "Visual Basic" 'Noter: le premier caractre a la position 0.
MsgBox(S3) 56
'Remove: 'Enlve des caractres une certaine position dans une chane.
Dim S4 As String = "VisualBasic"
'Replace: 'Remplace dans une chane de dpart, toutes les occurrences d'une chane par une autre. 'Resultat = ChaineDpart.Replace(ChaneARemplacer, ChaneQuiRemplace)
Dim S5 As String = "Visual_Basic"
'Donne S= "12/02/1990"
57
Dim a1 As String = "Informatique" MessageBox.Show(a1.Substring(2, 3)) 'Affiche for 'left 'len Dim C As String = "DUBONET" Dim Tx As String Dim i As Integer For i = 1 To Microsoft.VisualBasic.Len(C) Tx += Microsoft.VisualBasic.Left(C, i) + ControlChars.CrLf Next i TextBox1.AppendText(Tx) 58
' Comparer
Dim monTexte As String = "salut ca va! salut ca va" Dim monMot As String = "lu" Dim compteur As Integer Dim index As Integer Do
index = monTexte.IndexOf(monMot, index + 1)
compteur += 1
60
61
62
La Classe 'Control':
Les contrles (Button, TextBox ListBox...) hritent tous de la classe Control qui hrite elle-mme de la classe System.WindowsForms. Tous les objets avec reprsentation visuelle ont des proprits communes hrits de la classe Control. Nous allons en voir quelqu'unsName : il sagit du nom de lobjet tel quil est gr par lapplication. Il est vivement conseill de renommer les objets que vous venez de crer afin de donner des noms plus vocateurs. Le bouton sur lequel est crit OK sera nomm BoutonOK. La liste qui affiche les utilisateurs sera nomme ListUtilisateurs. Il est conseill de dbuter le nom de lobjet par un mot voquant sa nature: BoutonOk ou BtOk ou ButtonOk, btnOk Microsoft conseille: btn pour les Boutons lst pour les ListBox chk pour les CheckBox cbo pour les combos dlg pour les DialogBox frm pour les Form lbl pour les labels txt pour les Textbox tb pour les Toolsbar rb pour les radiobutton mm pour les menus tmr pour les timers
Text : il sagit du texte qui est associ lobjet. ButtonOk.Text= "Ok" Visible : Indique si un contrle est visible ou non. ButtonOk.Visible=False fait disparatre le bouton. Font : Permet le choix de la police de caractres affiche dans lobjet. BackColor ForeColor : Couleur du fond, Couleur de lavant plan. Pour un bouton Forecolor correspond au cadre et aux caractres. ButtonOk.ForeColor= System.Drawing.Color.Blue
63
txtNom.Select() dans Form_Load donne le focus la TextBox Une fois que l'utilisateur a tap son nom , il clique sur le bouton 'Ok': Dans btOk_Click il y a: Dim nom As String nom= txtNom.Text La variable Nom contient bien maintenant le nom de l'utilisateur. Parmi les multiples proprits de ce contrle, signalons :
Multiline : autorise ou non lcriture sur plusieurs lignes. Scrollbars : fait figurer une barre de dfilement horizontale ou verticale (ou les deux) PaswordChar : crypte le texte entr sous forme dtoiles. MaxLength : limite le nombre de caractres quil est possible de saisir. TextBox1.MaxLength= 3 'limite la saisie 3 caractres. TextBox1.MaxLength= 0 'ne limite pas la saisie. TextLength donne la longueur du texte En mode MultiLine la collection Lines contient dans chacun de ses lments une des lignes affiches dans le contrle: TexBox1.Lines(0) contient la premire ligne TexBox1.Lines(1) la seconde...
64
Ici si je clique sur le bouton 'OUI' droite, cela dcoche 'NON' le cadre Format
La proprit Text, bien sur, permet dafficher le libell cot du bouton, on peut aussi mettre une image avec la proprit Image. CheckAlign permet de mettre la case cocher droite ou gauche du texte, TextAlign permet d'aligner le texte. Exemple pour le bouton en haut droite. RadioButton3.Text="OUI" RadioButton3.TextAlign= MiddleCenter 'Middle=hauteur, center = horizontale RadioButton3.CheckAlign=MiddleRight La proprit la plus intressante de ces cases est celle qui nous permet de savoir si elle est coche ou non. Cette proprit sappelle Checked. Sa valeur change de False True si la case est coche. RadioButton.Checked=True 'Coche le bouton If RadioButton.Checked=True Then ' Teste si le bouton est coch. End If
65
GroupBox
Il est possible de regrouper des contrles dans un container, on peut par exemple regrouper plusieurs RadioButton. Le container peut tre un GroupBox
66
67
TP 2: Raliser une application qui affiche dans la zone du texte les numros de 1 10 :
68
69
ListBox
Le contrle ListBox affiche une liste d'lments (d'objets) dans laquelle l'utilisateur peut faire un ou plusieurs choix.
La liste contient "tarte", "poisson", "viande", "lgumes", "sauces". Ici l'lment "poisson" est slectionn, il est en bleu.
La listBox contient une collection d'"Item": Elle est vide au dpart. Si j'ajoute un lment la ListBox, cela ajoute un lment la collection Items Vider la ListBox: ListBox1.Items.Clear() Ajouter l'lment "poisson" ListBox1.Items.Add("poisson") Comment enlever des lments? ' Enlever l'lment d'index 5: ListBox1.Items.RemoveAt(5) ' Enlever l'lment slectionn: ListBox1.Items.Remove(ListBox1.SelectedItem) ' Enlever l'lment "Tokyo": ListBox1.Items.Remove("Tokyo") Comment lire l'lment 3? T=ListBox1.Items(3).ToString Comment rechercher l'lment qui contient une chane de caractres? List1.FindString("pa") retourne le numro du premier lment commenant par 'pa'.
70
TP 4: Raliser une application qui affiche dans la liste les noms des fruits ou les noms des lgumes selon le choix puis affiche le nom dlment slectionn :
71
TP 5: Raliser une application qui calcule et affiche dans les zones du texte la table de la multiplication selon le choix :
72
TP6 :Raliser une application qui affiche la plus grande des deux nombres
73
TP7 Le reprsentant dune socit de distribution des produits daffichage lectroniques sont rmunrs de faon suivante : un fixe mensuel de 4000 DH une commission a pourcentage variable sur chaque tranche du chiffre daffaire mensuel : une commission de 5% pour un chiffre daffaire compris entre 0 et 1000. une commission de 10% pour un chiffre daffaire compris entre 1000 et 3000. une commission de 14% pour un chiffre daffaire suprieur 3000. Raliser une application qui permet de calculer et afficher le montant total de la rmunration de chaque reprsentant.
74
75
TP8 :Raliser une application qui dclare et remplisse un tableau de 5 valeurs numriques puis affiche ces nombres et la somme et la moyenne de ces valeurs.
76