Vous êtes sur la page 1sur 29

1

Université de Bretagne Occidentale - UFR Sciences - Département d’Informatique


Licence 1ère année (S1), Portail MPI
Introduction à l’Informatique

Sujets de Travaux Dirigés et de Travaux Pratiques


Pascal Ballet, Sophie Gire, Philippe Le Parc

Rappel de la syntaxe : algorithmique et langage Visual Basic page 2

TD 1 et 2 – Variables, séquences et conditionnelles simples page 3


TD 3 et 4 – Itérations (boucle Pour) et tableaux page 6
TD 5 et 6 – Itérations (boucle Tant que), tableaux et chaines de caractères page 8

TP 1 – Introduction à Visual Basic page 13


TP 2 – variables, séquences et conditionnelles simples page 23
TP 3 et 4 – Itérations (boucle Pour) et tableaux page 25
TP 5 – Itérations (boucle Tant que), tableaux et chaines de caractères page 27

Retrouver ce document, et d’autres informations sur cet enseignement sur Moodle.

Les exercices de TD suivis par une étoile (*) sont considérés comme des exercices de base, dont la
compréhension est nécessaire.
2

Structures Langage algorithmique (français) Langage Visual Basic


Si condition alors If condition then
Traitement Traitement
FinSi End if
Si condition alors If condition then
Traitement 1 Traitement 1
Sinon Else
Traitement 2 Traitement 2
FinSi End if
If condition 1 then
Cas Traitement 1
Condition 1→ traitement 1 Elseif condition2 then
Condition 2→ traitement 2 Traitement 2
Conditionnelles … …
Autre → traitement n Else
Fincas Traitement n
End if

Select Case x
Case ‘a’
Cas
Traitement 1
x = ‘a’ → traitement 1
Case ‘c’
x = ‘c’ → traitement 2
Traitement 2


autre → traitement n
Case Else
Fincas
Traitement n
End Select
Pour x de 0 à 9 For x=0 to 9
Traitement Traitement
FinPour Next x
Tant que condition faire While condition
Itératives Traitement Traitement
FinTantQue End While
Do
Répéter
Traitement
Traitement
Loop until condition
Jusqu’à condition

Afficher (« Bonjour ») MsgBox (« Bonjour »)


Afficher (x) MsgBox x
Afficher (« La valeur de x est : », x) MsgBox (« La valeur de x est : » & x)
Interactives
x = InputBox (« Quelle valeur pour x ? »)
Afficher « Quelle valeur pour x ? »
x = NumericUpdownX.Value
x ← lire()
x = LabelX.Text
x ← 10 x = 10
Affectation
x ← (a + b) . c / 102 x = (a + b) * c / 10^2
Commentaires // Ceci est un commentaire ‘ Ceci est un commentaire
3

Université de Bretagne Occidentale - UFR Sciences - Département d’Informatique


Licence 1ère année (S1), Portail MPI
Introduction à l’Informatique

TD n°1 et 2
Variables, séquences et conditionnelles simples

A l’issue de ce TD, vous serez capable de déclarer des variables simples et de construire des
programmes séquentiels contenant des conditionnelles de type si … alors … sinon.

Exercice 1 *

1. Soit l’algorithme suivant :

Variable
X : entier
Y : entier
Z : entier
Debut
X  10
Y  0
Z  0
X  X * X
Y  4 * X - X
Z  Y / 3
Z  Y - Z
Z  Z + X - Y
X  (Y - X) * Z
Y  (X + Z) * Y
Afficher (X, Y, Z)
Fin

Exécuter cet algorithme « à la main » et donner pour chaque ligne les valeurs des
variables X, Y et Z.

2. Traduire cet algorithme en un programme Visual Basic. Pour l’affichage, on utilisera


l’instruction MsgBox(....).

Exercice 2

1. Ecrire un algorithme qui lit 3 températures en degrés Fahrenheit, puis affiche leurs
valeurs et leur moyenne en degrés Celsius, suivant la relation :
celsius = (fahrenheit – 32) * 5 / 9

2. Dérouler cet algorithme pour les températures Fahrenheit suivantes : 68 ; 77 ; 113.

Exercice 3 *

C’est la période des soldes !

1. On suppose qu’un client profite des soldes pour acheter un article en plusieurs
exemplaires. Ecrire un algorithme qui lit le prix de l’article non soldé, le pourcentage
de réduction et le nombre d’articles, puis affiche le prix total correspondant.
4

2. Dessiner une interface graphique permettant la saisie des 3 valeurs (prix, réduction,
nombre) et l’affichage du résultat. On pourra utiliser par exemple des boites de
dialogue pour l’acquisition (i.e. InputBox(…)) et l’affichage (i.e. MsgBox(…)), ou des
champs texte (TextBox.text = …).

3. Traduire l’algorithme écrit en 1, en Visual Basic en tenant compte de l’interface


décrite en 2.

Exercice 4 *

Ecrire un algorithme qui permet de dessiner la figure ci-dessous (Remarque : le dessin


ci-dessous n’est pas à l’échelle).
100 x
(0,0)

100

On supposera que le point de départ à pour origine (100,100), que le premier segment
à une longueur de 140, le deuxième de 120 etc… Pour tracer les segments on utilisera la
fonction : DessineLigne(X_depart, Y_depart, X_arrivee, Y_arrive)

Exercice 5 *

1. Ecrire un algorithme qui lit et inverse le contenu de deux variables A et B, en utilisant


une variable supplémentaire, puis affiche les valeurs de A et B.

2. Ecrire un algorithme qui lit et inverse le contenu de deux variables numériques A et B,


sans utiliser une troisième variable, puis affiche les valeurs de A et B.

Exercice 6 (conditionnelle) *

1. Ecrire un algorithme qui lit deux nombres puis qui affiche « … est plus grand que
… ».

