De nos jours, l’informatique touche presque tous les domaines de la vie. Qu’on soit étudiant, professeur, juriste, médecin, politicien etc., il est difficile de vivre sans utiliser directement ou indirectement un produit de l’informatique.
L’élément central de l’informatique est l’ordinateur.
Mais l’ordinateur n’est pas intelligent comme vous et moi, il ne sait rien faire de lui-même, à tout moment il ne fait qu’obéir aux ordres. Pour effectuer une tâche quelconque, l’ordinateur suit une suite d’instructions qu’on appelle programmation informatique.
Pour donner des ordres à l’ordinateur, soit pour écrire des programmes informatiques, on utilise ce qu’on appelle un langage de programmation. Actuellement, il existe plusieurs langages de programmation, nous pouvons citer : Python, Java, Visual basic, C#, Pascal, PHP, JavaScript, Ada etc.
Nous vous proposons 40 exercices résolus en Visual basic, certaines questions sont accompagnées d’une analyse avant la résolution.
On fait la programmation pour trouver des solutions à des problèmes donnés, et un problème peut avoir plusieurs solutions, de même, les solutions proposées ici ne sont pas uniques ni les meilleures. Toute suggestion, remarque ou critique sera bien reçue et prise en considération.
Bonne lecture.
Ecrire un programme en Visual basic mode console qui demande un nombre à l’utilisateur, puis l’informe si ce nombre est entier ou décimal.
On va utiliser une structure conditionnelle car tout nombre n’est pas entier, il y a une ou des conditions pour un être entier. Et comment trouver cette condition ? On sait qu’un nombre est entier s’il n’a pas de partie décimale, c’est-à-dire si la partie décimale vaut zéro. Donc la condition est que la partie décimale donne zéro. Mais comment récupérer la partie décimale d’un nombre ?
En parcourant les fonctions mathématiques de Visual basic, il n’y a pas de fonctions permettant de récupérer la partie décimale d’un nombre et pourtant il y a la fonction Fix qui renvoie plutôt la partie entière d’un nombre. Que faire ???
Supposons que le nombre saisi par l’utilisateur est a, on peut récupérer la partie entière de a dans la variable b et si on fait la différence entre a et b, on trouve la partie décimale de a : voilà une solution.
Module Module1
Sub Main()
Dim n, deci As Single
Dim entier As Integer
Console.WriteLine("Entrez un nombre")
n = Val(Console.ReadLine())
'on récupère la partie entière
entier = Fix(n)
'on trouve la partie décimale
deci = n - entier
'test
If deci = 0 Then
Console.WriteLine("Le nombre " & n & "est un entier")
Else
Console.WriteLine("Le nombre " & n & "est un nombre décimal")
End If
Console.ReadLine()
End Sub
End Module
Le calcul de salaire net (sn) des agents d’une entreprise est constitué des rubriques suivantes : salaire de base (sb) et prime enfant (pe).
Le salaire de base est déterminé à partir du grade suivant le tableau :
Grade | Salaire de base (en $US) |
---|---|
D | 2700 |
SD | 2400 |
CS | 2100 |
CB | 1750 |
ATB2 | 1500 |
ATB1 | 1350 |
La prime enfant qui est calculée en fonction du nombre d’enfants en vie (nef), de la manière suivante : du 1er au 5e enfant chacun génère une prime fixe de 50$US, à partir du 6e enfant, la prime devient de 35$US par enfant et enfin pas de prime à partir du 11e enfant.
Ecrire un programme en Visual basic en mode console qui calcule le salaire net à payer à un agent donné et disposant d’un nombre donné d’enfants.
Pour résoudre ce problème, l’utilisateur doit nous fournir le grade (grade) ainsi que le nombre d’enfants en vie (nef).
On voit clairement que le salaire de base dépend du grade de l’agent, ainsi donc on va utiliser des structures conditionnelles pour savoir s’il s’agit de quel grade enfin de lui attribuer le salaire de base. Et pour la prime enfant, on va utiliser des conditions sur le nombre d’enfants.
Module Module1
Sub Main()
Dim sn, sb, nef, pe As Integer
Dim grade As String
Console.WriteLine("Entrez le grade de l'agent")
5: grade = Console.ReadLine()
Console.WriteLine("Entrez le nombre d'enfant")
10: nef = Val(Console.Read())
'détermination du salaire de base
If UCase(grade) = "D" Then
sb = 2700
ElseIf UCase(grade) = "SD" Then
sb = 2400
ElseIf UCase(grade) = "CS" Then
sb = 2100
ElseIf UCase(grade) = "CB" Then
sb = 1750
ElseIf UCase(grade) = "ATB2" Then
sb = 1500
ElseIf UCase(grade) = "ATB1" Then
sb = 1350
Else
Console.WriteLine("Grade non reconnu, veuillez recommencer")
GoTo 5
End If
'détermination de la prime enfant
If nef >= 1 And nef <= 5 Then
pe = nef * 50
ElseIf nef >= 6 And nef <= 10 Then
pe = 5 * 50 + (nef - 5) * 35
ElseIf nef >= 11 Then
pe = 5 * 50 + 5 * 35
Else
Console.WriteLine("Nombre erroné d'enfants, veuillez recommencer")
GoTo 10
End If
sn = sb + pe
Console.WriteLine("Le salaire net vaut: " & sn & "$US")
Console.ReadLine()
End Sub
End Module
Un groupe scolaire de la place organise le payement de ses frais par enfant de la manière suivante :
Catégorie | Frais scolaires | Frais de l'Etat |
---|---|---|
Autres | 80.000 | 5.000 |
Agent GS | * | 5.000 |
* Pour la catégorie « Agent GS », le parent payera la moitié des frais scolaires pour chacun de ses trois enfants, le 3/4 des frais scolaires pour le 4e et le 5e enfant et la totalité des frais scolaires pour chaque enfant à partir du 6e.
Ecrire un programme en Visual basic en mode console qui calcule les frais à payer pour un parent d’une catégorie quelconque qui a un nombre donné d’enfants.
Pour résoudre ce problème, l’utilisateur doit fournir deux informations : la catégorie du parent ainsi que le nombre d’enfants. Les frais scolaires dépendent de la catégorie du parent et du nombre d’enfants, dans ce cas c’est important d’utiliser une structure conditionnelle.
Module Module1
Sub Main()
Dim categorie As String
Dim nef, fraisEtat, fraisScolaire, total As Integer
Console.WriteLine("Entrez la catéforie du parent")
1: categorie = Console.ReadLine()
Console.WriteLine("Entrez le nombre d'enfants")
2: nef = Val(Console.ReadLine())
If UCase(categorie) = "AUTRES" Then
If nef <= 0 Then
Console.WriteLine("Le nombre d'enfants est incorrect, recommencez")
GoTo 2
End If
fraisScolaire = nef * 80000
ElseIf UCase(categorie) = "AGENT GS" Then
Select Case nef
Case 1 To 3
fraisScolaire = nef * 40000
Case 4 To 5
fraisScolaire = 3 * 40000 + (nef - 3) * 60000
Case Is > 5
fraisScolaire = 3 * 40000 + 2 * 60000 + (nef - 5) * 80000
Case Else
Console.WriteLine("Nombre d'enfants incorrect, recommencez")
GoTo 2
End Select
Else
Console.WriteLine("Catégorie incorrecte, recommencez")
GoTo 1
End If
fraisEtat = nef * 5000
total = fraisEtat + fraisScolaire
Console.WriteLine("Les frais scolaires à payer: " & fraisScolaire)
Console.WriteLine("Les frais de l'Etat: " & fraisEtat)
Console.WriteLine("Le total :" & total)
Console.ReadLine()
End Sub
End Module
Ecrire un programme en Visual basic mode console qui demande un nombre à l’utilisateur pis détermine si ce nombre est pair ou impair.
Pour ce problème, l’utilisateur doit entrer un nombre, et notre programme doit déterminer si c’est un nombre pair ou impair ; on sait qu’un nombre pair c’est un nombre qui est divisible par deux, et un nombre est divisible par deux lorsque le reste de la division de ce nombre par deux donne 0.
Module Module1
Sub Main()
Dim n As Integer
Console.WriteLine("Entrez un nombre entier")
n = Val(Console.ReadLine())
If n Mod 2 = 0 Then
Console.WriteLine("Le nombre " & n & "est pair")
Else
Console.WriteLine("Le nombre " & n & "est impaire")
End If
Console.ReadLine()
End Sub
End Module
Deux nombres entiers n et m sont qualifiés d’amis, si la somme des diviseurs de n est égale à m et la somme de diviseurs de m est égale à n (on ne compte pas le nombre lui-même et 1).
Exemple : les nombres 48 et 75 sont deux nombres amis puisque
Les diviseurs de 48 sont 2, 3, 4, 6, 8, 12, 16,24 et
2+3+4+6+8+12+16+24=75
Les diviseurs de 75 sont 3, 5, 15,25 et 3+5+15+25=48
Ecrire un programme en Visual basic en mode console qui permet de déterminer si deux entiers n et m sont amis ou non.
Premièrement on doit chercher les diviseurs de n et m, et nous savons qu’un entier i est diviseur de n ssi le reste de la division de n par i égale 0, c’est-à-dire ssi n Mod i=0.
Autre chose, les diviseurs d’un nombre ne peuvent pas dépasser ce nombre, c’est-à-dire les diviseurs d’un nombre sont toujours inférieurs ou égaux à ce nombre. Ainsi on peut parcourir les entiers allant de 1 à ce nombre qui vérifient la condition c’est-à-dire qui sont diviseurs….
Module Module1
Sub Main()
Dim n, m, i, somme_n, somme_m As Integer
Console.WriteLine("Entrez le premier nombre")
n = CInt(Console.ReadLine())
Console.WriteLine("Entrez le deuxième nombre")
m = CInt(Console.Read())
'recherche et sommation des diviseurs de m
somme_m = 0
For i = 2 To m - 1
If m Mod i = 0 Then
somme_m += i
End If
Next
'recherche et sommation des diviseurs de n
somme_n = 0
For i = 2 To n - 1
If n Mod i = 0 Then
somme_n += i
End If
Next
'test
If somme_m = n And somme_n = m Then
Console.WriteLine("Les deux nombres sont amis")
Else
Console.WriteLine("Les deux nombres ne sont pas amis")
End If
Console.ReadLine()
End Sub
End Module
Ecrire un programme en Visual basic mode console qui lit un nombre quelconque de valeurs entières en déterminant la somme des valeurs positives et la somme des valeurs négatives. Avec comme hypothèse qu’aucune de ces valeurs ne peut être nulle et que l’utilisateur introduira la valeur 0 pour signaler qu’il n’a plus de valeurs à fournir. Adapter le programme de manière qu’il fournisse la moyenne des valeurs négatives et la moyenne des valeurs positives (Nota : tenir compte de la protection contre le risque de division par zéro).
Selon l’énoncé, la saisie des valeurs va s’arrêter si l’utilisateur saisit zéro, et comme nous ne connaissons pas le nombre de valeurs non nulles que l’utilisateur saisira, on peut utiliser la boucle While ou Until.
A chaque fois que l’utilisateur saisit une valeur, on vérifie si elle est positive ou négative, puis on l’ajoute à la somme des valeurs positives ou négatives selon le cas et incrémenter les variables chargées de compter le nombre des valeurs positives et négatives….
Module Module1
Sub Main()
Dim n, somme_pos, somme_neg, taille_pos, taille_neg As Integer
Dim moyenne_pos, moyenne_neg As Single
somme_neg = 0
somme_pos = 0
taille_neg = 0
taille_pos = 0
Do
Console.WriteLine("Entrez une valeur")
n = CInt(Console.ReadLine())
If n > 0 Then
somme_pos += n
taille_pos += 1
ElseIf n < 0 Then
somme_neg += n
taille_neg += 1
End If
Loop Until n = 0
'calcul de la moyenne des valeurs positives
If taille_pos = 0 Then
moyenne_pos = 0
Else
moyenne_pos = somme_pos / taille_pos
End If
'calcul de la moyenne des valeurs negatives
If taille_neg = 0 Then
moyenne_neg = 0
Else
moyenne_neg = somme_neg / taille_neg
End If
'Affichage du resultat
Console.WriteLine("La somme des valeurs positives vaut : " & somme_pos)
Console.WriteLine("La moyenne des valeurs positives vaut: " & moyenne_pos)
Console.WriteLine("La somme des valeurs negatives vaut : " & somme_neg)
Console.WriteLine("La moyenne des valeurs negatives vaut: " & moyenne_neg)
Console.ReadLine()
End Sub
End Module