Cours VB.NETDate de mise à jour : 05/12/2010
VII-E. Contrôle des connaissances
VII-E-1. Exercices sur les variables
VII-E-2. Exercices sur les Strings et Char
VII-E-3. Exercices sur les nombres
VII-E-4. Exercices nombres-String
VII-E-5. Exercices sur les boucles
VII-E-6. Exercice sur les structures et tableaux
VII-E-7. Exercice sur les collections
VII-E-8. Exercices sur les fonctions et paramètres
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.
Mettre votre code(la réponse aux questions) dans cette procédure, entre:
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.
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.
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.
Dim myNumber As Integer = 12
|
On aurait pu aussi écrire:
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"
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.
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
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.
Dim ch As Char
ch = " 2 " c
Console. WriteLine (Char. IsDigit (ch))
Console. WriteLine (Char. IsLetter (ch))
|
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'.
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).
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?
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 :
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).
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).
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'.
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).
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:
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.
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).
Dim i as Integer
Dim sfin As String
Dim fin As Integer
sfin= InputBox (" Donner un nombre entier " )
fin= CInt (sFin)
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.
Dim Counter As Integer = 0
While Counter* Counter < 1000
label1. Text = Counter. ToString
Counter + = 1
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:
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:
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.):
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?
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.
Dim i As Integer = 0
Dim somme As Integer
Do
i= i+ 1
Somme = somme + i
Loop Until 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.
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:
Private Button1_Click (. . )
Dim i As Integer
Dim MesDvd (10) As dvd
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.
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 ‚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.
Dim L As New ArrayList ()
L. Add (" Dupont " )
L. Add (" Dubout " )
L. Add (" Durand " )
MsgBox (L (0))
MsgBox (L (L. Count - 1))
L. RemoveAt (1)
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.
Dim lst As New List (Of Long)
lst. Add 12
lst. Add 24
lst. Add 32
MsgBox (lst (2))
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'.
Sub Calcul (ByVal Nom As String , ByVal Id As Integer)
End Sub
|
Comment utiliser cette Sub dans une autre Sub.
ou
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.
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.
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
|
Les sources présentés sur cette page sont libres de droits,
et vous pouvez les utiliser à votre convenance. Par contre cette page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. 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'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
Cette page est déposée à la SACD.
|