2. Ecrire un algorithme permettant de trouver le minimum de trois nombres (que l’on


supposera être des entiers.
5

Exercice 7 (conditionnelle) *

1. Ecrire un algorithme qui lit une valeur réelle représentant une température d’eau et qui
répond « glace » si la température est inférieure à 0, « liquide » si la température est
entre 0 et 100 et « vapeur » sinon.

2. Ecrire un algorithme qui demande deux nombres A et B à l’utilisateur et, sans calculer
le produit A * B, affiche si le produit est positif, négatif, ou nul.

3. Ecrire un algorithme qui lit trois nombres a, b et c et qui affiche les racines du
polynôme ax2 + bx + c, si le discriminant (∆) est supérieur ou égal à zéro.

Exercice 8 *

A partir des coordonnées de trois points ((Ax, Ay), (Bx, By), (Cx, Cy)), construire un
algorithme permettant de déterminer si le triangle construit est isocèle en (Ax, Ay),
équilatéral, rectangle en (Ax, Ay).

Exercice 9

Construire algorithme qui permet d’additionner deux mesures de temps. Par exemple,
7h23min + 3h16min = 10h39min.

On demandera à l’utilisateur la première mesure (nombre d’heures et nombre de minutes),


puis la deuxième mesure (nombre d’heures et nombre de minutes) et on produira le résultat en
jours, heures et minutes.. On supposera que l’utilisateur donne correctement les valeurs des
heures (comprises entre 0 et 23) et des minutes (comprises entre 0 et 59).

Exercice 10

Sur un bateau de plaisance, le choix du mode de propulsion se fait en fonction de la force du


vent et de sa direction par rapport à la route choisie. Le tableau ci-dessous est un extrait d’une
table permettant de choisir les voiles ou le moteur en fonction de ces deux informations.

Direction comprise Direction comprise Direction comprise


entre 0 et 45° entre 45 et 130° entre 130 et 180°
Force du vent = 0 Moteur Moteur Moteur
Force du vent = 1 Moteur Moteur Moteur
Force du vent = 2 Moteur Grand Voile + Génois Grand Voile + Spi
Force du vent = 3 Moteur Grand Voile + Génois Grand Voile + Spi
Force du vent = 4 Moteur Grand Voile + Génois Grand Voile + Spi
Force du vent = 5 Moteur Grand Voile + Génois Grand Voile + Génois

Construire un algorithme qui permet de décider du choix des voiles ou du moteur en fonction
de la force du vent et de la direction du vent par rapport à la route. Exemple d’utilisation :

Force du vent ?  Question à l’utilisateur


3  Réponse de l’utilisateur
Direction du vent par rapport à la route ?  Question à l’utilisateur
75  Réponse de l’utilisateur
Vous devez utiliser : Grand Voile + Génois.  Affichage du résultat
6

Université de Bretagne Occidentale - UFR Sciences - Département d’Informatique


Licence 1ère année (S1), Portail MPI
Introduction à l’Informatique

TD n°3, 4
Itérations (boucle Pour) et tableaux

L’objectif de ce TD est de mettre en pratique vos connaissances sur les itérations et de travailler sur les
tableaux de données.

Exercice 1 * – boucle Pour

1. Ecrire un algorithme MoyenneNotes qui demande et lit le nombre N de notes à entrer, puis qui
demande et lit les N notes, une par une, pour afficher leur moyenne.

2. Dérouler cet algorithme sur un exemple de 5 notes.

Exercice 2 * – boucle Pour et tableaux

1. Ecrire un algorithme NbrOccur qui lit le nombre N d’éléments d’un tableau T, les éléments de T et
également un élément x, puis retourne le nombre d’occurrences de l’élément x dans T.
Dérouler NbrOccur pour N = 7, T = {53,6 ; 29 ; 6 ; 3,14 ; 29 ; 10,5 ; 29} et x = 29, puis x = 56.

2. Ecrire un algorithme Présence qui lit le nombre N d’éléments d’un tableau T, les éléments de T et
également un élément x, puis retourne une position de x dans T si x y est présent, sinon il affiche le
message "x n’est pas présent dans T".
Dérouler Présence pour N = 7, T = {53,6 ; 29; 6 ; 3,14 ; 29 ; 10,5 ; 29} et x = 29, puis x = 56.

Exercice 3 * – boucle Pour et tableaux

1. Ecrire un algorithme PosMinTab qui lit un entier N et les N nombres d’un tableau T et affiche le plus
petit élément de T et sa position dans T.
Dérouler cet algorithme pour N = 7 et T = {53,6 ; 29 ; 56,7 ; 6 ; 3,14 ; 78 ; 10,5}.

2. Ecrire un algorithme similaire pour un tableau à deux dimensions (matrice NxM).

Exercice 4 * – boucle Pour et tableaux

L’image miroir d’un tableau T = {e0 ; e1 ; … ; en-2 ; en-1} est le tableau ImT = {en-1 ; en-2 ; … ; e1 ; e0}.
1. Ecrire un algorithme ImageMiroir qui lit le nombre d’éléments et les éléments d’un tableau T et
construit dans un second tableau, noté ImT, l’image miroir de T.
Dérouler l’algorithme ImageMiroir pour N = 7 et T = {53,6 ; 29,2 ; 56,7 ; 3,14 ; 29 ; 10,5 ; 4}.

2. Ecrire un algorithme ImageMiroir2 qui lit le nombre d’éléments et les éléments d’un tableau T et
construit l’image miroir de T dans ce même tableau T.
Dérouler l’algorithme ImageMiroir2 pour les données de la question 1.

Exercice 5 – boucle Pour et tableaux

1. Ecrire un algorithme Fibonacci(n) qui calcule et affiche chacun des n+1 termes de la suite de
Fibonacci définie par : F0 = 0, F1 = 1 et Fn = Fn-1 + Fn-2 pour n > 1. On rangera chaque terme dans une
case d’un tableau.

2. Dérouler cet algorithme avec n = 6.


7

3. Modifier l’algorithme pour calculer les termes de la suite de Fibonacci, mais sans utiliser de tableau.

Exercice 6 * – tri de tableau

On souhaite construire un algorithme de tri de tableau par recopie : étant donné un tableau A de N
éléments entiers positifs, on cherche à remplir un tableau B contenant les éléments de A dans l’ordre
croissant.

L’algorithme devra comporter trois étapes principales : acquisition des valeurs de A, tri par recopie puis
affichage du tableau B. Pour la partie « tri par recopie », on cherchera la plus grande valeur dans le
tableau A que l’on rangera alors dans la dernière case du tableau B. On remplacera cette valeur dans le
tableau A par -1, et on cherchera alors la nouvelles plus grande valeur dans le tableau A que l’on rangera
alors dans l’avant dernière case du tableau B et ainsi de suite…
Initialisation : A = [12, 8, 45, 11] B = [?, ?, ?, ?]
Etape 1 : A = [12, 8, -1, 11] B = [?, ?, ?, 45]
Etape 2 : A = [-1, 8, -1, 11] B = [?, ?, 12, 45]

Exercice 7 * – boucle Pour

1. Dérouler l’algorithme suivant :


Var
i, j : entier
Début
Pour i = 0 jqa 1
Pour j = 0 jqa 1
ecrire(i,j)
Fpour
Fpour
Fin

2. En déduire un algorithme AfficheBinaire qui permet l’affichage des nombres binaires compris en 000
et 111 et leur valeur en base 10.
000 0
001 1
010 2
011 3
100 4
101 5

8

Université de Bretagne Occidentale - UFR Sciences - Département d’Informatique


Licence 1ère année (S1), Portail MPI
Introduction à l’Informatique

TD n°5 et 6
Itérations (boucle Tant que), tableaux et chaines

Exercice 1 * – boucle Tant que

1. Ecrire un algorithme Somme qui lit une suite d’entiers positifs et les additionne au fur et à mesure. Le calcul
se termine lorsqu’une valeur négative est saisie.

2. Ecrire, en utilisant une boucle Tant que un algorithme MoyenneNotes qui demande le nombre N de notes à
entrer, puis qui lit N et les N notes, une par une, pour afficher leur moyenne.

3. Modifier cet algorithme pour vérifier que chaque note saisie est bien comprise entre 0 et 20. Si la valeur
saisie est incorrecte, on demandera à l’utilisateur de ressaisir la note incorrecte.

Exercice 2 * – boucle Tant que

Ecrire un algorithme permettant de dessiner la figure ci-dessous. La longueur du premier segment sera
demandée à l’utilisateur. . Entre deux segments, la différence de longueur sera de 10 unités et les segments
seront espacés verticalement de 5 unités. On dessinera des segments, tant que les segments auront une longueur
supérieure à 10.

Exercice 3 * – boucle Tant que

On cherche à construire un algorithme permettant de rechercher une valeur V dans un tableau de


nombres réels à une dimension TAB[M], tableau que l’on supposera pré-rempli. On arrêtera la
recherche dès que l’on a trouvé la valeur V (si elle est présente bien sûr).

1. Proposer un algorithme en supposant que la valeur V est dans le tableau.


2. Proposer un algorithme en supposant que la valeur V est peut-être dans le tableau.

Exercice 4 – boucle Tant que

On cherche à construire un algorithme permettant de rechercher une valeur V dans un tableau de


nombres réels à deux dimensions TAB[M, N], tableau que l’on supposera pré-rempli. On arrêtera la
recherche dès que l’on a trouvé la valeur V (si elle est présente bien sûr).

1. Proposer un algorithme en supposant que la valeur V est dans le tableau.


2. Proposer un algorithme en supposant que la valeur V est peut-être dans le tableau.
9

Exercice 5 – boucle Tant que

Ecrire un algorithme permettant de dessiner la figure ci-dessous. L’utilisateur saisira la longueur du segment
initial ainsi que le pas (ici, le pas permet de déterminer la différence de longueur entre deux segments
consécutif. L’algorithme s’arrêtera lorsque la longueur du segment à dessiner sera inférieure au pas.

Exercice 6 * – manipulation des chaines de caractères

Pour cet exercice, on utilisera les fonctions longueur(ch) et sous-chaine(ch, debut, longueur).

• Construire un algorithme permettant de vérifier si la chaine « a » appartient à une chaine donnée ch.
• Les palindromes sont des mots ou des phrases qui peuvent se lire dans les deux sens, comme par
exemple « laval », « kayak », «Karine alla en Irak ». Construire deux algorithmes permettant de
vérifier :
o si un mot est ou non un palindrome.
o si une phrase est ou non un palindrome
• Construire un algorithme qui permet de calculer le nombre d’occurrences d’une chaine ch1 dans une
chaine ch2. Par exemple, la chaine ch1 = « tique » a deux occurrences dans la chaine «les travaux
pratiques d’informatique».

Exercice 7 *
Une manière simple pour représenter une image en informatique est d’utiliser un tableau à deux dimensions.
Chaque case du tableau représente alors un pixel et contient une valeur numérique. Cette valeur numérique
permet de coder la couleur du pixel.

Plusieurs techniques existent pour diminuer la taille d’une image. L’une d’entre elle remplace un groupe de 4
pixels proches par un seul pixel, dont la valeur est la moyenne des 4 pixels du groupe.
10

Exemple :

12 150 27 200 250 252 45 43


46 112 24 13 250 248 44 40 devient donc (résultat partiel)
12 10 100 45 12 110 100 45
24 14 250 248 0 127 127 0 80 66 250 43
24 13 250 248 65 53 59 60 15 … … …
100 45 12 110 32 50 100 45 … … 50 …
127 0 0 127 0 127 127 0 … … … …
59 60 66 13 66 13 59 60

On suppose que l’on possède une image de 1000x1000 pixels, codée dans un tableau INIT de 1000x1000 cases.
Proposer un algorithme permettant de réaliser une telle opération de compression vers un tableau COMP de
500x500 cases.

Exercice 8 – Carré magique

Un Carré Magique est un tableau de nombre dont la somme des valeurs d’une ligne, d’une colonne ou
d’une diagonale est identique. Par exemple, le carré ci-dessous est un Carré Magique. Vous pourrez
vérifier que la somme des éléments de chaque ligne et de chaque colonne vaut 175.

Pour cet exercice, on s’intéressera uniquement aux Carrés Magiques de 7x7 (7 lignes, 7 colonnes soit
49 cases) et on ne vérifiera pas les diagonales. Ces Carrés Magiques peuvent être facilement codés
dans un ordinateur à l’aide d’un tableau à 2 dimensions. Pour la suite, on supposera que l’on travaille à
partir d’un tableau préalablement rempli.

On cherche à construire un programme vérifiant si un carré donné est un Carré Magique ou non. On
procèdera en 5 phases.

• Phase 1 : Construire un programme qui permet de remplir un tableau à une dimension


(Som_Lig), de 7 cases, contenant la somme de chacune des lignes du Carré Magique.
• Phase 2 : Compléter ce programme pour remplir un deuxième tableau à une dimension
(Som_Col), de 7 cases, contenant la somme de chacune des colonnes du Carré Magique.
• Phase 3 : Compléter ce programme pour vérifier que tous les éléments du tableau Som_Lig
sont bien identiques.
• Phase 4 : Compléter ce programme pour vérifier que tous les éléments du tableau Som_Col
sont bien identiques.
• Phase 5 : Conclure si le carré est ou non magique.
11

Exercice 9 – Calcul de distances

On cherche à calculer des distances kilométriques pour aller d’une ville de départ à une ville d’arrivée,
en passant éventuellement par des villes étapes. Pour cela, on dispose de deux tableaux.

Le premier, VILLES, contient des noms de ville. La position d’une ville dans ce tableau nous donne
son numéro.

0 1 2 3 4 5 6
Brest Quimper Lorient St-Brieuc Carhaix Rennes Saint-
Malo

Par exemple, Brest a l’indice 0 et Rennes l’indice 5.

Le deuxième, DISTANCES, donne les distance entre les villes.

0 1 2 3 4 5 6
0 0 71 135 146 86 242 236
1 71 0 69 154 70 214 233
2 135 69 0 125 72 153 221
3 146 154 125 0 83 99 92
4 86 70 72 83 0 156 171
5 242 214 153 99 156 0 71
6 236 233 221 92 171 71 0

Pour connaitre la distance entre Brest et Rennes, il suffit de consulter la case DISTANCES[0,5], et
l’on trouve 242 km.

L’exercice comporte deux parties indépendantes.

Première partie (5 pts) :

On suppose que l’on dispose d’une fonction int indice_ville(chaine), qui permet de donner l’indice
d’une ville dans le tableau VILLES. Si la ville n’est pas référencée, la fonction retourne la valeur -1.
On suppose également que l’on dispose des deux tableaux VILLES et DISTANCES et que ceux-ci
sont remplis.

a) Construire un programme qui demande le nom de deux villes à un utilisateur, puis qui affiche
la distance entre ces deux villes. On supposera ici, que les villes existent bien dans le tableau
VILLES.
b) Construire un programme qui demande le nom de deux villes à un utilisateur, puis qui affiche
la distance entre ces deux villes. Si l’utilisateur saisie une ville qui n’est pas dans le tableau
VILLES, on lui reposera la question tant qu’il n’aura pas saisi une ville connue dans le tableau
VILLES.
c) Construire un programme qui demande à un utilisateur le nombre d’étapes de son voyage, puis
qui demande ensuite la ville de départ, la ville d’arrivée et les villes étapes une par une. Le
programme devra alors calculer la distance du voyage. On supposera ici que l’utilisateur saisit
bien des villes contenues dans le tableau VILLES.
Par exemple, si l’utilisateur saisit 2 étapes, Brest comme ville de départ, Rennes comme ville
d’arrivée et Lorient et Carhaix comme villes étapes, la distance totale est de : 135 + 72 + 156 =
363 km.
12

