Auteur Auteur

EXERCICES RESOLUS EN VISUAL BASIC

EXERCICES RESOLUS EN VISUAL BASIC

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.

EXERCICE 1

EXERCICE 1

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.

Analyse et solution

Analyse et solution

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


EXERCICE 2

EXERCICE 2

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.

Analyse et solution

Analyse et solution

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


EXERCICE 3

EXERCICE 3

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.

Analyse et solution

Analyse et solution

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


EXERCICE 4

EXERCICE 4

Ecrire un programme en Visual basic mode console qui demande un nombre à l’utilisateur pis détermine si ce nombre est pair ou impair.

Analyse et solution

Analyse et solution

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

EXERCICE 5

EXERCICE 5

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.

Analyse et solution

Analyse et solution

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


EXERCICE 6

EXERCICE 6

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).

Analyse et solution

Analyse et solution

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


pdf Retrouvez ce cours en version pdf
Télécharger
COURS D'INFORMATIQUE
EXERCICES SUIVANTS