Cours VB.NET

Image non disponible


précédentsommairesuivant

VII-E. Contrôle des connaissances

Voici des exercices sur les notions que vous devez absolument maîtriser en langage Visual Basic.

Pour faire les exercices, écrire votre code dans VB et le tester:

Créer une application (menu 'Fichier', 'Nouveau', 'Projet' cliquer sur l'icône 'Application Windows Forms' puis 'Ok'.

Dans le formulaire 'Form1', mettre un Bouton 'Button1' et un label nommé 'Label1'.(Pour ajouter un objet sur le formulaire, on clique sur l'objet à gauche dans les 'Outils', puis on clique sur le formulaire , on déplace et on lâche le bouton de la souris).

Double-cliquer sur le bouton 'Button1', la procédure Private Button1_Click(..) apparaît.

C'est cette procédure qui sera exécutée lorsque l'utilisateur cliquera sur le bouton.

Image non disponible

Mettre votre code(la réponse aux questions) dans cette procédure, entre:

 
Sélectionnez

Private Button1_Click(..) 

End Sub 

Si vous tapez une erreur, elle est soulignée en ondulé dès que vous quittez la ligne.(comme le 'a' de l'exemple).

Cela permet de la corriger. Toutes les réponses sont dans le cours.

Image non disponible

Pour exécuter le code cliquer sur la flèche verte en haut, cela démarre le programme.

Dans la fenêtre Form1 qui s'ouvre cliquer sur le bouton 'Buttom1', cela exécute votre code.

Cliquer sur le carré pour arrêter le programme.

Ces exercices sont effectués avec option Strict= On.

Je donne une solution, mais souvent il y a plusieurs solutions possible.

VII-E-1. Exercices sur les variables

Questions:

1.1 Écrire le code créant une variable nommée 'myNumber' devant contenir un entier, donner lui la valeur 12. Nommer en terme Visual Basic les différents éléments et étapes.

1.2 Voici des déclarations de variables, indiquer les noms de variables corrects et ceux qui ne seront pas acceptés.

 
Sélectionnez


       Dim 2a As Integer

       Dim maPremiereVariableDeBoucleInterne As Integer   

       Dim nom Utilisateur As String 

       Dim MonNom  As String

1.3 Quel type de variable utiliser pour.

- Faire des calculs financiers?

- Mettre un texte de 500 caractères?

- Une variable de boucle allant de 0 à 100 et qui soit la plus rapide possible?

1.4 Déclarer une constante qui se nomme myName et lui donner la valeur "lulu".

Réponses:

1.1 Écrire le code créant une variable nommée 'mynumber' devant contenir un entier, donner lui la valeur 12. Nommer en terme Visual Basic les différents éléments et étapes.

 
Sélectionnez

 Dim myNumber As Integer =12

On aurait pu aussi écrire:

 
Sélectionnez

Dim myNumber As Integer

    myNumber = 12

On déclare la variable myNumber , elle est de 'type' Integer. On l'initialise avec la valeur 12. '12' est un littéral.

1.2 Voici des déclarations de variables, indiquer les noms corrects et ceux qui ne seront pas acceptés.

Dim 2a As Integer Erreur: un nom de variable ne doit pas commencer par un chiffre.

VB souligne 2a et indique, si on met le curseur sur '2a', 'Identificateur attendu' car 2a n'est pas un identificateur (un nom de variable) valide.

Dim maPremiereVariableDeBoucleInterne As Integer Correcte: le nom d'une variable peut être très long.

Dim nom Utilisateur As Integer Erreur: un nom de variable ne doit pas contenir d'espace.

On aurait pu écrire: nom_Utilisateur car le caractère '_' peut être utilisé.

Dim MonNom As String Correcte et accepté mais on aurait pu écrire 'monNom' pour suivre les règles de bonnes écritures qui consistent à mettre en majuscules la première lettre de chaque mot sauf pour le premier mot.

1.3 Quel type de variable utiliser pour.

Faire des calculs financiers? Les Decimal.

Mettre un texte de 500 caractères? une String.

Un variable de boucle allant de 0 à 100 et qui soit le plus rapide possible? un Integer.

1.4 Déclarer une constante qui se nomme myName et lui donner la valeur "lulu"

 
Sélectionnez

Const MyName As String ="lulu"

VII-E-2. Exercices sur les Strings et Char

Questions:

2.1 Créer une variable 's' de type String contenant " 45.12 ", éliminer les espaces de début et de fin, remplacer le point par une virgule si il y a un point.

2.2 Créer une variable s de type String, l'initialiser avec "Philippe", afficher dans une Messagebox la longueur de la chaîne.

2.3 Créer une variable ch de type Char, y mettre le caractère "2", afficher sur la console True ou False si ch est un chiffre, une lettre.

2.4 Créer une variable s de type String, l'initialiser avec "Philippe Dubout". Tester s'il y a un espace dedans, si oui mettre les 2 mots dans un tableau (avec l'instruction Split). Mettre les 2 mots en majuscules. Mettre les 3 premières lettres du premier mot dans une nouvelle variable 'm' puis l'afficher dans une MessageBox. Si le second mot se termine par 'BOUT' afficher 'Se termine par bout'.

Réponses:

2.1 Créer une variable 's' de type String contenant " 45.12 ", éliminer les espaces de début et de fin, remplacer le point par une virgule si il y a un point.

 
Sélectionnez

Dim s As String= "   45.12  "

s= s.Trim(" ") 

If s.Contains(".") Then

    s= s.Replace(".","," )

End If

Attention avec Option Strict= On, s=s.Trim(" ") n'est pas accepté (car la chaîne de caractère " " n'est pas castée en char). Il faut écrire s=s.Trim(" "c) ou s=s.Trim(CChar(" ")).

2.2 Créer une variable s de type String, l'initialiser avec "Philippe", afficher dans une MessageBox la longueur de la chaîne

 
Sélectionnez

Dim s As String ="Philippe"

MsgBox(s.Length.ToString) 

s.length retournant un entier, il faut le transformer en chaîne de caractères (grâce à .ToString) pour l'afficher.

2.3 Créer une variable ch de type Char, y mettre le caractère "2", afficher sur la console True ou False si ch est un chiffre, une lettre.

 
Sélectionnez

Dim ch As Char
ch = "2"c
Console.WriteLine(Char.IsDigit(ch))     ' Output: "True"'  Est un chiffre
Console.WriteLine(Char.IsLetter(ch))    ' Output: "False"' n'est pas  une lettre

2.4 Créer une variable s de type String, l'initialiser avec "Philippe Dubout". Tester s'il y a un espace dedans, si oui mettre les 2 mots dans un tableau (avec l'instruction Split). Mettre les 2 mots en majuscules. Mettre les 3 premières lettres du premier mot dans une nouvelle variable 'm' puis l'afficher dans une MessageBox. Si le second mot se termine par 'BOUT' afficher 'Se termine par bout'.

 
Sélectionnez

Dim s As String ="Philippe Dubout"

Dim m As String

If  s.Contains( " ") Then

   Dim mot() As String=s.Split(" "c)

     mot(0)= mot(0).ToUpper

     mot(1)= mot(1).ToUpper

     m = mot(0).Substring(0, 3)

    MsgBox (m)

    If  s.EndsWith ("BOUT")

        MsgBox ("Se termine par BOUT")

     End If 

End If

Remarquer que Split fonctionne avec comme séparateur des caractères et non des String (d'ou le " "c et non le " ").

Notons aussi que, comme avec SubString, une chaîne commence par le caractère numéro 0.

VII-E-3. Exercices sur les nombres

Questions :

3.1 Créer une variable 'i' de type Integer, initialiser la avec la valeur 2, Incrémenter i (ajouter 1).

3.2 Créer une variable 's' de type virgule flottante simple précision, initialiser la avec la valeur 12,7561 , créer une variable 's1' qui devra contenir la partie entière de 's' créer une variable s2 qui devra contenir 's' arrondi à 2 décimales après la virgule (Comme pour les valeurs monétaires). Que contiendra s1 et s2 à la fin?

3.3 Créer un nombre virgule flottante double précision nommé 'x', l'initialiser avec 123456,45. Calculer le cube de x (x puissance 3), la racine 4ieme de x :

Réponses:

3.1 Créer une variable 'i' de type Integer, initialiser la avec la valeur 2, Incrémentez i (ajouter 1).

 
Sélectionnez

Dim i As Integer=2 

i=i+1

ou i += 1

3.2 Créer une variable 's' de type virgule flottante simple précision, initialiser la avec la valeur 12,7561 , créer une variable 's1' qui devra contenir la partie entière de 's' créer une variable s2 qui devra contenir 's' arrondi à 2 décimales après la virgule (Comme pour les valeurs monétaires). Que contiendra s1 et s2 à la fin?

 
Sélectionnez

Dim s As Single

Dim s1 As Single

Dim s2 As Single

 s =12.7561 

s1 =Math.Truncate(s)   

s2 =Math.Round(s, 2) 

s1 sera égal à 12. (partie entière)

s2 sera égal à 12.76 (arrondi à l'entier le plus proche)

On remarque qu'on a déclaré toutes les variables au début (c'est une bonne manière de faire), plutôt qu'au moment ou on en a besoin.

On a bien écrit s =12.4561 et pas s =12,4561 car le séparateur décimal pour les littéraux est le point.

Au lieu d'écrire s1 =Math.Truncate(s), on écrit souvent s1 =Int(s) en utilisant une instruction Visual Basic.

Question : pourquoi Math. avant Truncate? C'est pour indiquer l'espace de nom System.Math qui contient Trunccate; on aurait pu aussi écrire en tête de module Imports System.Math et ensuite s1 =Truncate(s) aurait été accepté.

3.3 Créer un nombre virgule flottante double précision nommé 'x', l'initialiser avec 123456,45. Calculer le cube de x (x puissance 3), la racine 4ieme de x :

 
Sélectionnez

Dim x As Double

Dim x1 As Double

Dim x2 As Double

 x =123456.45

x1= Math.Pow(x, 3) 

x2= Math.Pow(X, 1/4) 

Prendre la racine Nieme d'un nombre revient à le mettre à la puissance 1/N.

donc racine 4eme de X : x2= Math.Pow(X, 1/4)

VII-E-4. Exercices nombres-String

Questions:

4.1 Créer une variable 'x' de type Integer; pour toute valeur de x, afficher dans un label 'Label1' "Le cube de 12 est 1728" (exemple si x=12).

4.2 Demander dans une InputBox à l'utilisateur de taper un nombre entier. Multiplier ce nombre par 2, afficher le résultat dans une MessageBox.(avec l'instruction VB MsgBox puis avec la Classe MesssageBox du Framework).

4.3 Même chose que l'exercice 4.2 mais afficher uniquement le résultat si l'utilisateur a bien tapé dans la InputBox une valeur numérique. Si la saisie n'est pas numérique une MessageBox doit indiquer 'Erreur de saisie'.

4.4 Même chose que l'exercice 4.2 mais en demandant de taper un nombre avec 2 chiffres après la virgule (Calcul sur des Single). Gérer le fait que l'utilisateur peut se tromper et ne pas employer le bon séparateur décimal (en France s'il tape un point au lieu de la virgule par exemple). Utiliser pour la conversion String vers Single une instruction de conversion spécifique (pas CType).

Réponses:

4.1 Créer une variable 'x' de type Integer; pour toute valeur de x afficher dans un label 'Label1' "Le cube de 12 est 1728" (exemple si x=12).

 
Sélectionnez

Dim X As Integer 

x=12

Label1.text= "Le cube de " & X.ToString & "  est " & (Math.Pow(X , 3)).ToString 

4.2 Demander dans une InputBox à l'utilisateur de taper un nombre entier. Multiplier ce nombre par 2, afficher le résultat dans une MessageBox (avec l'instruction VB MsgBox puis avec la Classe MesssageBox du Framework).

 
Sélectionnez

Dim s as String

Dim i as Integer

s= InputBox ("Test", "Taper un nombre entier") 

i= CType(S, Integer)

i=i*2

MsgBox (i.ToString)

ou

MessageBox.Show(i.ToString)

L'InputBox retourne une String, il faut la transformer en Integer, effectuer le calcul puis la retransformer en String pour l'afficher.

4.3 Même chose que l'exercice 4.2 mais afficher uniquement le résultat si l'utilisateur a bien tapé dans la InputBox une valeur numérique. Si la saisie n'est pas numérique une MessageBox doit indiquer 'Erreur de saisie'.

 
Sélectionnez

Dim s as String

Dim i as Integer

s= InputBox ("Test", "Taper un nombre entier") 

if  IsNumeric (s) Then

    i= CType(S, Integer)

    i=i*2

    MsgBox (i.ToString)

Else

     MsgBox ("Erreur de saisie")

End If

Noter que le code entre If et Else et entre Else et End If est décalé à droite par l'ajout d'espace ou de Tab, ce qui permet une meilleur lecture du code.

4.4 Même chose que l'exercice 4.2 mais en demandant de taper un nombre avec 2 chiffres après la virgule (Calcul sur des Single). Gérer le fait que l'utilisateur peut se tromper et ne pas employer le bon séparateur décimal (en France s'il tape un point au lieu de la virgule par exemple). Utiliser pour la conversion String vers Single une instruction de conversion spécifique (pas CType).

 
Sélectionnez

Dim s as String

Dim i as Single

s= InputBox ("Test", "Taper un nombre avec 2 chiffres après la virgule") 

s=s.Replace (".",",")

i= CSng(S)

i=i*2

MsgBox (i.ToString)

Comme le séparateur décimal, sur un ordinateur français (Culture Fr) est le ',', on remplace les points par des virgules avant de convertir en Single.

On remarque que le résultat est affiché avec une virgule car ToString utilise le séparateur de la culture en cours.

VII-E-5. Exercices sur les boucles

Questions :

5.1 Écrire une boucle qui affiche les nombres pairs de 2 à 100 dans le label 'label1'. Affiche 2 puis 4, 6 ,8,....100.

5.2 Écrire une boucle qui affiche les nombres allant d'un nombre demandé à l'utilisateur et descendant de ce nombre jusqu'à 1 mais n'affichant pas le nombre 4 ( si l'utilisateur tape 8 cela affichera: 8 puis 7 ,6 ,5 ,3 ,2 ,1).

5.3 Afficher le plus grand nombre possible dont le carré est inférieur à 1000. En d'autres termes, écrire une boucle qui affiche dans label1 les nombres croissant 1,2 ,3, 4...tant ce que le nombre au carré est inférieur à 1000. Utiliser While pour cette boucle et une variable 'Counter'.

5.4 Chercher l'erreur dans ce code qui affiche dans une boite de message les résultats de la table de multiplication de 1 à 9:

 
Sélectionnez

Dim i, j as Integer

For i=1 to 9

 For j=1 To 9

MsgBox (i*j.ToString)

 Next i

Next j

5.5 Demander par une InputBox à l'utilisateur de taper un chiffre entre 1 et 12, vérifier que ce chiffre est bien compris entre 1 et 12 ; si ce n'est pas le cas, reposer la question (utiliser une boucle Do.. loop pour boucler en cas de mauvaise réponse.)

Si l'utilisateur tape sur 'Annuler' dans la InputBox cela retourne une chaîne vide et cela plante. Comment gérer cela?

5.6 Faire une boucle avec Do Loop, tournant de 1 à 100 et additionnant à une variable 'somme' à chaque tour la variable de boucle.

Réponses:

5.1 Écrire une boucle qui affiche les nombres pairs de 2 à 100 dans le label 'Label1'. Affiche 2 puis 4, 6 ,8,....100.

 
Sélectionnez

Dim i as Integer

For i=2 to 100 Step 2

    Label1.Text= i.ToString

    Label1.Refresh

Next i

Ici, comme on connaît les valeurs de début et de fin, on utilise une boucle For Next.

Step permet de 'boucler' de 2 en 2.

Ne pas oublier Label1.Refresh qui force l'affichage pour chaque tour de la boucle. Sans cela l'affichage serait mis à jour uniquement en fin de procédure.

Noter que le code entre For et Next est décalé à droite par l'ajout d'espace ou de Tab, ce qui permet une meilleur lecture du code.

5.2 Écrire une boucle qui affiche les nombres allant d'un nombre demandé à l'utilisateur et descendant de ce nombre jusqu'à 1 mais n'affichant pas le nombre 4 ( si l'utilisateur tape 8 cela affichera: 8 puis 7 ,6 ,5 ,3 ,2 ,1).

 
Sélectionnez

Dim i as Integer

Dim sfin As String

Dim fin As Integer

sfin= InputBox ("Donner un nombre entier")

fin= CInt(sFin) 'on transforme sfin, une String saisie par l'utilisateur en fin , un Integer.

For i= fin to 1 Step -1

    if i <>4 Then Label1.Text= i.ToString

    Label1.Refresh

Next i

Ici on ne connaît pas la valeur de la fin de la boucle mais elle sera saisie par l'utilisateur et on peut la mettre dans la variable nommée 'fin'. La boucle c'est une boucle descendante, il faut donc un pas négatif: Step -1. On pourrait aussi vérifier par un If fin>1 Then que la valeur de fin n'est pas inférieur ou égale à 1.

5.3 Afficher le plus grand nombre possible dont le carré est inférieur à 1000. En d'autres termes, écrire une boucle qui affiche dans label1 les nombres croissant 1,2 ,3, 4...tant ce que le nombre au carré est inférieur à 1000. Utiliser While pour cette boucle et une variable 'Counter'.

A priori, on ne connaît pas la valeur de fin de boucle, donc on va utiliser une boucle While plutôt que For Next.

Il faut gérer soit même la variable de boucle et l'incrémenter mais en fin de boucle.

 
Sélectionnez

Dim Counter As Integer = 0
While Counter* Counter < 1000  ' Test la valeur du compteur.
   label1.Text= Counter.ToString

    Counter += 1 ' Incrémente le compteur.
End While

5.4 Chercher l'erreur dans ce code qui affiche dans une boite de message les résultats de la table de multiplication de 1 à 9:

 
Sélectionnez

Dim i, j as Integer

For i=1 to 9

 For j=1 To 9

MsgBox (i*j.ToString)

 Next i

Next j

Réponse: erreur sur les variables dans les 2 Next: si le premier For utilise la variable de boucle i, c'est le dernier Next qui doit indiquer la variable i: La boucle interne doit tourner DANS la boucle externe; le bon code est:

 
Sélectionnez

Dim i, j as Integer

For i=1 to 9

 For j=1 To 9

MsgBox (i*j.ToString)

 Next j

Next i

5.5 Demander par une InputBox à l'utilisateur de taper un chiffre entre 1 et 12, vérifier que ce chiffre est bien compris entre 1 et 12 ; si ce n'est pas le cas, reposer la question (utiliser une boucle Do.. loop pour boucler en cas de mauvaise réponse.):

 
Sélectionnez

Dim rep As String

Dim r As Integer

Do

    rep=InputBox ("Tapez un chiffre entre 1 et 12") 

      r= CType(rep,Integer)

 

Loop Until r>0 And r<13

 

Si l'utilisateur tape sur 'Annuler' dans la InputBox cela retourne une chaîne vide et cela plante. Comment gérer cela?

 
Sélectionnez

Dim rep As String

Dim r As Integer

Do

    rep=InputBox ("Tapez un chiffre entre 1 et 12") 

     If rep = "" Then Exit Do 

     r= CType(rep,Integer)

 

Loop Until r>0 And r<13

Exit Do permet de sortir de la boucle Do Loop.

5.6 Faire une boucle avec Do Loop, tournant de 1 à 100 et additionnant à une variable 'somme'à chaque tour la variable de boucle.

 
Sélectionnez

Dim i As Integer = 0

Dim somme As Integer

Do

 i=i+1

 Somme = somme + i 

Loop Until i = 100 ' sort de la boucle quand i=100

MsgBox(somme.ToString)

VII-E-6. Exercice sur les structures et tableaux

Questions :

6.1 Créer une Structure 'dvd' contenant un 'Numero'(un Integer ), un 'Titre'(une String), un 'Auteur' (une String). Déclarer un tableau structuré de 10 dvd. Indiquer que le dernier dvd doit avoir comme nom 'Red House" et comme auteur "Clapton". Afficher dans une MessageBox le titre du premier dvd. Rechercher, à l'aide d'une boucle, les dvd dont l'auteur est "Clapton" et afficher dans une MessageBox leurs titres.

6.2 Déclarer un tableau t de 100 Integer. Le remplir avec un nombre aléatoire compris entre 1 et 100, le trier par ordre croissant.

Pour visualiser les éléments du tableau trié, demander à l'utilisateur dans une InputBox un numéro d'élément puis afficher dans une MessageBox la valeur de l'élément. Créer une boucle pour redemander sans cesse un numéro d'élément. Arrêter si l'utilisateur clique sur 'Annuler' dans la InputBox.

Réponses:

6.1 Créer une Structure dvd contenant un Numero (un Integer ), un Titre(une String), un Auteur (une String). Déclarer un tableau structuré de 10 dvd. Indiquer que le dernier dvd doit avoir comme nom 'Red House" et comme auteur "Clapton". Afficher dans une MessageBox le titre du premier dvd. Rechercher, à l'aide d'une boucle, les dvd dont l'auteur est "Clapton" et afficher dans une MessageBox leurs titres.

Il faut déclarer la structure mais en haut du module, sous Public Class Form1, pas dans la procédure.

 
Sélectionnez

Public Class Form1

Public Structure dvd

   Dim Numero     As Integer

   Dim Titre        As String

   Dim Auteur       As String

End Structure

Puis dans une procédure il faut déclarer le tableau:

 
Sélectionnez

Private Button1_Click (..)

Dim i As Integer  'variable de boucle

Dim MesDvd(10) As dvd 'déclaration du tableau.

MesDvd(9).Titre ="Red House" 

MesDvd(9).Auteur= "Clapton" 

End Sub

MsgBox (MesDvd(0).Titre) 

For i=0 to 9

   If MesDvd(i).Auteur= "Clapton" Then

        MsgBox (MesDvd(i).Titre))

   Next i

End Class

On remarque que le tableau de 10 éléments va de MesDvd(0) à MesDvd(9).

Au lieu d'écrire For i=0 to 9 on aurait pu écrire For i=0 to MesDvd.Length-1

(MesDvd.Length étant le nombre d'éléments dans MesDvd, MesDvd.Length-1 est l'index du dernier élément)

6.2 Déclarer un tableau t de 100 Integer. Le remplir avec un nombre aléatoire compris entre 1 et 100, le trier par ordre croissant. Pour visualiser les éléments du tableau trié, demander à l'utilisateur dans une InputBox un numéro d'élément puis afficher dans une MessageBox la valeur de l'élément. Créer une boucle pour redemander sans cesse un numéro d'élément. Arrêter si l'utilisateur clique sur 'Annuler' dans la InputBox.

 
Sélectionnez

Dim t(100) As Integer

Dim i, r As Integer

Dim rep As String

Randomize()

For i = 0 To t.Length - 1

t(i) = CType((Int(Rnd() * 100)) + 1, Integer)

Next i

Array.Sort(t)

Do

  rep = InputBox("Voir &#8218;l'élément numéro?")

  If rep = "" Then Exit Do

  r = CType(rep, Integer)

  MsgBox(t(r).ToString)

Loop

VII-E-7. Exercice sur les collections

Questions :

Si Vb n'accepte pas de créer une collection c'est que l'espace de nom correspondant n'est pas importé. Il faut écrire tout en haut du module (au dessus de Public Class) Imports System.Collections.

7.1 Créer une collection de type ListArray nommée 'L', ajouter "Dupont", "Durand", "Dubout" à la collection. Afficher dans une MessageBox le premier élément de la collection puis le dernier. Enlever le second. Si la collection contient "Dubout", ajouter "Toto" à la position où est "Dubout". Créer une boucle qui affiche tous les éléments de la liste.

7.2 Créer une collection nommée 'lst' de génériques List(Of) et contenant des entiers Long. , ajouter 12, 24, 32. Afficher dans une MessageBox le troisième élément. Créer une boucle pour afficher dans une MessageBox successivement tous les éléments de la liste.

Réponses:

7.1 Créer une collection de type ListArray nommée 'L', ajouter "Dupont", "Durand", "Dubout" à la collection. Afficher dans une MessageBox le premier élément de la collection puis le dernier. Enlever le second. Si la collection contient "Dubout", ajouter "Toto" à la position où est "Dubout". Créer une boucle qui affiche tous les éléments de la liste.

 
Sélectionnez

Dim L As New ArrayList()           'On crée une collection ArrayList

L.Add("Dupont")                    'On ajoute un élément à la collection

L.Add("Dubout")                    'On ajoute un élément à la collection

L.Add("Durand")                    'On ajoute un élément à la collection

MsgBox(L(0))                       'On affiche le premier élément

MsgBox(L(L.Count-1))               'On affiche le dernier élément 

'S'il y a 3 éléments dans la ArrayList ce sont les éléments d'index 0,1,2.

L.RemoveAt(1)                      'On enlève l'élément d'index 1 de la liste

If L.Contains ("Dubout") Then    

        L.Insert( L.IndexOf("Dubout"), "Toto")

End If

       

 

Dim Element As Object

For Each Element in L

    MsgBox( Element )

Next

Bien se souvenir qu'une ListArray contient des Objets.

Attention Element étant un objet, si je veux l'afficher par exemple, il faut le 'caster' en String:

Comme on est en option Strict, il ne faut pas écrire L(0).Item mais L(0)

7.2 Créer une collection nommée 'lst' de génériques List(Of) et contenant des entiers Long. , ajouter 12, 24, 32. Afficher dans une MessageBox le troisième élément. Créer une boucle pour afficher dans une MessageBox successivement tous les éléments de la liste.

 
Sélectionnez

Dim lst As New List(Of Long) 

lst.Add 12

lst.Add 24

lst.Add 32

MsgBox (lst(2))  'affiche 32

For Each l As Long In lst

MsgBox(l)

Next

VII-E-8. Exercices sur les fonctions et paramètres

Questions :

8.1 Quand employer une 'Function' plutôt qu'une Sub?

8.2 Créer le squelette d'une Sub nommée 'Calcul' recevant 2 paramètres: Une String et un Integer (nommés dans la Sub 'Nom' et 'Id'), paramètres passés 'Par Valeur'.

Comment utiliser cette Sub dans une autre Sub. Expliquer ce qu'est un paramètre par valeur?

8.3 Créer une Function nommée 'IsPaire' recevant 1 paramètre Integer (nommé dans la Sub 'Nombre'), paramètre passé 'Par Valeur' et retournant un Boolean qui a la valeur True si nombre est pair. Écrire une procédure appelant cette fonction et afficher dans une MessageBox "Le nombre est pair" ou "Le nombre est impair" suivant le cas.

Réponses:

8.1 Quand employer une 'Function' plutôt qu'une Sub?

Quand une procédure doit retourner une seule valeur.

8.2 Créer le squelette d'une Sub nommée 'Calcul' recevant 2 paramètres: Une String et un Entier (nommés dans la Sub 'Nom' et 'Id'), paramètres passés 'Par Valeur'.

 
Sélectionnez

Sub Calcul (ByVal Nom As String, ByVal Id As Integer)

End Sub  

Comment utiliser cette Sub dans une autre Sub.

 
Sélectionnez

Calcul ("Titi",2)

ou

 
Sélectionnez

Dim n As String= "Titi"

Dim i As Integer=2

Calcul (n,i)

Expliquer ce qu'est un paramètre par valeur (ByVal)?

C'est la valeur qui est envoyée et non la référence(l'adresse en mémoire).

Dans l'exemple ci dessus c'est "titi" qui est envoyé en premier paramètre et pas l'adresse de "titi". Si dans la Sub je fais Nom="Toto", dans la procédure appelante, n sera toujours égal à "Titi". Si on avait passé Nom en 'ByRef' n aurait été modifié.

8.3 Créer une Function nommée 'IsPaire' recevant 1 paramètre Integer (nommé dans la Sub 'Nombre), paramètre passé 'Par Valeur' et retournant un Boolean qui a la valeur True si nombre est pair.

 
Sélectionnez

Function IsPaire(ByVal Nombre As Integer) As Boolean

If Nombre Mod (2) = 0 Then

   Return True

Else

   Return False

End If

End Function

Écrire une procédure appelant cette fonction en donnant un nombre et afficher dans une MessageBox "Le nombre est pair" ou "Le nombre est impair" suivant le cas.

 
Sélectionnez

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

If IsPaire(4) Then

  MsgBox("le nombre est pair")

Else

  MsgBox("le nombre est impair")

End If

End Sub

précédentsommairesuivant

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

  

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © . Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.