Deuxième partie (4 pts) :

On souhaite construire la fonction int indice_ville(chaine).


a) Proposer une solution avec une structure itérative pour.
b) Proposer une solution avec une structure itérative tant que.
c) Parmi ces deux solutions, laquelle est la plus efficace (justifiez) ?

Note : pour tester si deux chaines de caractères sont égales, on utilise l’opérateur =.
13

Université de Bretagne Occidentale - UFR Sciences - Département d’Informatique


Licence 1ère année (S1), Portail MPI
Introduction à l’Informatique

TP n°1
Introduction à Visual Basic
Programmes, interfaces graphiques, dessins

Partie 1. Découverte de Visual Basic .NET


1.1 Généralités
3B3B

Visual Basic est un langage de programmation qui permet le développement de programmes


de manière relativement simple. C’est un des langages de programmation (comme C++, C#,
J#) qui utilisent l'environnement Visual Studio. Ce que vous allez apprendre avec Visual
Basic s'appliquera donc également aux autres langages de Visual Studio.
Une version gratuite, Microsoft Visual Studio Community 2019, est disponible sur le site
http://visualstudio.com.

Le développement d’un programme en VB (Visual Basic), comprend les étapes suivantes :


1- écriture de l’algorithme (le programme) en Visual Basic,
2- correction des erreurs de frappe,
3- sauvegarde sur disque du code source,
4- exécution et test du programme,
5- correction des erreurs d’exécution

Ces étapes sont résumées par l’organigramme ci-dessous :

Saisie du programme

Erreur de oui
saisie ?

non

Sauvegarde

Exécution

Erreur à oui
l’exécution
?

non
Fin

Pour bien illustrer la démarche à suivre, nous allons mettre au point un programme permettant
de convertir la vitesse du vent de km/h en nœuds et en Beaufort.
14

1.2 Exécution/démarrage de Visual Basic

Cliquer sur Démarrer  Visual Studio 2015

Après quelques secondes (nécessaires pour la configuration initiale), apparaît alors la fenêtre
de gauche. Cliquer sur me rappeler ultérieurement. La fenêtre de droite apparait ensuite.
Sélectionnez les paramètres de développement Visual Basic, puis cliquez sur démarrez Visual
Studio.

Après 1 à 2 minutes environ, la fenêtre suivante doit apparaitre.

Pour créer un programme en Visual Basic, il faut cliquer sur Fichier  Nouveau Projet
15

Il faut alors choisir Visual Basic puis Application Windows Forms. Donner ensuite un nom à
votre application (votre programme) en bas de la fenêtre : vent. Cliquer alors sur OK pour
valider le nom de votre application.

Visual Studio crée pour vous une application Windows minimale, c'est à dire, une fenêtre
vide. En cliquant sur Boites à outils, puis sur la punaise vous obtiendrez la figure ci-dessous.

La fenêtre principale de Visual Studio se divise en plusieurs zones bien distinctes. Nous
n'utiliserons pour commencer qu'une toute petite partie de chaque zone de l'interface.

Au début, l'interface semble complexe, mais avec l'usage vous vous rendrez compte qu'elle est
bien pratique.

Dans un premier temps, il faut bien suivre le sujet du TP jusqu'au bout, ensuite, vous
pourrez découvrir les différents menus et tester les différents boutons proposés par cet
environnement de développement de logiciels.
3B3B
16

Exercice 1 : construction d’un premier programme

Phase 1
A ce stade, Visual Studio a créé pour vous la structure de base de votre application, c'est à
dire une fenêtre vide. Pour tester cette fenêtre, cliquer sur l'icône qui se trouve
dans la barre d'outils. Apparaît alors la fenêtre suivante :

Il faut fermer la fenêtre pour poursuivre la mise au point de notre programme.

Nous allons ajouter un bouton à notre fenêtre en cliquant sur le bouton dans la boîte à outils,
puis en cliquant dans la fenêtre vide là où l'on veut placer le bouton. Nous obtenons la fenêtre
suivante :

Il faut maintenant faire un double clic sur le bouton que nous venons d'insérer pour créer le
code visual basic qui sera exécuté :

Pour le moment, il n'est pas nécessaire de comprendre entièrement le code qui a été créé par
Visual Studio. Seul Button1_Click nous est utile : ce nom indique clairement que le code sera
exécuté lorsque nous cliquerons sur notre bouton.

Le code Visual Basic doit être saisi entre Sub Button1_Click(...) et End Sub.

Nous allons faire un simple test en ajoutant la ligne de code : MsgBox("Bonjour").

Voici à quoi doit ressembler votre code :


17

Nous remarquons bien que le code est entre Sub ... et End Sub. Il en sera toujours de
même dans tous les TP.

Vous pouvez maintenant tester votre programme en cliquant à nouveau sur le bouton
puis sur le bouton de votre fenêtre (bouton1). Vous devriez avoir un affichage similaire à
celui-ci.

3 fenêtres sont visibles


• La fenêtre de Visual Studio en arrière-plan. Sur la partie gauche, on retrouve le
programme et au milieu des outils de diagnostic.
• La fenêtre de votre programme en cours d’exécution (intitulée Form1).
• La fenêtre de dialogue ouverte grâce à l’instruction MsgBox.

Si vous avez une erreur à l'exécution, il faut cliquer sur le bouton Stop (le bouton carré de
droite) et corriger votre code.

