|
Site |
Cours VB.net |
|
|
|
Contrôle
des connaissances.
Boucles |
|
|
Questions:
5- Boucles.
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 <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- Boucle.
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) '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 <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 '
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:
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
Doi=i+1
Somme = somme + i Loop Until i = 100 ' sort de la boucle quand i=100MsgBox(somme.ToString)
|
|
|
|
|