Sujets de Travaux Dirigés et de Travaux Pratiques - Lab

publicité
Université de Bretagne Occidentale - UFR Sciences - Département d’Informatique
Licence 1ère année (S1), Parcours 1
Introduction à l’Informatique
Sujets de Travaux Dirigés et de Travaux Pratiques
Pascal Ballet, Philippe Le Parc et Sophie Gire
TD 1 – Codage et Circuits logiques
TD 2 – Architecture
TD 3 et 4 – Variables, séquences et conditionnelles simples
TD 5, 6 et 7 – Itérations (boucle Pour et Tant que) et tableaux
TD 8 – Tableaux et graphisme
TD 9 – Introduction aux bases de données
page 2
page 5
page 14
page 17
page 20
page 22
TP1 – Introductions aux TPs et circuits logiques
TP2 – Architecture
TP3 et 4 – Introduction à Visual Basic : variables, séquences et conditionnelles simples
TP5 et 6 – Itérations (boucle Pour et Tant que) et tableaux
TP 7 et 8 – Un peu de graphisme
TP 9 – Introduction aux bases de données
TP 10 – Gestion d’un stock de voitures
page 24
page 31
page 33
page 45
page 47
page 52
page 55
Memo Access
page 59
Retrouver ce document, et d’autres informations sur cet enseignement, dans l’Intranet du département
Informatique (intranet-depiup.univ-brest.fr), rubrique Pédagogie, puis Licence 1, puis Introduction
à l’Informatique.
Les exercices de TD suivis par une étoile (*) sont considérés comme des exercices de base, dont la
compréhension est nécessaire.
1
Université de Bretagne Occidentale - UFR Sciences - Département d’Informatique
Licence 1ère année (S1), Parcours 1
Introduction à l’Informatique
TD n°1
Codage et Circuits Logiques
L'objectif de ce TD est, d'une part de mettre en pratique les notions de codage vues en cours (bases,
changement de base, implémentation) et d'autre part, des exercices sur les circuits logiques sont proposés
pour consolider les éléments vus en cours.
Partie 1. Codage
Exercice 1 *
a) Soit le nombre 110102, quelle est sa valeur en base 10 ?
b) Soit le nombre 3010, quelle est sa valeur en base 2 ?
Exercice 2
Enumérer les symboles utilisés pour les bases suivantes : 4, 8, 16
Exercice 3 *
Soient les nombres suivants : 10112, 10114, 10118.
a) Quels sont les nombres en base 10 correspondant ?
b) Quels sont leur écriture en base 2 ?
Exercice 4
Soient les nombres 32314, 5289, 40657
a) Donner leur écriture en base 10.
b) Donner leur écriture en base 2.
Exercice 5 *
Soient les nombres binaires suivants : 1110110100012, 10100111012, 1000010011110112.
a) Quels sont les nombres en base 8 correspondant ?
b) Quels sont les nombres en base 16 correspondant ?
2
Exercice 6 *
Soient les 2 octets suivants :
A : 1011 00012
B : 0001 01112
On suppose que ces deux octets codent respectivement deux nombres.
1. Additionnez, en binaire, A et B
2. Quelle est la valeur entière de cette somme en base 10 ?
3. Additionnez, en binaire, B avec lui-même ? Que remarquez-vous sur le résultat ?
Exercice 7 *
a) Soit N le nombre suivant en base 10 : -29,25
1. Convertir la partie entière de la valeur absolue de N en binaire.
2. Convertir la partie fractionnaire de N en binaire.
3. Ecrire N en binaire.
4. Ecrire N sous la forme exponentielle binaire normalisée.
5. Donner une représentation interne de N en utilisant la forme suivante :
1 bit de signe (mantisse) / 11 bits pour la mantisse / 1 bit de signe (exp) / 3 bits pour l'exposant.
Signe (1 bit)
Mantisse (11 bits)
Signe (1 bit)
Exposant (3 bits)
b) Recommencer l'exercice avec les nombres : 128,125 puis 0,8.
Exercice 8
Additionner les nombres binaires suivants : 0011 0011 et 0101 1111. Donner la valeur en base 2 et en
base 10 du résultat obtenu.
Exercice 9
Soit la suite de bits : 0101 1001 0000 0100.
a) Si l’on considère que cette suite de bits est un nombre entier codé en base 2, donner sa valeur en
base 16.
b) Si l’on considère que cette suite de bits est un nombre réel, codé avec le format vu en cours et
rappelé ci-dessous, donner sa valeur en base 10.
Signe (1 bit)
Mantisse (11 bits)
Signe (1 bit)
Exposant (3 bits)
3
Partie 2 - Circuits logiques
Exercice 1 *
Donner les tables de vérité des portes ET, OU, OU exclusif et NON
Exercice 2 *
A
Soit le circuit suivant :
B
S1
C
S2
S
D
a)
b)
c)
d)
e)
Donner une expression logique de la sortie S en fonction des entrées A, B, C et D.
Donner la table de vérité de la sortie S.
Donner une expression logique de la sortie S directement à partir de la table de vérité.
Simplifier l'écriture de S (choisir l'expression (a) ou (c)).
Proposer un circuit plus petit mais équivalent à celui proposé (on pourra également diminuer le
nombre d'entrées si possible).
Exercice 3 *
Soit l'expression logique suivante :
S = A.B.C + (~A).B + A.(B+C)
a) Donner un circuit logique équivalent à cette expression.
b) Simplifier l'expression de S et donner un nouveau circuit logique.
Exercice 4 *
Soit le circuit logique suivant :
a) Donner la table de vérité de ce circuit
b) Quelle fonction assure ce circuit ?
c) Modifier ce circuit logique pour qu'il assure complètement sa fonction.
Exercice 5
Soit l’expression logique suivante : S =A.~B + (Ã.B + C)
Dessiner un circuit logique équivalent et donner la table de vérité. Après analyse la table de vérité,
donner une expression plus simple équivalent à S.
Exercice 6
Soit le circuit logique suivant :
A
B
a) Donner la table de vérité de ce circuit.
b) Donner une expression logique équivalente à ce circuit.
C
S
4
Université de Bretagne Occidentale - UFR Sciences - Département d’Informatique
Licence 1ère année (S1), Parcours 1
Introduction à l’Informatique
TD n°2
Architecture
L’objectif de ce TD est l’étude d’une architecture à jeu d’instructions réduit (RISC) simplifiée.
L’architecture est décrite en fin d’énoncé de TD
Exercice 1 *
A l’aide de la description de l’architecture RISC que vous trouverez en fin de sujet, donner, pour chaque
notation de constante uimm4, uimm5, simm5, uimm11, l’intervalle de valeurs que peuvent prendre ses
constantes.
Exercice 2 *
On considère les deux instructions en assembleur :
•
•
qui additionne une constante sur 5 bits (simm5) à un registre source (rs)
et place le résultat dans un registre destination (rd). Nous supposerons que les registres sont sur
16 bits.
add rd, rs1, rs2 qui additionne les valeurs des registres sources (rs1) et (rs2) et place le
résultat dans un registre destination (rd). Nous supposerons que les registres sont sur 16 bits.
addi rd, rs, simm5
a) Sachant que les registres sont sur 16 bits, decrire ce que l’ordinateur doit faire au moment de
l’éxécution de : addi rd, rs, simm5.
b) On suppose initialement que le registre r1 est à : 0000000000100011 et que le registre r3 est a :
0000010000111100. On exécute alors les deux instructions ci-dessous l’une après l’autre.
addi r2, r1, 15
add r2, r3, r2
(étape 1)
(étape 2)
Une fois l’étape 1 effectuée, quel est le contenu de r2 (écrit sur 16 bits) ? Quelle est la valeur de
r2 en base 10 ?
c) Une fois les étapes 1 et 2 effectuées, quel est le contenu de r2 (écrit sur 16 bits) ?
Exercice 3 *
On suppose les instructions suivantes chargées en mémoire (à partir de l’adresse mémoire 0) :
0)
1)
2)
3)
4)
5)
6)
7)
addi r1, r0, 0
addi r2, r0, 0
st (r2 + 15), r1
addi r2, r2, 1
add r1, r1, r2
addi. r3, r2, -6
bne -5
st (r2 + 15), r1
Décrire l’exécution de ce programme, en détaillant chaque étape de chaque instruction et en donnant les
valeurs de chaque registre.
5
Exercice 4
Soit le programme suivant :
0)
1)
2)
3)
4)
5)
6)
addi r1, r0, 0
addi r2, r0, 1
addi r1, r1, 1
add r2, r2, r2
addi. r3, r1, -3
bne -4
nop
Pour mémoire, les instructions addi et add réalisent des additions, l’opération bne permet de faire un
branchement en fonction du calcul précédent (mise en place de RCC) et l’opération nop ne fait rien.
a) Quelles sont les valeurs des registres R1 et R2 à l’issue de l’exécution de ce programme ?
b) Quel sera le résultat du calcul, si dans l’instruction 4), on remplaçait -3 par -6 ?
Exercice 5
La résolution de cet exercice nécessite préalablement la résolution de l’exercice 3.
a) Proposer une suite d’instructions permettant de calculer le produit des valeurs positives
contenues dans les registres r1 et r2. On ne prendra pas en compte un éventuel débordement.
b) Proposer de même une méthode pour calculer le quotient et le reste de la division de r1 par r2.
6
Description de l’architecture RISC étudiée
Présentation des composants
Cette architecture comprend une mémoire et un processeur, reliés par des bus. La mémoire comprend
216 = 65536 cases de 16 bits, adressées de 0 à 65535 et utilisée pour stocker le code et les données.
Le processeur comprend :
• Une unité de commande, qui décode et interprète les instructions.
• Une unité arithmétique et logique (UAL) qui effectue les calculs nécessaires.
• Des registres qui stockent les données internes du processeur :
o 8 registres génériques de 16 bits allant de r0 à r7, r0 étant toujours égal à 0;
o un registre d’état rcc de 4 bits qui stocke des indicateurs ;
o un registre d’instruction de 16 bits qui stocke le code de l’instruction en cours
d’exécution ;
o un compteur de programme de 16 bits qui contient l’adresse de la prochaine instruction `a
charger ;
o un registre d’adresse mémoire de 16 bits qui sert lors de la lecture ou de l’écriture en
mémoire.
L’architecture comprend enfin 3 bus s1, s2 et d qui permettent le transfert des données entre les
registres, les unités et la mémoire. Un schéma de l’architecture est disponible en dernière page du TD.
Exécution d’une instruction
L’exécution d’une instruction nécessite plusieurs étapes (dont les 3 premières sont toujours identiques) :
L’instruction située `a l’adresse du compteur de programme est chargée dans le registre d’instruction.
1. Le compteur de programme est augmenté de 1 (pour pointer vers la prochaine instruction à
exécuter).
2. L’instruction chargée est décodée.
3. Le cas échéant, lecture des données en mémoire ou dans les registres.
4. Traitement des données (en général par l’UAL).
5. Eventuellement, stockage des données en mémoire ou dans les registres.
A la fin de l’exécution, on retourne à la première étape.
Jeu d’instruction
Pour décrire le jeu d’instruction, on définit les différentes notations :
uimm11 désigne une constante non signée codée sur 11 bits.
simm11 désigne une constante signée codée sur 11 bits.
simm9 désigne une constante signée codée sur 9 bits.
simm5 désigne une constante signée codée sur 5 bits.
uimm5 désigne une constante non signée codée sur 5 bits.
uimm4 désigne une constante non signée codée sur 4 bits.
rn désigne le n-ième registre,
pc le compteur de programme,
rcc[c], rcc[z], rcc[n] et rcc[v] les 4 indicateurs d’état
(voir dernière section).
7
Lors de leur utilisation, les constantes sont étendues (si nécessaire) sur 16 bits par l’ajout de 0 (pour une
constante non signée) ou du bit de signe (pour les constantes signées) dans les bits de poids fort.
Un nombre binaire se repère par un b à la fin (par exemple, 01101b vaut 13), un nombre hexadécimal
par 0x au début (par exemple 0x7F vaut 127).
Le symbole || désigne la concaténation de nombres binaires, ainsi 10101b || 0000b vaut 101010000b.
•
•
•
Instruction de chargement :
Instruction
Action
lih rn, uimm11
rn←uimm11 || 00000b
Instructions de branchement inconditionnel :
Instruction
Action
b simm11
pc←pc + (1 + simm11)
ba simm11
pc←simm11
Instructions de branchement conditionnel :
Inst ruction Action
beq simm9 si rcc[z]=1, alors pc←pc + (1 + simm9)
bne simm9 si rcc[z]=0, alors pc←pc + (1 + simm9)
bge simm9 si rcc[z]=1 ou rcc[n]=0, alors pc←pc + (1 + simm9)
bgt simm9 si rcc[z]=0 et rcc[n]=0, alors pc←pc + (1 + simm9)
ble simm9 si rcc[z]=1 ou rcc[n]=1, alors pc←pc + (1 + simm9)
blt
simm9 si rcc[z]=0 et rcc[n]=1, alors pc←pc + (1 + simm9)
bvs simm9 si rcc[v]=1, alors pc←pc + (1 + simm9)
bvc simm9 si rcc[v]=0, alors pc←pc + (1 + simm9)
•
Instructions de décalage :
Les symboles << et >> représentent respectivement les opérations binaires de décalage `a gauche
et `a droite. Ainsi, 01001b << 3 donne 01001000b, et 01101b >> 2 donne 011b.
Instruction
Action
lsl rd, rs1,
uimm4 rd ← rs1 < < uimm4
rol rd, rs1,
uimm4 rd ← rs1 < < uimm4 les bits de poids faibles re¸coivent les
bits de poids forts éjectés
lsr rd, rs1,
uimm4 rd ← rs1 > > uimm4
asr rd, rs1,
uimm4 rd ← rs1 > > uimm4 les bits de poids forts sont comblés avec
le bit de signe
8
•
Instructions arithmétiques, logiques et chargement/rangement :
Instruction
Action
add rd, rs1, rs2
rd ← rs1+rs2
add. rd, rs1, rs2
rd ← rs1+rs2, modifie rcc
sub rd, rs1, rs2
rd ← rs1-rs2
sub. rd, rs1, rs2
rd ← rs1-rs2, modifie rcc
and. rd, rs1, rs2
rd ← rs1 & rs2, modifie rcc
or rd, rs1, rs2
rd ← rs1 | rs2, modifie rcc
addi rd, rs1, simm5
rd ← rs1+simm5
addi. rd, rs1, simm5
rd ← rs1+simm5, modifie rcc
andi. rd, rs1, simm5
rd ← rs1 & simm5, modifie rcc
ori rd, rs1, uimm5
rd ← rs1 | uimm5, modifie rcc
ldx rd, (rs1+rs2)
rd ← Mem[rs1+rs2]
stx (rs1+rs2), rd
Mem[rs1+rs2] ← rd
ldbx rd, (rs1+rs2)
rd ← Mem[rs1+rs2] & 0x00ff
Ldsbx rd, (rs1+rs2)
rd ← exts(Mem[rs1+rs2] & 0x00ff)
stbx (rs1+rs2),rd
Mem[rs1+rs2] ← rd & 0x00ff
ld rd,(rs1 + simm5)
rd ← Mem[rs1+simm5]
st (rs1 + simm5),rd
Mem[rs1+simm5] ← rd
ldb rd,(rs1 + simm5)
rd ← (Mem[rs1+simm5] & 0x00ff
stb (rs1 + simm5),rd
Mem[rs1+simm5] ← rd & 0x00ff
Dans ce tableau, Mem[a] désigne la mémoire pointée par l’adresse a, et exts(a) étend sur 16
bits un entier signé a représenté sur 8 bits.
Indicateurs d’états
Les quatre indicateurs d’états servent pour faire des tests. Les instructions add., sub., addi., and.,
or, andi. et ori modifient les indicateurs en fonction de leur résultat :
•
•
rcc[z]
rcc[n]
est mis à 1 si le résultat de l’opération arithmétique vaut 0, et à 0 sinon.
est mis à 1 si le rèsultat de l’opération (vu comme un entier signé) est négatif, et à 0
sinon.
•
•
est mis à 1 si une addition ou soustraction a généré une retenue (en prenant les entiers
comme non signés), à 0 sinon.
rcc[v] est mis à 1 si une addition ou soustraction a débordé (dans le cas d’entiers signés), à 0
sinon.
rcc[c]
9
Schéma de l’architecture RISC utilisée (source PixArchi)
10
Architecture logicielle et matérielle de référence
1 Notations
Les conventions et notations suivantes sont utilisées :
uimm11 constante non signée codée sur 11 bits. Lorsque cette constante est employée dans une instruction,
elle est complétée par des 0 dans les bits de poids fort si nécessaire pour l'étendre sur 16 bits.
simm11 constante signée codée sur 11 bits. Lorsque cette constante est employé dans une instruction,
elle est complétée par le bit de signe dans les bits de poids fort si nécessaire pour l'étendre sur 16 bits.
simm9 constante signée codée sur 9 bits. Même remarque que pour simm11.
simm5 constante signée codée sur 5 bits. Même remarque que pour simm11.
uimm5 constante non signée codée sur 5 bits. Même remarque que pour uimm11.
uimm4 constante non signée codée sur 4 bits. Même remarque que pour uimm11.
& et logique bit à bit. ; | ou logique bit à bit. ; <- affectation. ; || concaténation ; == test d'égalité. ; << décalage
à gauche. ; >> décalage à droite.
Signification des bits du registre RCC.
Bit
Signification si 0
Signification si 1
C
L'instruction n'a pas généré de retenue
L'instruction a généré une retenue
Z
Le résultat de l'instruction est différent de 0
Le résultat de l'instruction est égal à 0
N
Le résultat de l'instruction est positif ou nul
Le résultat de l'instruction est négatif
V
L'instruction n'a pas généré de débordement
L'instruction a généré un débordement
Mem[addr] case mémoire à l'adresse addr.
2 Les registres et le jeu d'instructions
Le programmeur dispose de 8 registres banalisés nommés r0 à r7. Le registre r0 est câblé à 0 (i.e. il contient la
constante 0, on peut écrire dans ce registre mais cette écriture est sans effet).
Le registre rcc contient 4 drapeaux : C, Z, N et V mémorisant les caractéristiques du résultat de la dernière
instruction qui l'a modifié selon le codage présenté dans la table 1.
Les adresses sont sur 16 bits et les cases mémoire ont une capacité de mots de 16 bits.
On peut donc adresser 128ko (kilo-octets) soit 131072 octets.
Les instructions sont codées sur 16 bits. Il existe 3 types d'instructions :
•
•
•
les instructions arithmétiques et logiques,
les instructions de branchement (conditionnel ou non),
les instructions de chargement et de rangement d'une donnée en mémoire.
6 formats sont utilisés pour coder ces instructions. On dispose en tout de 35 instructions.
11
Format 1 : instruction de chargement du poids fort d'une constante
0
0
uimm11
rd
Mnémonique
Codage
Opération
Exemple
lih rn,uimm11
rd=n
rn <- uimm11
lih r2,0x7FF
Format 2 : instructions de branchement inconditionnel
0 1
0
simm11 AA 00
Mnémonique
Codage
Opération
Exemple
b simm11
AA=0
pc <- pc + (1 + simm11)
b -16
ba simm11
AA=1
pc <- simm11
ba 0x0004
Format 3 : instructions de branchement conditionnel
0 1 1 0
cond
simm9
Mnémonique
Codage
Opération
Exemple
beq simm9
cond=000
si (rcc[z] == 1) pc <- pc + (1 + simm9)
beq -16
bne simm9
cond=001
si (rcc[z] == 0) pc <- pc + (1 + simm9)
bne 16
bge simm9
cond=010
si (rcc[z] == 1 ou rcc[n] ==0) pc <- pc + (1 + simm9) bge 16
bgt simm9
cond=011
si (rcc[z] == 0 et rcc[n] ==0) pc <- pc + (1 + simm9) bgt 16
ble simm9
cond=100
si (rcc[z] == 1 ou rcc[n] ==1) pc <- pc + (1 + simm9) ble 16
blt simm9
cond=101
si (rcc[z] == 0 et rcc[n] ==1) pc <- pc + (1 + simm9) blt 16
bvs simm9
cond=110
si (rcc[v] == 1) pc <- pc + (1 + simm9)
ble 16
bvc simm9
cond=111
si (rcc[v] == 0) pc <- pc + (1 + simm9)
blt 16
Format 4 : instructions arithmétiques, logiques et chargement / rangement
1 0 0
Codop rs2 rs1 rd
Mnémonique
Codage
Opération
Exemple
add rd,rs1,rs2
Codop=0100
rd <- rs1 + rs2
add r3,r4,r3
add. rd,rs1,rs2
Codop=0101
rd <-rs1 + rs2 + C ; rcc modifié
add. r3,r4,r3
sub rd,rs1,rs2
Codop=0000
rd <- rs1 - rs2
sub r0,r2,r2
sub. rd,rs1,rs2
Codop=0001
rd <-rs1 - rs2 + C ; rcc modifié
sub. r0,r3,r4
and. rd,rs1,rs2
Codop=0111
rd <- rs1 & rs2
and. r3,r2,r1
or rd,rs1,rs2
Codop=0110
rd <- rs1 j rs2
or r2,r3,r4
ldx rd,(rs1+rs2)
Codop=1000
rd <- Mem[rs1+rs2]
ldx r2,(r3+r4)
stx (rs1+rs2),rd
Codop=1001
Mem[rs1+rs2] <- rd
stx (r2+r1),r1
ldbx rd,(rs1+rs2)
Codop=1010
rd <- Mem[rs1+rs2] & 0x00ff
ldbx r2,(r3+r4)
ldsbx rd,(rs1+rs2)
Codop=1101
rd <- exts(Mem[rs1+rs2] & 0x00ff)
ldsbx r2,(r3+r4)
stbx (rs1+rs2),rd
Codop=1011
Mem[rs1+rs2] <- rd & 0x00ff
stbx (r2+r1),r1
12
Format 5 : instructions arithmétiques, logiques et chargement / rangement
1 Codop simm5/uimm5 rs1 rd
Mnémonique
Format
Opération
Exemple
addi rd,rs1,simm5
Codop=0100
rd <- rs1 + simm5
addi r3,r3,1
addi. rd,rs1,simm5
Codop=0101
rd <- rs1 + simm5 + C ; rcc modifié
addi. r4,r5,2
andi. rd,rs1,simm5
Codop=0111
rd <- rs1 & simm5
andi. r4,r2,0xF
ori rd,rs1,uimm5
Codop=0110
rd <- rs1 | uimm5
ori r5,r6,0xA
ld rd,(rs1+simm5)
Codop=1000
rd <- Mem[rs1+simm5]
ld r8,(r5+0)
st (rs1+simm5),rd
Codop=1001
Mem[rs1+simm5] <- rd
st (r0+12),r4
ldb rd,(rs1+simm5)
Codop=1010
rd <- Mem[rs1+simm5] & 0x00ff
ldb r8,(r5+0)
ldsb rd,(rs1+simm5)
Codop=1101
rd <- Mem[rs1+simm5] & 0x00ff
ldsb r8,(r5+0)
stb (rs1+simm5),rd
Codop=1011
Mem[rs1+simm5] <- rd & 0x00ff
stb (r0+17),r4
Format 6 : instructions de décalage
1 1 1 1 type uimm4 rs1 rd
Mnémonique
Format
Opération
Exemple
lsl rd,rs1,uimm4
type=00
rd <- rs1 << uimm4
lsl r3,r3,1
rol rd,rs1,uimm4
type=01
rd <- rs1 << uimm4 ; les bits de poids faible
reçoivent les bits de poids fort éjectés
rol r4,r3,15
lsr rd,rs1,uimm4
type=10
rd <- rs1 >> uimm4
lsr r1,r1,3
asr rd,rs1,uimm4
type=11
rd <- rs1 >>uimm4 ; les bits de poids fort sont
comblés avec le bit de signe
asr r2,r3,4
13
Université de Bretagne Occidentale - UFR Sciences - Département d’Informatique
Licence 1ère année (S1), Parcours 1
Introduction à l’Informatique
TD n°3 et n°4
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 Z  Y / 3
Z  Y - Z
Z  Z + X X  (Y - X)
Y  (X + Z)
Afficher (X,
Fin
X
Y
* Z
* Y
Y, Z)
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 *
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.
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.
14
Exercice 3
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 4 *
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 5 *
Ecrire un algorithme qui permet de dessiner la figure ci-dessous (Remarque : le dessin
ci-dessous n’est pas à l’échelle).
(0,0)
100
x
100
y
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 6 *
1. Ecrire un algorithme qui lit deux nombres puis qui affiche le plus grand des deux.
2. 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.
3. Ecrire un algorithme qui demande à l’utilisateur trois nombres et les affiche ensuite
dans l’ordre croissant. On supposera ici que les trois nombres sont deux à deux
différents.
4. 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.
15
5. 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 7
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.
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 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
A partir de 3 couples (note, coefficient), calculer la moyenne obtenue par un élève. On
vérifiera que les notes sont bien comprises en 0 et 20.
Si la moyenne est inférieure à 5, afficher un avis « nul », comprise en 5 et 10, afficher un avis
« insuffisant », comprise entre 10 et 14, afficher un avis « bien », supérieure à 14, afficher un
avis « très bien ».
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.
Force du vent = 0
Force du vent = 1
Force du vent = 2
Force du vent = 3
Force du vent = 4
Force du vent = 5
Direction comprise
entre 0 et 45°
Moteur
Moteur
Moteur
Moteur
Moteur
Moteur
Direction comprise
entre 45 et 130°
Moteur
Moteur
Grand Voile + Génois
Grand Voile + Génois
Grand Voile + Génois
Grand Voile + Génois
Direction comprise
entre 130 et 180°
Moteur
Moteur
Grand Voile + Spi
Grand Voile + Spi
Grand Voile + Spi
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 ?
3
Direction du vent par rapport à la route ?
75
Vous devez utiliser : Grand Voile + Génois.
 Question à l’utilisateur
 Réponse de l’utilisateur
 Question à l’utilisateur
 Réponse de l’utilisateur
 Affichage du résultat
16
Université de Bretagne Occidentale - UFR Sciences - Département d’Informatique
Licence 1ère année (S1), Parcours 1
Introduction à l’Informatique
TD n°5, 6 et 7
Itérations (boucle Pour et Tant que) 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
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
…
Exercice 3 * – 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 4 * – 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).
17
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.
3. Modifier l’algorithme calculer les termes de la suite de Fibonacci, mais sans utiliser de tableau.
Exercice 6 – 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 7 * – 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 8 * – 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 9 * – 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.
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.
18
Exercice 10 – 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], tableau que l’on supposera pré-rempli.
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 11 – 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.
19
Université de Bretagne Occidentale - UFR Sciences - Département d’Informatique
Licence 1ère année (S1), Parcours 1
Introduction à l’Informatique
TD n°8
Tableaux, chaines et récursivité
Exercice 1 * – 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 2 * – 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 3 *
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.
Exemple :
12 150 27 200 250 252 45
46 112 24 13 250 248 44
12 10 100 45 12 110 100
24 14 250 248 0 127 127
24 13 250 248 65 53 59
100 45 12 110 32 50 100
127 0
0 127 0 127 127
59 60 66 13 66 13 59
43
40
45
0
60
45
0
60
devient donc (résultat partiel)
80
15
…
…
66
…
…
…
250
…
50
…
43
…
…
…
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
250x250 cases.
20
Exercice 4 – graphisme et appel de fonctions récursives
On souhaite dessiner la figure ci-contre.
Le principe est de dessiner d’abord un premier triangle, puis de redessiner dans chaque triangle, sauf
celui du milieu la même figure. On obtient la suite de dessins ci-dessous
Les triangles, isocèles, seront définis par les coordonnées du sommet supérieur (xA, yA), la hauteur
issue de ce même sommet (h) et la largeur de la base (b).
A
MAC
MAB
B
xB = xA – b/2,
xC = xA + b/2,
xMBC = xA,
xMAB = xA – b/4,
xMAC = xA + b/4,
MBC
yB = yA + h
yC = yA + h
yMBC = yA +h
yMAB = yA + h/2
yMAC = yA + h/2
C
Construire l’algorithme de la fonction TrianglesImbriques (xA, yA, h, b, p), avec p la profondeur du
dessin : cette fonction permet d’abord le dessin du triangle A-B-C, puis des triangles A-MAB-MAC,
MAB-B-MBC, MAC-MBC-C. Elle se conclut, si la profondeur n’est pas égale à 0, à son « autoappel », pour être appliquée dans les 3 triangles précédement construits, avec décrémentation de p.
Remarque : on supposera disponible une fonction dessine_triangle(xA, yA, xB, yB, xC, yC).
21
Université de Bretagne Occidentale - UFR Sciences - Département d’Informatique
Licence 1ère année (S1), Parcours 1
Introduction à l’Informatique
TD n°9
Introduction aux bases de données
Gestion d'une bibliothèque municipale
Une bibliothèque municipale possède une collection de 6 000 ouvrages. Afin d'en faciliter la gestion, elle
propose de stocker l'ensemble de ses livres dans une base de données.
En tant qu'ingénieur en informatique, vous avez pour tâche de concevoir cette base de données.
Voici les informations (cahier des charges préliminaire) que vous fournit la bibliothèque municipale :
-
le budget est de 12 000 euros
le nombre de livres est d'environ 6 000 et c'est un employé de la bibliothèque municipale qui remplira,
au fur et à mesure la base,
chaque livre devra être repéré de manière unique par son code ISBN (lettres + chiffres),
un livre peut avoir été écrit par plusieurs auteurs,
un livre peut appartenir à plusieurs catégories (sciences, roman, enfant, BD...),
un livre doit pouvoir se repérer physiquement rapidement car il se trouve dans une salle particulière
(Salle 1 à Salle 4) et sur un rayonnage spécifique (Rayonnage 1 à Rayonnage 50)
la base de données a vocation à être utilisée en intranet.
Exercice 1 *
Étant donné les informations données par la bibliothèque municipale, quelle base de données libre ou du
commerce est adaptée à cette problématique.
Exercice 2 *
Créer une table livres permettant de mémoriser les titres des livres, leur numéro ISBN, leur date d'édition, le
nombre de pages, un bref résumé (champ de type mémo), le numéro de la pièce et le numéro du rayonnage.
a) Indiquer le type de chacun des champs.
b) Indiquer si un champ est une clé.
Exercice 3 *
Deux nouveaux points sont souhaités par la bibliothèque municipale dans son cahier des charges final :
• elle désire avoir une table contenant des informations sur les auteurs et que ces auteurs soient identifiés
de manière unique (sans doublons),
• de même, elle désire avoir une table contenant des informations sur les catégories (roman, théâtre,
science-fiction, aventure...) et que ces catégories soient également identifiées de manière unique.
Il faut donc créer deux nouvelles tables :
• la table auteurs, qui contient l'identifiant unique d'un auteur (un simple numéro), son nom, son prénom,
sa date de naissance, sa date de décès éventuelle et un résumé de sa vie,
• la table catégories, qui contient l'identifiant unique d'une catégorie (un simple numéro), le nom de la
catégorie et un descriptif de la catégorie.
a)
Créer ces deux tables
22
Exercice 4 *
Deux tables sont encore nécessaires pour répondre au cahier des charges : la table auteurs-livres et la table
catégories-livres.
a) Créer ces deux tables de jointure pour que :
• un livre soit associé à plusieurs auteurs et à plusieurs catégories
• une catégorie soit associée à plusieurs livres
• un auteur soit associé à plusieurs livres
Remarque : les tables de jointure (Catégories-Livres et Auteurs-Livres) auront une seule clé associée à
deux champs simultanément.
Il est maintenant nécessaire de relier les tables.
b) Relier les 5 tables de la base de données.
c) Indiquer le type de chacune des relations explicites mise en place.
d) Quel type de relation est implicitement réalisé entre la table Livres et la table Auteurs ainsi qu'entre la
table Livres et la table Catégories ?
Exercice 5 *
Remplir la base avec les informations suivantes :
• Jules Verne (8/2/1828 à 24/3/1905), auteur de science-fiction a écrit les romans suivants : De la Terre à
la Lune, Voyage au centre de la Terre.
• Isaac Asimov (2/1/1920 à 6/4/1992), auteur de science-fiction a écrit les romans suivants : Les robots,
Fondation, Terre et Fondation.
• William Shakespeare (23/4/1564 à 23/4/1616), auteur de pièces de théâtre a écrit : Hamlet, Roméo et
Juliette, Le songe d'une nuit d'été.
• Victor Hugo (26/2/1802 à 22/5/1885), écrivain romantique (entre autre), auteur de : Notre-Dame de
Paris, Les Misérables.
NB : on pourra tracer un tableau des enregistrements par table. Pour rappel, les titres des colonnes sont les
champs et les lignes sont les enregistrements, c'est à dire les données stockées.
Exercice 6 *
Votre base de données répond maintenant au cahier des charges final quant à sa structure et contient quelques
données qui ont permis de la valider. Il faut maintenant permettre à l'employé de la bibliothèque municipale de
saisir les données de manière pratiques.
a)
b)
Quels sont les formulaires (avec éventuellement des sous formulaires) à développer pour permettre
une saisie rapide et rigoureuse des données ? Dessiner ces formulaires.
Dans quel ordre doivent être remplis les formulaires ?
Exercice 7 *
Écriture de requêtes SQL.
a)
b)
c)
Il est demandé maintenant d'écrire une requête SQL permettant de retrouver tous les auteurs nés au
XIXème siècle.
Donner la requête SQL permettant de classer tous les auteurs par leur date de naissance.
Donner la requête SQL permettant de retrouver tous les livres d'un auteur. Pour l'exemple, nous
prendrons le nom Hugo.
23
Université de Bretagne Occidentale - UFR Sciences - Département d’Informatique
Licence 1ère année (S1), Parcours 1
Introduction à l’Informatique
TP n°1
Introduction aux TPs et Circuits logiques
L’objectif de ce TP est multiple. Il s’agit d’abord de se familiariser avec un micro-ordinateur de type
PC et son système d’exploitation Windows 7 et ensuite de découvrir un logiciel permettant la
simulation de circuits logiques.
1. Découverte de la machine
1.1 Ouverture d’une session
Pour pouvoir utiliser le PC, il faut ouvrir une session. Pour cela, il faut s’identifier auprès de
l’ordinateur comme étant un utilisateur autorisé. La marche à suivre est la suivante :
-
Appuyez simultanément sur les touches Ctrl, Alt et Suppr. Puis, cliquez sur Changer
d’utilisateur et sur l’icône Autre utilisateur.
Entrez le nom d’utilisateur et le mot de passe qui vous a été attribué individuellement par le
département d’Informatique, puis validez en cliquant sur la flèche (ou touche Entrée).
Patientez un peu, la première connexion est un peu lente…
On se retrouve alors sous l’interface graphique de Windows, avec en bas une barre de menus et
à gauche un ensemble d’icônes. Les icônes permettent d’accéder à un ensemble d’outils
logiciels ou de périphériques. Une fenêtre apparait également, que vous pouvez fermer en
cliquant sur la croix rouge, en haut à droite.
En bas à gauche, vous trouverez l’icône de Window. Cliquez dessus avec le bouton de gauche puis,
cliquez sur Ordinateur. Nous allons à présent étudier la manipulation de cette fenêtre.
1.2 Manipulation de fenêtres : exemple de l’explorateur de fichiers
La figure 1 présente la forme générale d’une fenêtre.
Celle-ci comprend un bandeau (qui contient généralement le titre de la fenêtre) et trois boutons (en
haut à droite) qui permettent respectivement de réduire la fenêtre, de la maximiser (mode plein écran)
ou de la fermer. Lorsque la fenêtre est en mode plein écran, le bouton du milieu permet de rendre à la
fenêtre sa taille initiale.
Le redimensionnement d’une fenêtre s’effectue à l’aide de la poignée de redimensionnement (mettre la
souris sur un des quatre coins) ou bien à l’aide de la bordure de la fenêtre (mettre la souris sur un des 4
cotés).
Le déplacement de la fenêtre se fait grâce au bandeau.
Expérimenter ces diverses fonctionnalités sur la fenêtre ouverte.
D’autres fonctionnalités permettent de modifier la présentation du contenu (ou corps) de la fenêtre. Il
est ainsi possible d’afficher les objets sous forme d’icônes ou de listes triées plus ou moins détaillées.
24
Tester ces différentes possibilités.
Figure 1 : Explorateur Windows
1.3 Arborescence de répertoires et de fichiers
Deux grandes classes d’informations doivent être stockées :
- les données du système, en particulier les différents outils disponibles et les informations de
configuration de la machine,
- les données des utilisateurs de la machine, par exemple les programmes qu’ils ont développés
ou les documents qu’ils ont tapés.
Toutes ces données peuvent être stockées, soit sur le disque dur de la machine, soit sur une clé USB.
En règle générale, les données sont placées sur le disque dur. Etant donné que les ordinateurs sont
utilisés par plusieurs étudiants, il est recommandé d’enregistrer les données personnelles (documents,
programmes visual basic…) sur une clé USB ou dans votre dossier personnel qui se retrouve à
l'identique sur tous les PC. Il est nommé licXXXX(\\vador)(H:), et se trouve dans la partie
emplacement réseau.
Les données sont stockées sous forme de fichiers. Un fichier contient par exemple un programme, un
ensemble de paramètres de configuration, une photographie… Tous ces fichiers doivent être organisés
de manière à pouvoir retrouver rapidement des données. Pour cela, on applique les deux principes
suivants :
- le nom associé à chaque fichier doit identifier clairement son contenu (éviter toutefois les
accents, les espaces et autres caractères spéciaux),
- Les fichiers sont rangés dans des répertoires (dossiers).
25
Un répertoire est l’équivalent d’un classeur dans lequel on range des fiches (les fichiers) et
éventuellement d’autres répertoires (d’autres classeurs).
Attention, les dossiers Documents, Images, Musiques etc. sont locaux à une machine. Evitez donc de
stocker de l’information dans ces emplacements. Pour un accès facile à votre dossier personnel, créez
un raccourci vers votre bureau. Cliquez, avec le bouton de droite sur licXXXX(\\vador)(H:), puis
sélectionnez créez un raccourci. Une icône supplémentaire apparait alors sur le bureau. En cliquant
dessus avec le bouton de droite vous pouvez le renommer, par exemple ainsi : licXXXX sur vador.
Vous pouvez également faire glisser l’icône dans la colonne liens favoris de l’explorateur de fichier.
Double-cliquez sur l’icône que vous venez de créer pour voir vos fichiers personnels.
1.3 Création et suppression de répertoires
Pour créer un nouveau répertoire, on utilise l’explorateur vu au paragraphe précédent. Il suffit de
sélectionner le répertoire dans lequel la création doit être effectuée, puis d’utiliser le bouton Nouveau
dossier (Figure 2). Le nouveau répertoire apparaît alors et il suffit de saisir son nom au clavier.
Figure 2 : création d'un répertoire (ou dossier)
Créer un répertoire TP1 et un répertoire Essai sur le disque dur dans votre répertoire personnel
licXXXX(\\vador)(H:).
Pour supprimer un répertoire ou un fichier, il suffit, sous l’explorateur, de le sélectionner puis d’utiliser
l’option supprimer du menu fichier.
Supprimer un répertoire Essai que l’on aura au préalable créé dans votre dossier.
1.4 Menu démarrer
Le menu Démarrer est accessible depuis l’icone Windows située en bas à gauche de votre écran. Il
permet, dans sa partie gauche d’accéder aux divers logiciel présents sur votre ordinateur. Il propose
des accès rapide à certaines applications et des accès spécifiques en cliquant sur Tous les programmes.
Lancer le programme Firefox en cliquant sur Tous les programmes -> Mozilla Firefox
Pour les logiciels que vous utilisez souvent, pensez à créer des raccourcis sur votre Bureau.
26
1.5 Navigation sur internet
Nous avons vu que l’outil explorateur windows permet de naviguer dans les répertoires des différents
disques (clé USB, disque dur, CD, DVD…). L’outil FireFox, quant à lui, permet de naviguer dans les
différents sites web présents sur internet. On peut également utiliser Internet Explorer.
Un site web contient des fichiers et des répertoires. La plupart des fichiers contenus dans un site web
sont au format HTML. Il s’agit d’un format permettant d’afficher entre autres, du texte, des images, des
animations et des hyper-liens. Un hyper-lien permet de naviguer parmi les pages HTML de façon
pratique pour l’utilisateur.
L’accès à Internet nécessite la configuration de votre navigateur. Pour Firefox, cliquez sur l’icone en
haut à droite (3 barres horizontales) puis Options. Vous devez avoir l’affichage présenté figure 3.
Cliquez sur Avancé, puis Réseau puis Paramètres. Une nouvelle fenêtre apparait. Remplissez les
champs comme indiqué sur la figure 4.
Figure 3 : options de Firefox
27
Figure 4 ; configuration du proxy
Vous pouvez maintenant accéder à Internet. Par exemple, dans la zone de saisie de l’adresse web, taper
http://www.qwant.com.
Figure 5 : fenêtre de l’outil FireFox. Ici elle est sur le site de recherche www.qwant.com.
28
Trouver le site du département d’Informatique, en tapant dans la barre de recherche de Qwant,
Informatique UBO Brest. Cliquer alors sur le lien qui mène au site du département d’Informatique. Ce
site vous donne des informations générales sur les études en informatique à l’UBO. Parcourez-le pour
trouver la fiche descriptive du cours du parcours de Licence Informatique parcours International.
A partir de ce site vous pouvez également accéder à l’Intranet du département d’informatique en
cliquant sur accès restreints. L’accès étant restreint, vous devez donc taper votre nom d’utilisateur et
votre mot de passe de l’ENT (qui sont différents des noms d’utilisateur et mots de passe que vous avez
saisi pour vous connecter). Consultez alors le contenu du cours d’introduction à l’informatique
(rubrique Pédagogie), et les pages Tout, absolument tout, pour les nouveaux arrivants... et la FAQ des
étudiants (rubrique Système).
2. Circuits logiques
2.1 Découverte du logiciel DigSim (Digital Simulateur)
DigSim permet de simuler le fonctionnement de circuits logiques (portes ET, OU, NON)
En utilisant l’explorateur Windows (menu démarrer, puis choisir Ordinateur), accéder au dossier
J:\enseignants\leparc\digsim\classes. Puis, pour lancer le logiciel, double-cliquez sur LancerDigSim.
N’hésitez pas à faire un raccourci vers votre bureau.
Dans DigSim, créer un nouveau circuit vide en sélectionnant Nouveau dans le menu Fichier.
Commencer par créer un circuit élémentaire permettant d'allumer ou d'éteindre une lumière à l'aide :
d'un commutateur (interrupteur)
d'une alimentation (pile, batterie...)
d'une DEL (Diode ElectroLuminescente = lumière)
de fil électrique (câblage)
Attention : les composants doivent être parfaitement placés les uns avec les autres, c'est à dire placés
bout à bout. Les fils de doivent pas se chevaucher mais ils peuvent se croiser.
2.2 Réalisation de petits circuits logiques
Exercice 1
1) A l'aide d'une porte ET réaliser un circuit n'allumant une LED que si 2 commutateurs sont
enclenchés.
2) Copier le circuit précédent et le coller en dessous. Remplacer la porte ET par une porte OU.
29
Exercice 2
Le OU EXCLUSIF (XOR) est une porte logique à 2 entrées et 1 sortie. La sortie est à 1 si et seulement
si une seule des entrée est à 1. Si A et B sont les 2 entrées du XOR, la sortie S est décrite comme suit :
S = (A + B).(~A + ~B)
Rappel : l'opérateur NON (noté ~ ) est prioritaire sur l'opérateur ET (noté . ) qui lui même est
prioritaire sur l'opérateur OU (noté + ).
1) Réaliser le circuit logique correspondant et en vérifier le bon fonctionnement.
2) Réaliser le circuit logique XOR équivalent au premier est donné par : S = (A+B).(~(A.B))
3) De même réaliser le circuit équivalent : S = (A.~B) + (~A.B)
4) Une autre manière d'avoir le XOR est : S = ~( (A.B) + (~A.~B) ).
Exercice 3
Réaliser le demi-additionneur vu en cours :
Exercice 4
1) Réaliser l'additionneur complet vu en cours :
2) Réaliser alors un additionneur 4 bits.
30
Université de Bretagne Occidentale - UFR Sciences - Département d’Informatique
Licence 1ère année (S1), Parcours 1
Introduction à l’Informatique
TP n°2
Architecture
PixArchi est un logiciel qui permet de simuler une architecture de type RISC. Il se trouve dans le
répetoire J:\enseignants\leparc\PixArchi. Double-cliquez sur PixArchi pour le lancer.
L’écran de PixArchi se divise en trois parties. A gauche, on trouve un dessin des différents composants
de l’architecture, pour simuler les opérations pas à pas. A droite, de haut en bas, on trouve le contenu de
la mémoire, les registres, le code du programme qui sera exécuté. Il est possible de choisir la base
d’affichage des registres et de la mémoire, entre binaire, décimal ou hexadécimal.
Tout en bas se trouvent des boutons pour exécuter le simulateur. Le réveil permet de régler la vitesse de
simulation (plus le nombre est élevé plus la simulation est lente). Lorsque la simulation commence, le
programme est d’abord interprété et chargé en mémoire 1, puis exécuté. On utilisera le bouton “Step”
pour exécuter le programme pas `a pas, et “Next” quand on cherche `a exécuter rapidement un
programme (sans les animations).
Exercice 1 :
Lancer la démonstration de PixArchi (menu “Paramètres”, puis “Mode”, puis “Démonstration”) et lire
attentivement la notice.
Exercice 2 :
La correspondance entre l’assembleur et le langage machine est détaillée dans l’aide (choisir
“Sommaire”, puis “Références complètes de l’architecture RISC utilisée”). Une description de
l’architecture est également proposée dans le sujet du TD n°2.
A l’aide de cette aide, trouver le code machine sur 16 bits des instructions :
addi r1, r0, 15
ldx r3, (r0 + r1)
add r2, r3, r2
Exercice 3 :
Entrer (via le bouton ”Editer”) le programme ci-dessous (exercice 2 du TD n°2) et l’exécuter pas à pas, en
notant à chaque étape les éléments utilisés de l’architecture, et les registres modifiés.
addi r2, r1, 15
add r2, r3, r2
On utilisera le mode “Expert” pour pouvoir modifier les valeurs des registres et/ou de la mémoire avant
l’exécution du programme.
1
Noter que l’adresse de la nième ligne de programme est n-1 et non n.
31
Exercice 4 :
Saisir, et tester le programme ci-dessous (exercice 3 du TD n°2) dans PixArchi.
0)
1)
2)
3)
4)
5)
6)
7)
addi r1, r0, 0
addi r2, r0, 0
st (r2 + 15), r1
addi r2, r2, 1
add r1, r1, r2
addi. r3, r2, -6
bne -5
st (r2 + 15), r1
Modifier ce programme pour réaliser une multiplication (par exemple 4*5).
Modifier ce programme pour pouvoir réaliser une division (par exemple 17/5).
32
Université de Bretagne Occidentale - UFR Sciences - Département d’Informatique
Licence 1ère année (S1), Parcours 1
Introduction à l’Informatique
TP n°3 et 4
Introduction à Visual Basic
Variables, séquences et conditionnelles simples
1. Découverte de Visual Basic .NET
0B
1.1 Généralités
3B
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.
Le développement d’un programme en VB (Visual Basic), comprend les étapes suivantes :
12345-
écriture de l’algorithme (le programme) en visual basic,
correction des erreurs de frappe,
sauvegarde sur disque du code source,
exécution et test du programme,
correction des erreurs d’exécution
Ces étapes sont résumées par l’organigramme ci-dessous :
Saisie du programme
oui
Erreur de
saisie ?
non
Sauvegarde
Exécution
Erreur à
l’exécution
?
oui
non
Fin
Pour bien illustrer la démarche à suivre, nous allons mettre au point un programme permettant
de convertir la vitesse du vent.
33
1.2 Exécution de Visual Basic
4B
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.
34
Pour créer un programme en Visual Basic, il faut cliquer sur Fichier  Nouveau Projet
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.
Dans la suite du TP nous complèterons cette fenêtre en lui ajoutant un bouton d'action.
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.
35
Exercice 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 :
5BU
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 :
36
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.
6BU
37
Exercice 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.
Exercice 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 :
7BU
MsgBox("La vitesse du vent en noeuds est de " & v / 1.85)
Exercice 4
Nous allons encore plus loin car nous allons modifier le programme pour qu'il affiche les
résultats en Beaufort (l'échelle Beauforts 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 :
8BU
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
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.
38
Echelle de Beaufort :
Nombre
de
Beaufort
Terme
générique
Vitesse du vent à 10 m
de hauteur
Que se passe-t-il au
large ?
(degré)
0
(descriptif)
Calme
en km/h
en noeuds
moins de 1 moins de 1
(remarques)
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
9
Fort coup de
vent
75 à 87
41 à 47
lames de hauteur
moyenne ; de leurs crêtes
se détachent des
tourbillons d'embruns
grosses lames ; leur crête
s'écroule et déferle en
rouleaux
10
Tempête
88 à 102
48 à 55
11
Violente
tempête
103 à 117
12
Ouragan
plus de
118
très grosses lames à
longues crêtes en
panache ; déferlement en
rouleaux intense et brutal
56 à 63
lames exceptionnellement
hautes ; mer recouverte
de bancs d'écume
blanche
plus de 64
air plein d'écume et
d'embruns ; mer
entièrement blanche ;
visibilité très réduite
39
Exercice 5
9BU
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 = …
1.3 Exécution pas à pas du programme
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.
Pour se 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.
1B
40
2 Introduction au graphisme
Exercice 6
10BU
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. Renommez ce panel : zoneDessin (Fenêtre Propriétés – (Name)). Par défaut le
premier panel se nomme panel1.
6. Agrandissez le panel zoneDessin pour obtenir une taille 400x400 (Fenêtre
Propriétés – Size)
7. Changez la couleur du panel zoneDessin (Fenêtre Propriétés – BackColor)
8. Sauvegardez votre travail (Fichier  Enregistrer tout)
9. 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 = zoneDessin.CreateGraphics
End Sub
End Class
10. Tester
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. Changer son label (Dessin) : (Fenêtre Propriétés – Text)
5. Double cliquer sur le bouton BDessin. Ajouter au code les instructions suivantes :
g.FillRectangle(Brushes.White, 100, 100, 100, 100)
g.FillEllipse(Brushes.Black, 100, 100, 100, 100)
g.FillRectangle(Brushes.White, 150, 100, 50, 100)
g.FillEllipse(Brushes.White, 125, 100, 50, 50)
g.FillEllipse(Brushes.Black, 125, 150, 50, 50)
g.DrawEllipse(Pens.Black, 100, 100, 100, 100)
g.FillEllipse(Brushes.Black, 145, 120, 10, 10)
g.FillEllipse(Brushes.White, 145, 170, 10, 10)
6. Sauvegarder votre travail
7. Tester.
8. Modifier le programme pour que le dessin s’affiche en 2 fois plus grand, au point
d’origine (100, 250).
41
3 Exercices complémentaires
2B
Exercice 7 – Tetris – fonctions de base
1BU
Ouvrir un nouveau projet nommé Tetris. Ajouter une zone de dessin de 200x400, ainsi que
deux boutons nommés carrés et carrés alignés.
L’appui sur le bouton carrés alignés doit permettre la création d’une suite de 4 carrés
alignés de taille 18x18, espacés de 2, avec le premier carré ayant pour origine supérieure
gauche (21,21)
L’appui sur le bouton carrés doit permettre la création d’une suite de 4 carrés de taille
18x18, espacés de 2, avec le premier carré ayant pour origine supérieure gauche (21,61) et
formant un carré.
Exercice 8
12BU
Ecrire un programme Visual Basic permettant, pour un sportif, le calcul et l’affichage de sa
fréquence cardiaque maximum ainsi que sa fréquence cardiaque d’entrainement.
La fréquence cardiaque maximum (FM) est calculée en fonction de l’âge du sportif :
FM = 220 – age
La fréquence d’entraînement (FE) correspond au 3/4 de la fréquence maximum :
FE = FM * 0.75
L’affichage se fera à l’aide de Label ou de MsgBox. (On peut aussi faire les deux pour
s’entrainer).
Exercice 9
13BU
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 10
14BU
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éé, cliquez dessus et consultez la fenêtre des propriétés (en
général, elle se situe en bas à droite).
42
Cliquez sur le symbole représentant un éclair de couleur jaune. Une liste déroulante apparaît,
double-cliquez sur MouseClick.
Vous devez normalement vous trouver dans une zone de code similaire à celle-ci :
Private
Sub
Panel1_MouseClick(sender
As
System.Object,
System.Windows.Forms.MouseEventArgs) Handles Panel1.MouseClick
e
As
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,
System.Windows.Forms.MouseEventArgs) Handles Panel1.MouseClick
e
As
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 click 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).
43
ANNEXE : syntaxe des structures de contrôle
Structures
Langage algorithmique (français)
Si condition alors
Traitement
Fin si
Langage Visual Basic
If condition then
Traitement
End if
Si condition alors
Traitement 1
Sinon
Traitement 2
Fin si
If condition then
Traitement 1
Else
Traitement 2
End if
Cas
Condition 1→ traitement 1
Condition 2→ traitement 2
…
Autre → traitement n
Fin cas
Conditionnelles
Cas
Select Case x
Case ‘a’
x = ‘a’ → traitement 1
x = ‘c’ → traitement 2
…
autre → traitement n
Fin cas
Tant que condition faire
Traitement
Fin tant que
Pour x allant de 0 à 9
Traitement
Fin pour
Afficher « Bonjour »
Afficher x
Afficher « La valeur de x est : », x
x ← lire « Valeur de x ? »
x ← 10
x ← (a + b) . c / 102
‘ Ceci est un commentaire
While condition
Traitement
End While
For x=0 to 9
Traitement
Next x
MsgBox (« Bonjour »)
MsgBox x
MsgBox (« Bonjour » & x)
x = InputBox (« Valeur de x ? »)
x = 10
x = (a + b) * c / 10^2
‘ Ceci est un commentaire
Répéter
Affectation
Commentaires
Traitement 2
…
Case Else
Traitement n
End Select
Traitement
Jusqu’à condition
x = 1 ou 2
→ traitement 1
x entre 5 et 10 → traitement 2
…
Autre → traitement n
Fin cas
Interactives
Traitement 1
Case ‘c’
Select Case x
Case 1, 2
Traitement 1
Case 5 to 10
Traitement 2
…
Case Else
Traitement n
End Select
Do
Traitement
Loop until condition
Cas
Itératives
If condition 1 then
Traitement 1
Elseif condition2 then
Traitement 2
…
Else
Traitement n
End if
44
Université de Bretagne Occidentale - UFR Sciences - Département d’Informatique
Licence 1ère année (S1), Parcours 1
Introduction à l’Informatique
TP n°5 et 6
Itérations (boucle Pour et Tant que) et tableaux
Exercice 1 – calcul de moyenne – boucle pour et tantque
1. 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.
2. Ecrire un deuxième programme permettant de calculer la moyenne d’une suite de notes terminées par
-1 (exemple : 12, 10, 14, 16, -1….. moyenne de 13).
3. 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 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 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 4 – 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.
45
Exercice 5 – 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.
1.
2.
Proposer un algorithme en supposant que la valeur V est dans le tableau.
Proposer un algorithme en supposant que la valeur V est peut-être dans le tableau.
46
Université de Bretagne Occidentale - UFR Sciences - Département d’Informatique
Licence 1ère année (S1), Parcours 1
Introduction à l’Informatique
TP n°7 et n°8
Exercice 1
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
C
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.
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.
47
Exercice 2 – 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 a 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)
masouchaine = machaine.substring(2,3)
•
•
•
‘ retourne la valeur 7
‘ 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».
48
Exercice 3 – appel de fonctions récursives
On souhaite dessiner la figure ci-dessous.
Le principe est de dessiner d’abord un premier triangle, puis de redessiner dans chaque triangle,
sauf celui du milieu la même figure. On obtient la suite de dessins ci-dessous
Les triangles, isocèles, seront définis par les coordonnées du sommet supérieur (xA, yA), la
hauteur issue de ce même sommet (h) et la largeur de la base (b).
A
MAC
MAB
B
xB = xA – b/2,
xC = xA + b/2,
xMBC = xA,
xMAB = xA – b/4,
xMAC = xA + b/4,
MBC
yB = yA + h
yC = yA + h
yMBC = yA +h
yMAB = yA + h/2
yMAC = yA + h/2
C
49
L’algorithme repose sur une fonction Dessine_triangle (xA, yA, h, b, g, p), avec g la référence de
la zone de dessin et p la profondeur du dessin.
Cette fonction permet d’abord le dessin du triangle A-B-C, puis des triangles A-MAB-MAC,
MAB-B-MBC, MAC-MBC-C. Elle se conclut, si la profondeur n’est pas égale à 0, à son « autoappel », pour être appliquée dans les 3 triangles précédemnt construits, avec décrémentation de p.
Remarque :on construira la fonction ci-dessous pour dessiner un triangle.
Public Sub FillTriangle(ByVal couleur As System.Drawing.Brush, ByVal xa As
Integer, ByVal ya As Integer, ByVal xb As Integer, ByVal yb As Integer, ByVal
xc As Integer, ByVal yc As Integer, ByVal g As Graphics)
Dim points(2) As System.Drawing.Point
points(0) = New Point(xa, ya) 'Top Left of Trapezoid
points(1) = New Point(xb, yb) 'Top Right of Trapezoid
points(2) = New Point(xc, yc) 'Bottom Right of Trapezoid
g.FillPolygon(couleur, points)
End Sub
Exercice 4 – Tetris suite
Modifier le programme Tetris réalisé lors des TPs précédents afin de :
1. Dessiner un quadrillage : lignes verticales de longueur 400 aux points d’abscisse 0, 20,
40, … 200 et lignes horizontales de longueur 200 aux points d’ordonnée 0, 20, 40, …
380, 400.
2. Définir un tableau à deux dimensions, nommé Mazone, représentant de manière interne
chaque case du quadrillage. On initialisera ce tableau afin que la colonne la plus à gauche,
la colonne la plus à droite et la ligne inférieure aient des valeurs égales à -1, et que les
autres cases du tableau aient des valeurs égales à 0
3. Remplir le quadrillage avec des carrés de couleur rouge, pour les valeurs du tableau
Mazone égales à -1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
Résultat question 1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
-1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
-1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
-1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
-1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
-1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
-1
Tableau Mazone
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
-1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
Résultat question 3
4. On souhaite manipuler un objet en forme de T. Ses coordonnées [(x0, y0) ; (x1, y1) ; (x2,
y2) ; (x3, y3)] seront stockées dans un tableau nommé MonObjet. Initialiser ce tableau et
50
construisez une fonction permettant de dessiner l’objet à l’emplacement indiqué cidessus.
5. Rajoutez à votre interface deux boutons permettant de déplacer l’objet en forme de T vers
la gauche ou la droite. Attention, il vous faudra construite une fonction permettant
d’effacer l’objet et vous devrez également faire en sorte que votre objet reste dans la zone
de jeu (la zone bleue)
6. Ajoutez ensuite un événement « Timer », permettant la descente régulière de l’objet.
Vous devrez utiliser les deux instructions suivantes pour spécifier la durée du « Timer »
et l’activer.
a. Timer1.Interval = 1000
b. Timer1.Enable = True
7. Il ne reste plus qu’à gérer la dépose des objets, et l’élimination des lignes complètes.
51
Université de Bretagne Occidentale - UFR Sciences - Département d’Informatique
Licence 1ère année (S1), Parcours 1
Introduction à l’Informatique
TP n°9
Introduction aux bases de données
Lancer ACCESS : Menu Démarrer=> Microsoft Office ACCESS
(ou bien : Menu Démarrer=>Tous les programmes=>Microsoft Office-> Microsoft Office ACCESS)
La fenêtre principale de la base apparaît alors :
Cliquer sur le bouton Office (bouton rond en haut à gauche) puis sur la commande Nouveau.
Puis, nommer votre base Bibliothèque (à droite de la fenêtre principale) :
Cliquer ensuite sur Créer pour créer la base de données.
Par défaut, la fenêtre permettant de saisir le contenu des tables apparaît :
52
Exercice 1
Pour passer en mode création, il faut cliquer sur le bouton Affichage (en haut à gauche) et
choisir l’icône Création :
Commencer par nommer la table en « Livres » (par défaut, le nom est « Table1 »).
NB : Par la suite, vous créerez toujours les tables en mode Création. Lorsque vous souhaiterez saisir le
contenu des tables (les données, appelées aussi les enregistrements), il faudra choisir le mode Feuille de
données (onglet Accueil, bouton Affichage).
Créer la table selon le modèle suivant :
Pour placer la clé sur le champ ISBN (si ce n’est pas déjà fait), il faut faire un clic droit sur la zone grise à
gauche du nom du champ puis cliquer sur Clé primaire.
Enregistrer enfin votre table (par exemple en passant en affichage Feuille de données).
Exercice 2
Mettez en œuvre avec ACCESS les autres tables vues en TD (toujours en mode création) :
Catégories
Auteurs
Catégories-Livres
Auteurs-Livres
Remarque 1 : pour les clés de type numérique, on évitera une numérotation automatique.
Remarque 2 : les tables de jointure (Catégories-Livres et Auteurs-Livres) auront une seule clé associée à
deux champs (sélectionner les deux champs avec la touche CTRL puis clic droit puis clé primaire).
53
Exercice 3
Mettez en place les relations entre les tables.
Pour cela, sélectionner l’onglet Outils de base de données (en haut) puis
cliquer sur le bouton relations :
Ajouter les tables dans le plan de travail. Puis cliquer sur le champ à relier, maintenir le clic et déplacer la
souris sur l'autre champ à relier. Une fois dessus, relâcher le clic. La relation apparaît alors. Renouveler
l'opération pour toutes les relations nécessaires.
Exercice 4
Remplir les tables avec les données suivantes :
2 catégories : Sciences Fiction et Poésie
2 auteurs : Jules Verne et Charles Baudelaire
2 livres : Voyage au centre de la terre de Jules Verne (1864) dans la catégorie Sciences Fiction et Les
fleurs du mal de Charles Baudelaire (1857).
Enfin, remplir les tables Catégories-Livres et Auteurs-Livre de manière adéquate.
Exercice 5
Créer un formulaire pour les auteurs, les catégories et les livres (en mode
assistant). Pour cela, sélectionner l’onglet Créer puis cliquer sur Plus de
formulaires puis Assistant Formulaire :
On placera tous les champs de la table dans le formulaire.
Vérifier que les données précédemment enregistrées sont bien affichées.
Exercice 6
Pour apprendre à bien manipuler ACCESS, ajouter un nouveau livre de Jules Verne (par exemple De la
Terre à la Lune, publié en 1865).
Exercice 7
Crée une requête simple (onglet Créer, bouton Création de requêtes) permettant d’afficher tous les
livres de Jules Verne.
Exercice 8
Crée une autre requête simple permettant d’afficher tous les livres publiés entre 1855 et1860.
54
Université de Bretagne Occidentale - UFR Sciences - Département d’Informatique
Licence 1ère année (S1), Parcours 1
Introduction à l’Informatique
TP n°10
Gestion d’un stock de voitures
Un garagiste multi marques possède un stock d'environ 400 véhicules d'occasion. Afin d'en faciliter
la gestion, il propose de gérer cet ensemble de voitures et utilitaires dans une base de données.
En tant que concepteur, vous avez pour tâche de concevoir cette base de données.
Voici les informations (cahier des charges préliminaire) que vous fournit le garagiste :
- le budget est de 18000 euros
- le nombre de véhicules est d'environ 400 et c'est un employé du garage qui remplira, au fur et
à mesure la base,
- chaque véhicule devra être repéré de manière unique par son numéro d'immatriculation,
- un véhicule possède une marque (Renault, Peugeot, Citroën, Volkswagen…),
- un véhicule appartient à une catégorie (petite, compacte, routière, utilitaire),
- un véhicule a un kilométrage,
- un véhicule a une année de fabrication,
- un véhicule possède une motorisation spécifique (1,2 litre essence, 2,0 litres diesel…),
- un véhicule possède une couleur,
- la base de données a vocation à être utilisée en intranet et internet.
NB : Avant de vous lancer sur Access, il est préférable de prendre un papier et un crayon pour mettre
en place les tables et leurs relations. C’est pourquoi, les exercices 1 à 5 sont à faire sur papier
Exercice 1
Écrire une table « véhicules » permettant de mémoriser les véhicules et leurs caractéristiques.
A- Indiquer le type de chacun des champs.
B- Indiquer si un champ est une clé.
Exercice 2
Écrire les autres tables qui sont utiles pour compléter la base :
A- Une table « marques » contenant les différentes marques existantes,
B- Une table « catégories » mémorisant les catégories de véhicules.
C- Une table « couleurs » contenant les couleurs possibles pour les véhicules.
55
Exercice 3
Il est maintenant nécessaire de relier les tables.
A- Relier les tables de la base de données.
B- Indiquer les valeurs aux extrémités de chacune des relations mise en place (1 ou N).
Exercice 4
Votre base de données maintenant répond au cahier des charges préliminaire. Cependant, un point
nouveau est souhaité par le garagiste dans son cahier des charges final : il désire avoir une table
contenant des informations sur les anciens propriétaires des véhicules.
Il faut donc créer une nouvelle table :
- la table propriétaires, qui contient l'identifiant unique d'un propriétaire (un simple
numéro), son nom, son prénom et son adresse.
- Il est à noter qu'un propriétaire peut avoir eu plusieurs véhicules (une table jointure
véhicules-propriétaires devra donc être créée)
Il est à noter que la table contenant les noms des propriétaires est uniquement à usage interne avec un
droit de regard, de modification ou de suppression de la part des ex-propriétaires (loi informatique et
liberté). Il n'est pas demandé ici de sécuriser la base.
A- Écrire ces deux tables
B- Relier ces deux tables aux tables précédentes en modifiant éventuellement certaines des tables
précédentes.
C- Quel type de relation est implicitement effectué entre la table Véhicules et la table Propriétaires ?
Exercice 5
Dans quel ordre faut-il saisir les données dans les tables ? Est-ce d’abord les tables principales
(Véhicules, Propriétaires…) qu’il faut remplir ou bien les tables de jointure (véhiculespropriétaires) ? Justifier votre réponse.
Votre base de données maintenant répond au cahier des charges final quant à sa structure. Il faut
maintenant la créer avec ACCESS et y rentrer des données.
56
Développement de la base avec Access
Lancer ACCESS : Menu Démarrer=> Microsoft Office ACCESS
(ou bien : Menu Démarrer=>Tous les programmes=>Microsoft Office-> Microsoft Office ACCESS)
Cliquer sur le bouton Office (bouton rond en haut à gauche) puis sur la commande Nouveau.
Puis, nommer votre base Garage (à droite de la fenêtre principale).
Exercice 6
Créer la table véhicule en mode création (rappel du TP 9: par défaut, la table est en mode Feuille de
données).
Rappel : pour placer la clé, il faut faire un clic droit sur la zone grise à gauche du nom du champ
considéré.
Exercice 7
Mettez en œuvre avec ACCESS les autres tables écrites précédemment (toujours en mode création) :
Remarque 1 : pour les clés de type numérique, on évitera une numérotation automatique.
Remarque 2 : les tables de jointure auront une seule clé associée à deux champs (sélectionner les
champs avec la touche CTRL puis clic droit puis ajouter une clé).
Exercice 8
Mettez en place les relations entre les tables.
Pour cela, sélectionner l’onglet Outils de base de données (en haut)
puis cliquer sur le bouton relations :
Ajouter les tables dans le plan de travail. Puis cliquer sur le champ à relier, maintenir le clic et
déplacer la souris sur l'autre champ à relier. Une fois dessus, relâcher le clic. La relation apparaît
alors. Renouveler l'opération pour toutes les relations nécessaires.
Exercice 9
Créer un formulaire pour les véhicules, les catégories, les
propriétaires, les marques et les couleurs (en mode assistant).
Pour cela, sélectionner l’onglet Créer puis cliquer sur Plus de
formulaires puis Assistant Formulaire :
On placera tous les champs de la table dans le formulaire.
57
Exercice 10
Remplissez les formulaires avec 3 véhicules, 4 marques, 4 couleurs, 4 propriétaires et 3 catégories.
Exercice 11
A- Créer un état (onglet Créer, bouton Assistant état) permettant de visualiser l'ensemble des
véhicules.
B- Créer un état permettant de visualiser l'ensemble des marques (il serait intéressant que la table
marques possède un champ pays indiquant le pays de fabrication).
Exercice 12
Créer graphiquement les requêtes suivantes (onglet Créer, bouton Création de requêtes) puis les
tester :
A- Créer une requête permettant de retrouver tous les véhicules de la catégorie « routière ».
B- Créer la requête permettant de trier tous les véhicules par leurs marques.
C- Créer la requête permettant de retrouver tous les véhicules ayant appartenu à l'un des propriétaires.
Par exemple, nous prendrons le nom « Dupont ».
58
Université de Bretagne
Occidentale
UFR Sciences
Département d’Informatique
LICENCE 1
L1, S1, 2007-2008
Parcours A, IMP
Introduction à l’Informatique
Mémo ACCESS
Pascal Ballet
I Qu'est-ce qu'Access ?
Access est un système de gestion de base de données relationnelle.
En d'autres mots, Access permet de stocker des données sous la forme de tables reliées entre-elles par des
relations. Nous verrons plus loin ce que signifient les relations. Pour l’instant concentrons-nous sur les
données.
II Qu'est-ce qu'une table ?
II-1 Une table vide
Une table peut être vue comme l'entête d'un simple tableau. Par exemple, le tableau suivant (carnet
d'adresse) peut être vu comme une table ayant 4 champs : Nom, Prénom, Adresse et Téléphone.
Carnet d'adresse (sous la forme d'un simple tableau)
Nom
Prénom
Adresse
Téléphone
En effet, sous Access, la table permettant de faire l'équivalent de ce carnet d'adresse est :
=
Carnet d'adresse (sous la forme d'une table Access)
Nom du champ
Nom
Prénom
Adresse
Téléphone
Il faut ici bien comprendre que le carnet d'adresse sous forme de table correspond uniquement à l'entête du
carnet d'adresse sous la forme d'un simple tableau. Nous avons ici simplement mis l'entête verticalement au
lieu d'horizontalement.
II-2 Une table remplie
Le simple tableau utilisé précédemment était vide (hormis l'entête). De même qu'il est possible de remplir un
tableau...
Nom
Prénom
Adresse
Téléphone
Célère
Jacques
Brest
02 23 45 67 89
Némar
Jean
Quimper
02 98 76 54 32
Ile
Ode
Lannion
02 76 54 32 10
... il est possible de remplir une table :
Nom
Prénom
Adresse
Téléphone
Célère
Jacques
Brest
02 23 45 67 89
59
Némar
Jean
Quimper
02 98 76 54 32
Ile
Ode
Lannion
02 76 54 32 10
On remarque que maintenant il n'y a plus de différence entre l'affichage de la table et celui du tableau.
En effet, lorsque l'on crée un nouveau tableau, on se préoccupe généralement tout de suite des cases que l'on
va remplir. Quand on crée une table, on passe par une étape supplémentaire qui est la création de l'entête de
la table (à savoir les champs).
Nous devons faire cela en premier car une table demande également de réfléchir sur le type de données
qu'elle va contenir (chaîne de caractères, nombres entiers, nombres monétaires...).
II-3 Résumé
Pour résumé, une table en mode création/modification sous Access est sous la forme :
Nom du champ
Nom
Prénom
Adresse
Téléphone
Une table en mode saisie est sous la forme :
Nom
Prénom
Adresse
Célère
Jacques
Brest
Némar
Jean
Quimper
Ile
Ode
Lannion
Téléphone
02 23 45 67 89
02 98 76 54 32
02 76 54 32 10
III Qu'est-ce qu'une relation ?
III-1 Plusieurs numéros de téléphones
Il est tout à fait imaginable qu’une personne présente dans le carnet d'adresse possède plusieurs numéros de
téléphone. Dans ce cas, la table pourrait s'écrire :
Nom
Redford
Prénom
Robert
Adresse
Brest
Bon
Ile
Jean
Ode
Quimper
Lannion
Téléphone
02 23 45 67 89
06 12 23 34 56
02 98 76 54 32
02 76 54 32 10
01 23 45 67 89
06 65 98 74 32
Cette notation convient bien pour afficher les numéros de téléphones.
=> Cependant, dans une base de données, le nombre de caractères que l'on peut placer dans un champ n'est
pas infini (256 maximum pour les chaînes de caractères avec Access).
=> De plus, si un champ prend de la place pour rien, la base va très vite grossir et ne sera rapidement plus
utilisable. Imaginons par exemple que nous placions 256 caractères pour le champ Téléphone. La place
occupée par nos 3 contacts (Redford, Bon et Ile) serait de 256x3 = 768. Hors M. Bon ne possède qu'un seul
numéro de téléphone (qui occupe donc seulement 14 caractères en comptant les espaces). Donc nous perdons
256 - 14 = 242 caractères.
Conclusions, les informaticiens ont utilisé une autre technique qui consiste à créer une nouvelle table qui
s'appelle Téléphones. On remplace ainsi un champ par une table complète.
60
La nouvelle table se définie alors comme suit :
Téléphones :
Nom
Téléphone
Redford
02 23 45 67 89
Redford
06 12 23 34 56
Bon
02 98 76 54 32
Ile
02 76 54 32 10
Ile
01 23 45 67 89
Ile
06 65 98 74 32
Comme nous le constatons, nous répétons plusieurs fois le même nom pour connaître à coup sûr à qui
appartient le numéro de téléphone.
Ainsi nous avons maintenant deux tables pour mémoriser nos données, donc dans la table Carnet, le champ
Téléphone n'est plus utile :
Carnet
Nom
Redford
Bon
Ile
Téléphones
Nom
Redford
Redford
Bon
Ile
Ile
Ile
Prénom
Robert
Jean
Ode
Adresse
Brest
Quimper
Lannion
Téléphone
02 23 45 67 89
06 12 23 34 56
02 98 76 54 32
02 76 54 32 10
01 23 45 67 89
06 65 98 74 32
Maintenant il faut, pour chercher le numéro de téléphone d'un contact, consulter la nouvelle table
Téléphones. Ce n'est pas très pratique quand il s'agit de simples tableaux mais grâce à Access nous pouvons
relier facilement les deux tables pour retrouver en un clic souris tous les numéros de téléphone d'un
correspondant. En cliquant sur le bouton Relations de la barre d'outils (puis afficher les 2 tables), on crée un
lien (une relation) entre les deux tables sur les données qu'elles ont en commun, à savoir le nom des contact.
Table Carnet
Nom
Prénom
Adresse
1
*
Table Téléphones
Nom
Téléphone
NB : notons que les tables sont affichées comme pour le mode création/modification, c'est à dire que l'entête
est verticalement disposé.
A partir de là, lorsqu'on affiche en mode saisie la table Carnet, il devient possible d'afficher tous les numéros
de téléphone d'un contact :
Nom
Prénom
Adresse
- Redford
Robert
Brest
02 23 45 67 89
06 12 23 34 56
61
+ Bon
+ Ile
Jean
Ode
Quimper
Lannion
En effet, Access fait automatiquement la recherche des numéros de téléphones en fonction du nom du
contact.
=> Dorénavant, un contact peut avoir autant de numéros de téléphones que nécessaire !
=> La place mémoire (ou disque dur) nécessaire pour stocker les numéros de téléphone est réduit à 14
caractères !
=> Le lien (la relation) entre les deux tables se fait automatiquement !
III-2 Résumé
Les relations entre les tables permettent de faciliter / optimiser le traitement informatique des données.
Lorsque la base de donnée devient assez grande (de nombreuses tables), les relations entre les tables
facilitent la mise au point de la base de données en séparant bien plusieurs données (un peu comme une
maison possède plusieurs pièces et non pas une seule grande. Même si cela est possible, cela n'est pas
pratique de mélanger la cuisine avec les chambres !).
IV Le coeur d'Access
Nous avons vu comment stocker les données avec Access. C'est donc sous la forme de tables (très proche de
la notion de tableau de type Excel) reliées entre-elles (pour faciliter leur manipulation et optimiser le
stockage).
Ces tables reliées entre-elles sont le coeur d'Access (en fait, c'est le coeur de toute base de données). Les
informaticiens auraient pu en rester là, mais un des avantage de l'ordinateur est le traitement rapide des
données et il est donc possible d'effectuer des traitements sur la base de données pour extraire certaines
informations et faire des statistiques.
V Les requêtes
V-1 Consultation de la base de données
Pour consulter la base, la manière la plus simple est d'ouvrir les tables pour voir leur contenu. Cela est
possible lorsque le nombre de données mémorisées n'est pas trop grand. Cependant, au delà d'un certain
nombre (généralement au delà de 1000), il est utile de pouvoir interroger la base.
Pour donner une idée de l'intérêt de la base de données, imaginons que nous ayons plus de 100 000 contacts
dans notre Carnet d'Adresses. Une première solution consiste à faire comme dans un annuaire papier, c'est à
dire faire défiler tous les noms jusqu'à trouver le bon. Cela se fait relativement bien sur papier (type annuaire
téléphonique) mais beaucoup moins bien sur l'écran de l'ordinateur (car moins intuitif et moins pratique).
Une solution consiste alors à envoyer une requête (c'est à dire une question) à la base de données du genre
"Quels sont les numéros de téléphone de Ode Ile ?". La base de donnée est alors scrutée par Access jusqu'à
ce que le nom Ode et le prénom Ile soient trouvés. L'ordinateur renvoi alors l'ensemble des numéros de
téléphone d'Odile et le temps de recherche est si faible que nous avons l'impression que la réponse de
l'ordinateur est immédiate.
Requête : "Quels sont les numéros
de téléphone de Ode Ile ?"
Réponse
:
"02 76 54 32 10",
"01 23 45 67 89", "06 65 98 74 32"
Tables et
Relations
62
Les requêtes peuvent être plus complexe encore et l'on peut par exemple demander "Quels sont les numéros
de téléphones de toutes les personnes prénommées Jean" ou encore "Quels sont les personnes dont le numéro
de téléphone se termine par 89 et dont le nom commence par les lettres Re" (ici en l'occurrence, le résultat
sera Robert Redford 02 23 45 67 89).
Notons que pour retrouver les données, Access recherche dans les tables existantes et place les données
correspondante dans un table temporaire (un peu comme nous le ferions en cherchant dans un annuaire puis
en notant le numéro recherché sur un bout de papier).
V-2 Résumé
Les requêtes viennent juste après les tables et les relations par ordre d'importance dans Access. Nous
pouvons donc maintenant stocker des données de manière pratique mais aussi poser toute sorte de questions
(requêtes) à Access pour qu'il retrouve les données dont on a besoin.
VI Les formulaires et les états
Les formulaires et les états viennent en dernier car, même s'ils sont pratiques, ils ne sont en rien
indispensables à l'utilisation d'une base de données. Il permettent avant tout de faciliter la saisie (les
formulaires) et l'impression (états) des données stockées dans la base de données.
VI-1 Les formulaires
Afin de faciliter la saisie des données, Access permet de créer des formulaires de saisie. Ceux-ci sont plus
agréables à utiliser que les tables. On peut également programmer un formulaire en Visual Basic pour que
suite au remplissage des données, des actions soient effectuées. Par exemple, si nous avons deux champs
dont les contenus sont à priori les mêmes, on peut faire un petit programme Visual Basic qui va permettre de
remplir simultanément les deux champs. De même, si nous faisons une erreur de saisie, il est possible
d'indiquer à la personne utilisant le formulaire qu'elle rentre une donnée qui semble fausse.
VI-2 Les états
Les états permettent d'imprimer des documents (genre bon de commande ou autre) directement en relation
avec les données de la base. Ainsi, il devient facile d'imprimer un document, ou un groupe de documents. Il
est même possible d'imprimer les résultats d'une requête (on parle alors d'état basé sur une requête et non pas
simplement sur une table).
VI-3 Résumé
Les formulaires et les états ne sont pas essentiels à la base de données, mais ils facilitent grandement le
travail du programmeur et de l'utilisateur pour avoir de pratiques formulaires de saisie et de beaux
documents imprimés (états).
63
VII Conclusion
Voici pour résumé un dessin représentant les fonctionnalités d'Access.
Requête : "Quels sont ... ?"
Réponse : Il y a n réponses...
Tables et
Relations
Lecture dans la base
(donc dans les tables !)
Etats d'impression
Lecture et écriture dans la
base (donc dans les tables !)
Formulaires de saisie
ACCESS
Pour finir, voici les ressemblances et les différences essentielles entre une base de données et un tableur
(type Excel) :
> Les tables (Access) et les tableaux (Excel) sont très proches.
> De même, les requêtes (Access) et les filtres (Excel) sont similaires.
> Par contre, les relations entre les tables (Access) sécurisent et structurent les données (plus difficile à
obtenir avec Excel)
> De plus, grâce aux requêtes (Access), toute sorte de questions peuvent être posées (Excel se limite
généralement à des filtres). Même des questions compliquées.
> La saisie des données sous Access peut être plus poussée grâce aux formulaires de saisies et au langage
Visual Basic.
> L'impression et la mise en forme des données est plus complète sous Access que sous Excel.
> Il est possible d'avoir une base de donnée partagée par plusieurs utilisateurs EN MÊME TEMPS et sur
différents ordinateurs. Ce qui n'est pas possible avec Excel.
> Une base de donnée peut être placée sur Internet plus facilement.
> Une base de donnée est plus facilement sécurisable qu'un tableau Excel (typage des données, format de
saisie, formulaire de saisie ne faisant pas apparaître certains champs,...).
64
Téléchargement