Si tout s'est bien passé, bravo, vous venez de réussir votre premier programme Visual Basic !
Penser à le sauvegarder.

6B6BUU
18

Phase 2
Maintenant, nous allons permettre à l'utilisateur de saisir une donnée au clavier puis nous
l'afficherons dans une boite à l'écran (MsgBox). Pour cela, il nous faut une boite de saisie qui
se nomme en Visual Basic InputBox. Nous allons donc commencer par effacer la ligne
MsgBox("Bonjour") pour écrire à la place le code suivant :

Dim v As Single
v = InputBox("Entrer la vitesse du vent en km/h")
MsgBox("La vitesse du vent en km/h est de " & v)

Explication du code :
• Dim v As Single signifie que nous allons utiliser une variable pour stocker un
nombre non entier (Single). Cette variable s'appelle v (le nom de la variable est laissé
au choix du programmeur).
• v = InputBox("Entrer la vitesse du vent en km/h ") va afficher une
boite de saisie à l'écran. L'utilisateur (vous en l'occurrence), va devoir saisir un
nombre. Le nombre saisi par l'utilisateur va alors être placé dans la variable v.
• MsgBox("La vitesse du vent en km/h est de " & v) affiche le message
"La vitesse du vent est de" suivi de la valeur de la variable v. L'opérateur & permet
d'afficher à la fois du texte et des nombres.

Tester votre programme avec une vitesse de vent de 10, puis avec une vitesse de 12,5.

Phase 3
Nous allons ajouter un calcul de conversion pour transformer la vitesse du vent en km/h, en
vitesse du vent en noeuds. Un noeud correspond approximativement à 1,85 km/h.
Il suffit pour cela de modifier l'affichage du résultat en modifiant la ligne contenant le
MsgBox pour obtenir :

MsgBox("La vitesse du vent en noeuds est de " & v / 1.85)

Phase 4
Nous allons encore plus loin car nous allons modifier le programme pour qu'il affiche les
résultats en Beaufort (l'échelle Beaufort mesure aussi la vitesse du vent, mais en force : force
0 (calme), force 1 (Très légère brise) ... jusqu'à force 12 (ouragan). Pour cela nous allons
compléter le programme déjà commencé. Pour débuter nous ne traitons que les forces 0 et 1
en ajoutant le code suivant :

If v < 1 Then
MsgBox("Force 0 - Calme")
End if
If v >= 1 And v < 5 Then
MsgBox("Force 1 - Très légère brise")
End if

Notez que la vitesse du vent est affichée en noeuds grâce au calcul de v / 1.85. Cependant, la
valeur de v saisie est toujours en km/h.

Si l'on étudie le premier test :

If v < 1 Then
MsgBox("Force 0 - Calme")
End if
19

Cela signifie que : Si la vitesse v est inférieure strictement à 1, Alors Visual Basic affiche
"Force 0 - Calme" à l'écran, dans une boite de dialogue.

Echelle de Beaufort :

Nombre Terme générique Vitesse du vent à 10 m de Que se passe-t-il au large ?


de hauteur
Beaufort
(degré) (descriptif) en km/h en noeuds (remarques)
0 Calme moins de 1 moins de 1 la fumée s'élève
verticalement ; la mer est
comme un miroir

1 Très légère brise 1à5 1à3 il se forme des rides, mais il


n'y a pas d'écume

2 Légère brise 6 à 11 4à6 vaguelettes courtes ; leurs


crêtes ne déferlent pas

3 Petite brise 12 à 19 7 à 10 très petites vagues ; écume


d'aspect vitreux

4 Jolie brise 20 à 28 11 à 15 petites vagues devenant plus


longues ; moutons nombreux

5 Bonne brise 29 à 38 16 à 21 vagues modérées, allongées ;


moutons nombreux

6 Vent frais 39 à 49 22 à 26 des lames se forment ; crêtes


d'écume blanche plus
étendues

7 Grand frais 50 à 61 27 à 33 la mer grossit ; l'écume est


soufflée en trainées ; lames
déferlantes

8 Coup de vent 62 à 74 34 à 40 lames de hauteur moyenne ;


de leurs crêtes se détachent
des tourbillons d'embruns

9 Fort coup de vent 75 à 87 41 à 47 grosses lames ; leur crête


s'écroule et déferle en
rouleaux

10 Tempête 88 à 102 48 à 55 très grosses lames à longues


crêtes en panache ;
déferlement en rouleaux
intense et brutal
11 Violente tempête 103 à 117 56 à 63 lames exceptionnellement
hautes ; mer recouverte de
bancs d'écume blanche

12 Ouragan plus de 118 plus de 64 air plein d'écume et


d'embruns ; mer entièrement
blanche ; visibilité très
réduite
20

Phase 5

A l’aide de la boite à outils, ajouter un nouveau bouton ainsi qu’un label.

Faire un double clic sur le nouveau bouton (attention, pas sur le label) et reprendre le code de
l’exercice 4 (utiliser le copier/coller).

Remplacez MsgBox("La vitesse du vent en km/h est de " & v) par


Label1.Text = "La vitesse du vent en km/h est de " & v

De la même manière, ajouter un nouveau Label et remplacer les 2 autres MsgBox par
Label2.Text = …

Phase 6

Il est possible d’exécuter un programme pas à pas en Visual Basic afin de bien voir le
déroulement du code pendant qu’il s’exécute. L’exécution pas à pas est en particulier très
utile pour rechercher les erreurs de programmation.

Pour ce faire, il faut ajouter un point d'arrêt. Un point d'arrêt permet de stopper le programme
en cours d'exécution à un endroit bien précis puis de suivre ensuite son déroulement ligne par
ligne.

Pour faire cela, il faut placer votre curseur sur la ligne :


MsgBox("La vitesse du vent en noeuds est de " & v / 1.85)
de l’exercice 4 et appuyer sur la touche F9 (ou bien menu Déboguer-> Basculer le point
d’arrêt)

La ligne apparaît alors en rouge avec un point rouge sur la gauche.


Vous pouvez maintenant exécuter le programme, puis saisir un nombre pour la vitesse du
vent. Juste après avoir cliqué sur ok, votre programme est stoppé et le code est mis en avant.

Il vous suffit de sélectionner Pas à pas détaillé dans le menu Déboguer (ou appuyer sur la
touche F11) pour faire exécuter une ligne après une autre. C'est la ligne en rouge qui va
s'exécuter, donc vous allez voir à l'écran la boite qui affiche la vitesse en noeud.

Si vous cliquez sur ok, vous retournez au code de votre programme.

Pendant le pas à pas, il est possible de connaître la valeur d’une variable en plaçant le pointeur
de la souris sur la variable en question. Placer par exemple votre curseur sur la variable v pour
connaître sa valeur.

Entraînez-vous à faire du pas à pas en changeant de place au point d'arrêt.

Fin de l’exercice 1.

Vous pouvez maintenant programmer les exercices suivant, en vous inspirant de ce que vous
avez appris au cours de l’exercice 1.
21

Exercice 2

C’est la période des soldes ! On suppose qu’un client profite des soldes pour acheter un article
en plusieurs exemplaires. Construire un programme qui lit le prix de l’article non soldé, le
pourcentage de réduction et le nombre d’articles, puis affiche le prix total correspondant.

Pour l’interface graphique, on pourra utiliser par exemple des boites de dialogue pour
l’acquisition (i.e. InputBox(…)) et l’affichage (i.e. MsgBox(…)), ou des champs texte
(TextBox.text = …).

Partie 2 - Introduction au graphisme


1Exercice 3

Cet exercice nécessite la mise en place d’une zone de dessin.


1. Ouvrez un nouveau projet (Fichier Nouveau Projet)
2. Donnez-lui le nom : TestGraphique
3. Agrandissez la Form1 pour obtenir une taille de 600x600 (Fenêtre Propriétés – Size)
4. Sur la Form1, installez un « panel »(Boite à outils – Conteneurs)
5. Agrandissez le panel panel1 pour obtenir une taille 400x600 (Fenêtre Propriétés – Size)
6. Changez la couleur du panel zoneDessin (Fenêtre Propriétés – BackColor)
7. Sauvegardez votre travail (Fichier  Enregistrer tout)
8. Double cliquez sur la zone form1. Modifiez le code pour qu’il soit le suivant :

Public Class Form1

Dim g As Graphics

Private Sub Form1_Load(sender As System.Object, e As System.EventArgs)


Handles Mybase.Load

g = Panel1.CreateGraphics

End Sub

End Class

9. Testez
22

Il est maintenant possible de dessiner dans cette zone de dessin :


1. Cliquez sur l’onglet Form1.vb[Design]
2. Ajoutez un bouton (Boite à outils – Contrôles communs)
3. Donnez-lui le nom : BDessin : : (Fenêtre Propriétés – Name )
4. Changez son label (Dessin) : (Fenêtre Propriétés – Text)
5. Double cliquez sur le bouton BDessin. Ajoutez au code les instructions suivantes :

g.FillRectangle(Brushes.White, 60, 80, 100, 100)


g.FillEllipse(Brushes.Black, 60, 80, 100, 100)
g.FillRectangle(Brushes.White, 110, 80, 50, 100)
g.FillEllipse(Brushes.White, 85, 80, 50, 50)
g.FillEllipse(Brushes.Black, 85, 130, 50, 50)
g.DrawEllipse(Pens.Black, 60, 80, 100, 100)
g.FillEllipse(Brushes.Black, 105, 100, 10, 10)
g.FillEllipse(Brushes.White, 105, 150, 10, 10)

6. Sauvegardez votre travail


7. Testez.
8. Modifiez le programme pour que le dessin s’affiche en 2 fois plus grand, au point
d’origine (100, 250).

Exercice 4
Ecrire un programme qui permet de dessiner la figure ci-dessous (Remarque : le dessin
ci-dessous n’est pas à l’échelle).
100 x
(0,0)

100

On supposera que le point de départ à pour origine (100,100), que le premier segment
à une longueur de 140, le deuxième de 120 etc…
Vous commencerez, comme pour l’exercice précédent à mettre en place une zone de
dessin, puis pour tracer les segments on utilisera la fonction : DrawLine(Couleur, X_depart,
Y_depart, X_arrivee, Y_arrive)
23

Université de Bretagne Occidentale - UFR Sciences - Département d’Informatique


Licence 1ère année (S1), Portail MPI
Introduction à l’Informatique

TP n°2
Introduction à Visual Basic
Variables, séquences et conditionnelles simples
Exercice 1

1. Ecrire un programme qui lit et inverse le contenu de deux variables A et B, en utilisant


une variable supplémentaire, puis affiche les valeurs de A et B.

2. Ecrire un programme qui lit et inverse le contenu de deux variables numériques A et


B, sans utiliser une troisième variable, puis affiche les valeurs de A et B.

Exercice 2

Construire un programme Visual Basic permettant de trouver le minimum de trois nombres


compris entre 0 et 75. On pourra faire l'acquisition des trois membres à l’aide d'un composant
NumericUpDown et l'affichage dans une boîte de dialogue de type MsgBox.

Exercice 3

Construire algorithme qui permet d’additionner deux mesures de temps. Par exemple,
7h23min + 3h16min = 10h39min.

On demandera à l’utilisateur la première mesure (nombre d’heures et nombre de minutes),


puis la deuxième mesure (nombre d’heures et nombre de minutes) et on produira le résultat en
jours, heures et minutes.. On supposera que l’utilisateur donne correctement les valeurs des
heures (comprises entre 0 et 23) et des minutes (comprises entre 0 et 59).
1B1B

Exercice 4

A partir des coordonnées de trois points ((Ax, Ay), (Bx, By), (Cx, Cy)), construire un
algorithme permettant de déterminer si le triangle construit est isocèle en (Ax, Ay),
équilatéral, rectangle en (Ax, Ay).

U Exercice 5

Les événements générés par un clic sur la souris, peuvent être captés en Visual Basic et
donner lieu à des actions.

Créez un nouveau projet contenant une zone de dessin (= panel + contexte graphique).
Une fois la zone de dessin créée, cliquez dessus et consultez la fenêtre des propriétés (en
général, elle se situe en bas à droite).
Cliquez sur le symbole représentant un éclair de couleur jaune. Une liste déroulante apparaît,
double-cliquez sur MouseClick.
24

Vous devez normalement vous trouver dans une zone de code similaire à celle-ci :

Private Sub Panel1_MouseClick(sender As System.Object, e As


System.Windows.Forms.MouseEventArgs) Handles Panel1.MouseClick
….
End Sub

Modifier le code pour qu'il corresponde au code ci-dessous (e.X et e.Y représentent les
coordonnées de la souris dans la zone de dessin) :
Private Sub Panel1_MouseClick(sender As System.Object, e As
System.Windows.Forms.MouseEventArgs) Handles Panel1.MouseClick

Dim click_x, click_y As Integer

click_x = e.X
click_y = e.Y
g.DrawLine(Pens.Blue, 0, 0, click_x, click_y)

End Sub

Modifier à nouveau le code pour qu'un clic dans la zone de dessin provoque le dessin d'un
carré de taille 20 X. 20.

Modifier à nouveau le code pour qu'un clic dans la zone de dessin provoque le dessin d'un
trait entre le point cliqué et le point précédemment cliqué. On supposera que le point initial se
trouve en (0, 0).

En utilisant l’événement MouseMove, et en copiant le code que vous venez de construire, votre
programme permet de faire un suivi de souris !
25

Université de Bretagne Occidentale - UFR Sciences - Département d’Informatique


Licence 1ère année (S1), Portail MPI
Introduction à l’Informatique

TP n°3 et 4
Itérations (boucle Pour) et tableaux

Exercice 1 – calcul de moyenne – boucle pour

Ecrire un programme permettant de calculer la moyenne de N notes : le programme demandera le nombre


N de notes, puis chacune des notes, une par une, et affichera ensuite leur moyenne.

Exercice 2 – boucle Pour et tableaux

1. Ecrire un programme qui lit le nombre N d’éléments d’un tableau T, les éléments de T et
également un élément x, puis retourne le nombre d’occurrences de l’élément x dans T.

2. Ecrire un programme qui lit le nombre N d’éléments d’un tableau T, les éléments de T et
également un élément x, puis retourne une position de x dans T si x est présent, sinon il affiche le
message "x n’est pas présent dans T".

Exercice 3 – boucle Pour et tableaux

1. Ecrire un programme PosMinTab qui lit un entier N et les N nombres d’un tableau T et affiche le
plus petit élément de T et sa position dans T. Exécuter ce programme pour le jeu de données
suivant : N = 7 et T = {53 ; 29 ; 56 ; 6 ; 3 ; 78 ; 10}.

2. Ecrire un programme similaire pour un tableau à deux dimensions (matrice NxM).

Exercice 4 – boucle Pour et tableaux

L’image miroir d’un tableau T = {e0 ; e1 ; … ; en-2 ; en-1} est le tableau ImT = {en-1 ; en-2 ; … ; e1 ; e0}.

1. Ecrire un programme ImageMiroir qui lit le nombre d’éléments et les éléments d’un tableau T et
construit dans un second tableau, noté ImT, l’image miroir de T.

2. Ecrire un programme ImageMiroir2 qui lit le nombre d’éléments et les éléments d’un tableau T et
construit l’image miroir de T dans ce même tableau T.

Exercice 5 – tri de tableau

On souhaite construire un programme de tri de tableau par recopie : étant donné un tableau A de N
éléments entiers positifs, on cherche à remplir un tableau B contenant les éléments de A dans l’ordre
croissant.

L’algorithme devra comporter trois étapes principales :


• acquisition des valeurs de A,
• tri par recopie
• puis affichage du tableau B.
26

Pour la partie « tri par recopie », on cherchera la plus grande valeur dans le tableau A (en s’inspirant de la
recherche du minimum de l’exercice précédent) que l’on rangera alors dans la dernière case du tableau
B. On remplacera cette valeur dans le tableau A par -1, et on cherchera alors la nouvelles plus grande
valeur dans le tableau A que l’on rangera alors dans l’avant dernière case du tableau B et ainsi de suite…

Initialisation : A = [12, 8, 45, 11] B = [?, ?, ?, ?]


Etape 1 : A = [12, 8, -1, 11] B = [?, ?, ?, 45]
Etape 2 : A = [-1, 8, -1, 11] B = [?, ?, 12, 45]

Exercice 6 – boucle Pour imbriqués

1. Construire un programme permettant de dessiner une ligne de 5 carrés de taille 50 x 50, espacés
de 5.

2. Construire un programme permettant de dessiner un pavage de carrés composé de 3 lignes et de 5


carrés par ligne.
27

Université de Bretagne Occidentale - UFR Sciences - Département d’Informatique


Licence 1ère année (S1), Portail MPI
Introduction à l’Informatique

TP n°5
Itérations (boucle Tant que), tableaux et chaînes de caractères

Exercice 1 – calcul de moyenne – boucle tant que

1. Ecrire un programme permettant de calculer la moyenne d’une suite de notes terminées par -1
(exemple : 12, 10, 14, 16, -1….. moyenne de 13).

2. Modifier le programme de la question 1 pour vérifier que chaque note saisie est bien comprise entre 0
et 20. Si la valeur saisie est incorrecte, on demandera à l’utilisateur de ressaisir la note incorrecte

Exercice 2 – boucle Tant que

Ecrire un programme permettant de dessiner la figure ci-dessous. La longueur du premier


segment sera demandée à l’utilisateur. Entre deux segments, la différence de longueur sera de 10
unités et les segments seront espacés verticalement de 5 unités. On dessinera des segments, tant
que les segments auront une longueur supérieure à 10.

Exercice 3 – boucle Tant que

Ecrire un programme permettant de dessiner la figure ci-dessous. L’utilisateur saisira la longueur


du segment initial ainsi que le pas (ici, le pas permet de déterminer la différence de longueur
entre deux segments consécutifs). Le programme s’arrêtera lorsque la longueur du segment à
dessiner sera inférieure au pas.
28

Exercice 4 – boucle Pour et Tant que

On cherche à construire un algorithme permettant de rechercher une valeur V dans un tableau de


nombres réels à une dimension TAB[M]. On remplira le tableau en utilisant une structure de
contrôele Pour… Fpour et on fera la recherche avec une structure de contrôle Tant que…
Ftque.

1. Proposer un algorithme en supposant que la valeur V est dans le tableau. On arrêtera la


recherche dès que l’on a trouvé la valeur V.
2. Proposer un algorithme en supposant que la valeur V est peut-être dans le tableau. On
arrêtera la recherche dès que l’on a trouvé la valeur V (si elle est présente bien sûr).
3. Même exercice avec un tableau à 2 dimensions.

Exercice 5 – pavage d’étoiles

On souhaite dessiner des suites d’hélices imbriquées.


1. Construire une procédure, qui étant donné les coordonnées du centre (xC, yC) et la
largeur lh de l’hélice, permet le dessin ci-dessous.
Le point A, a pour coordonnées (xC-lh, yC-lh).
Le point B, a pour coordonnées (xC, yC –lh/2)
On pourra expérimenter avec xC = 200, yC = 200 et lh = 100.

A
B

2. Utiliser la procédure construite précédemment afin de construire des hélices imbriquées.


On diminuera la largeur de l’hélice de moitié à chaque itération, tant que la largeur est
supérieure à 10.
On pourra expérimenter avec xC = 300, yC = 300 et lh = 250.
29

3. On cherche maintenant à construire la figure ci-après, qui fera appel aux procédures
construites en 1 et 2. On pourra expérimenter avec un premier centre d’hélice ayant pour
coordonnées xC = 70, yC = 70 et une longueur lh = 60.

Exercice 6 – Manipulation des chaines de caractères

Pour cet exercice, on utilisera les fonctions len(ch) et ch.substring(debut, longueur). La


première fonction permet le calcul de la longueur d’une chaine, et la deuxième permet d’extraire
une sous-chaine de longueur « longueur » de la chaine ch et commençant en « debut ».

Exemple d’utilisation
Dim machaine as string = « bonjour »
Dim masouschaine as string
Dim lgr as integer

lgr = len(machaine) ‘ retourne la valeur 7


masouchaine = machaine.substring(2,3) ‘ retourne « njo »

• Construire un programme permettant de vérifier si la chaine « a » appartient à une chaine


donnée ch.
• Les palindromes sont des mots ou des phrases qui peuvent se lire dans les deux sens,
comme par exemple « laval », « kayak », «Karine alla en Irak ». Construire deux
programmes permettant de vérifier :
o si un mot est ou non un palindrome.
o si une phrase est ou non un palindrome
• Construire un programme qui permet de calculer le nombre d’occurrences d’une chaine
ch1 dans une chaine ch2. Par exemple, la chaine ch1 = « tique » a deux occurrences dans
la chaine «les travaux pratiques d’informatique».

Vous aimerez peut-être aussi