Université de Bretagne Occidentale - UFR Sciences - Département d’Informatique Licence 1
èreannée (S1), Parcours 1
Introduction à l’Informatique
Sujets de Travaux Dirigés et de Travaux Pratiques
Pascal Ballet, Philippe Le Parc et François Monin
TD 1 – Codage et Circuits logiques page 2
TD 2 – Architecture page 5
TD 3 et 4 – Variables, séquences et conditionnelles simples page 15 TD 5, 6 et 7 – Itérations (boucle Pour et Tant que) et tableaux page 18
TD 8 – Tableaux et graphisme page 21
TD 9 – Introduction aux bases de données page 23
TP1 – Introductions aux TPs et circuits logiques page 26
TP2 – Architecture page 34
TP3 et 4 – Introduction à Visual Basic : variables, séquences et conditionnelles simples page 35 TP5 et 6 – Itérations (boucle Pour et Tant que) et tableaux page 47
TP 7 et 8 – Un peu de graphisme page 49
TP 9 – Introduction aux bases de données page 53
TP 10 – Gestion d’un stock de voitures page 56
Memo Access page 60
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.
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 de codage vues en cours (bases, changement de base, implémentation). D'autre part des exercices sur les circuits logiques sont proposés pour consolider les éléments vus en cours.
Partie 1. Codage
Rappels de cours :
Exercice 1
Enumérer les symboles utilisés pour les bases suivantes : 4, 8, 16 Exercice 2
Soient les nombres 32314, 5289, 40657
(a) Donner leur écriture en base 10.
(b) Donner leur écriture en base 2.
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 binaires suivants : 1110110100012, 10100111012, 1000010011110112. (a) Quels sont les nombres en base 8 correspondant ?
(b) Quels sont les nombres en base 16 correspondant ?
Exercice 5
Soient les 2 octets suivants : A : 101100012 B : 000101112
(a) 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 6
(a) Soit N le nombre suivant en base 10 : -29,25
1. Convertir la valeur absolue de la partie entière 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.
(b) Recommencer l'exercice avec les nombres : 128,125 puis 0,8
Partie 2 - Circuits logiques
Exercice 1
Donner les tables de vérité des portes ET, OU, OU exclusif et NON Exercice 2
Soit le circuit suivant :
(a) Donner une expression logique de la sortie S en fonction des entrées A,B,C et D.
(b) Donner la table de vérité de la sortie S.
(c) Donner une expression logique de la sortie S directement à partir de la table de vérité.
(d) Simplifier l'écriture de S (choisir l'expression (a) ou (c)).
(e) 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.
A B
C D
s 1
s 2 S
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
On considère les deux instructions en assembleur suivantes :
addi rd, rs, simm5 qui additionne une constante sur 5 bits à 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.
Question 1 : On considère la constante simm5=011102. Dire quelle est la valeur en base 10 du nombre représenté par simm5. Sachant que les registres sont sur 16 bits, dire ce que l’ordinateur doit faire au moment de l’éxécution de : addi rd, rs, simm5.
Question 2 : 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, 14 (étape 1) add r2, r3, r2 (é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
écrite en base 10 ?
Question 3 : Une fois les étapes 1 et 2 effectuées, quel est le contenu de r2 (écrit sur 16 bits) ? Exercice 2
Donner, pour chaque notation de constante ci-après, utilisée dans la description de l’architecture :
uimm4, uimm5, uimm11, l’intervalle de valeurs que peuvent prendre ses constantes.
Exercice 3
On suppose les instructions suivantes chargées en mémoire (à partir de l’adresse mémoire 0) :
0) addi r1, r0, 0 1) addi r2, r0, 0 2) st (r2 + 15), r1 3) addi r2, r2, 1 4) add r1, r1, r2 5) addi. r3, r2, -5 6) bne -5
7) 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.
Exercice 4
Question 1 : 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.
Question 2 : Proposer de même une méthode pour calculer le quotient et le reste de la division de r1 par
r2.
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).
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 :
Instructions de branchement inconditionnel :
Instructions de branchement conditionnel :
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
lih rn, uimm11 rn←uimm11 || 00000b
Instruction Action
b simm11 pc←pc + (1 + simm11) ba simm11 pc←simm11
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)
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
Instructions arithmétiques, logiques et chargement/rangement :
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] est mis à 1 si le résultat de l’opération arithmétique vaut 0, et à 0 sinon.
rcc[n] est mis à 1 si le rèsultat de l’opération (vu comme un entier signé) est négatif, et à 0 sinon.
rcc[c] 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.
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
Schéma de l’architecture RISC utilisée (source PixArchi)
Architecture logicielle et matérielle de référence
Sommaire
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.
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
Table 1: Signification des bits du registre rcc.
== test d'égalité. ; << décalage à gauche. ; >> décalage à droite.
Mem[addr] case mémoire à l'adresse addr.
....b chaîne de bits. Le nombre de bits est exactement ce qui est spécifié (on pourra utiliser les mêmes conventions que cette année dans VisArchi à savoir 0x.... pour les valeurs en hexadécimales, .... pour les valeurs en base 10, etc.)
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.
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
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
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
Exercice 1
1. Soit l’algorithme suivant :
Variable
X : entier Y : entier Z : entier Debut
X 10 Y 0 Z 0 X X * X Y 4 * X - X Z Y / 3 Z Y - Z Z Z + X - Y X (Y - X) * Z Y (X + Z) * Y Afficher (X, Y, Z) Fin
Exécuter cet algorithme à la main et donner pour chaque ligne les valeurs de X, Y et Z. 2. Traduire cet algorithme en un programme Visual Basic. Pour l’affichage, on utilisera
l’instruction MsgBox(....).
Exercice 2
1. Ecrire un algorithme qui lit le prix hors taxe d’un article, le taux de TVA et le nombre d’articles, puis affiche le prix total TTC correspondant.
2. Dessiner une interface graphique permettant la saisie des 3 valeurs (prix, TVA, nombre) et l’affichage du résultat. On pourra utiliser par exemple des boites de dialogue pour l’acquisition (i.e. InputBox(…)) et l’affichage (i.e. MsgBox(…)), ou des champs texte (TextBox.text = …).
3. Traduire l’algorithme écrit en 1., en Visual Basic en tenant compte de l’interface décrite en 2.
Exercice 3
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 4
Ecrire un algorithme qui permet de dessiner la figure ci-dessous.
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 segment on utilisera la fonction : DessineLigne(X_depart, Y_depart, X_arrivee, Y_arrive)
Exercice 5
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 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.
y (0,0) )
100
100
x
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.
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
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 8
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 ».
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
Exercice 1 – boucle Pour
1. Ecrire un algorithme MoyenneNotes qui demande le nombre N de notes à entrer, qui lit N et 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 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 5 – boucle Pour et tableaux
1. Ecrire un algorithme PosMinTab qui lit un entier N et les N nombres d’un tableau T et affiche le plus petit élément de T et sa position dans T.
Dérouler cet algorithme pour N = 7 et T = {53,6 ; 29 ; 56,7 ; 6 ; 3,14 ; 78 ; 10,5}.
2. Ecrire un algorithme similaire pour un tableau à deux dimensions (matrice NxM).
Exercice 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é S, 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 MoyenneNotes qui demande le nombre N de notes à entrer, qui lit N et les N notes, une par une, pour afficher leur moyenne.
2. 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.
3. 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.
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
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.
dddddUniversité de Bretagne Occidentale - UFR Sciences - Département d’Informatique Licence 1ère année (S1), Parcours 1
Introduction à l’Informatique
TD n°8
Tableaux et graphisme
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 – graphisme et 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).
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
« auto-appel », pour être appliquée dans les 3 triangles précédemnt construits, avec décrémentation de p.
Remarque : on supposera disponible une fonction dessine_triangle(xA, yA, xB, yB, xC, yC).
Exercice 3 – Manipulation des chaines de caractères
Pour cette 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’occurrence 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».
A
B MAB
C A
MBC
MAC
xB = xA – b/2, yB = yA + h xC = xA + b/2, yC = yA + h xMBC = xA, yMBC = yA +h xMAB = xA – b/4, yMAB = yA + h/2 xMAC = xA + b/4, yMAC = yA + h/2
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 12000 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
A- É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.
B- Justifier les choix.
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 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é à 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- Quels sont les formulaires (avec éventuellement des sous formulaires) à développer pour permettre une saisie rapide et rigoureuse des données ? Dessiner ces formulaires.
B- Dans quel ordre doivent être remplis les formulaires ?
Exercice 7
Écriture de requêtes SQL.
A- Il est demandé maintenant d'écrire une requête SQL permettant de retrouver tous les auteurs nés au XIXème siècle.
B- Donner la requête SQL permettant de classer tous les auteurs par leur date de naissance.
C- Donner la requête SQL permettant de retrouver tous les livres d'un auteur. Pour l'exemple, nous prendrons le nom Hugo.
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 Vista 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.
Elles sont accessibles via le menu Affichage. Il est ainsi possible d’afficher les objets sous forme d’icônes ou de listes triées plus ou moins détaillées.
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:).
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).
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 (figure 1).
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 l’option Nouveau dossier du menu Organiser (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 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 -> Mozilla Firefox
Pour les logiciels que vous utilisez souvent, pensez à créer des raccourcis sur votre Bureau.
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 Outils 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
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.google.fr.
Figure 5 : fenêtre de l’outil FireFox. Ici elle est sur le site de recherche www.google.fr.
Trouver le site du département d’Informatique, en tapant dans Google Informatique UBO Brest puis en cliquant sur Recherche Google. Cliquer alors sur l’hyper-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 d’Introduction à l’Informatique.
A partir de ce site vous pouvez également accèder à l’Intranet du départment d’informatique. L’accès est restreint, vous devez donc taper votre nom d’utilisateur et votre mot de passe de l’ENT (qui sont différents des noms d’utlisateur et mots de passe que vous avez saisi pour vous connecter). Consultez alors la FAQ = Foire Aux Questions.
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 exécuter le logiciel, double-cliquez sur le fichier LancementDigSimclass. 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.
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 cirtcuit 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.
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émoire1, 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 de l’exercice 1 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.
Exercice 4 :
Faire l’exercice 3 du TD n°2 (s’il n’a pas été fait en TD), et entrer les programmes dans PixArchi. On utilisera le mode “Expert” pour pouvoir modifier les valeurs des registres et/ou de la mémoire avant l’exécution du programme.
Tester les programmes écrits.
1 Noter que l’adresse de la nième ligne de programme est n-1 et non n.
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
0B0B
1. Découverte de Visual Basic .NET
3B3B
1.1 Généralités
Visual Basic est un langage de programmation qui permet le développement de programmes de manière relativement simple.
Le langage Visual Basic est un des langages de programmation (comme C++, C#, J#, Visual Basic.Net) qui utilisent l'environnement Visual Studio.Net. Ce que vous allez apprendre avec Visual Basic.Net s'appliquera donc également aux autres langages de Visual Studio.Net.
Le développement d’un programme en VB (Visual Basic), comprend les étapes suivantes : 1- écriture de l’algorithme (le programme) en visual basic,
2- correction des erreurs de frappe, 3- sauvegarde sur disque du code source, 4- exécution et test du programme, 5- correction des erreurs d’exécution
Ces étapes sont résumées par l’organigramme ci-dessous :
Saisie du programme
Sauvegarde Exécution Erreur de
saisie ?
Erreur à l’exécution
?
Fin
oui
oui non
non
Afin de mettre en pratique ces étapes, l’écriture d’un petit programme s’impose.
Pour bien illustrer la démarche à suivre, nous allons mettre au point un programme permettant de convertir la vitesse du vent.
4B4B
1.2 Exécution de Visual Basic
Cliquer sur Démarrer Tous les programmess Microsoft Visual Studio 2008 Microsoft Visual Studio 2008
Après quelques seconces (nécessaires pour la configuration initiale), apparaît alors la fenêtre suivante (l'affichage peut varier un peu) :
Pour créer un programme en Visual Basic, il faut cliquer sur Fichier Nouveau Projet Il faut alors choisir Visual Basic puis Application Windows.
Donner ensuite un nom à votre application (votre programme) : 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. Dans la suite du TP nous complèterons cette fenêtre en lui ajoutant un bouton d'action.
Avant cela, regardons d'un peu plus prêt l'interface de Visual Studio.
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.
5B5BUU
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 :
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 suivante : MsgBox("Bonjour !")
Voici a quoi doit ressembler votre code :
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).
Apparaît alors à l'écran la boite suivante :
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 ! Pensez à le sauvegarder.
6B6BUU
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 à nouveau votre programme avec une vitesse de vent de 10, puis avec une vitesse de 12,5.
7B7BUU
Exercice 3
Nous allons ajouter un calcul de conversion pour transformer la vitesse du vent (km/h) en noeuds. Un noeud correspond à 1,85 km/h.
Il suffit pour cela de modifier l'affichage du résultat en modifiant la ligne contenant le MsgBox pour obtenir :
MsgBox("La vitesse du vent en noeuds est de " & v / 1.85)
8B8BUU
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 :
if v < 1 Then MsgBox("Force 0 - Calme")
if v >= 1 And v < 5 Then MsgBox("Force 1 - Très légère brise")
UUVoici à quoi doit ressembler votre code :
Noter que la vitesse v est affichée en noeuds grâce au calcul de v / 1.85. Cependant, la valeur de v est toujours en km/h.
Si l'on étudie le premier test :
If v < 1 Then MsgBox("Force 0 - Calme")
Cela signifie que : Si la vitesse v est inférieure strictement à 1, Alors Visual Basic affiche
"Force 0 - Calme" dans une boite à l'écran.
Voici l'échelle Beaufort :
Nombre de Beaufort
Terme générique
Vitesse du vent à 10 m de hauteur
Que se passe-t-il au large ?
(degré) (descriptif) en km/h en noeuds (remarques) 0 Calme moins de 1 moins de 1 la fumée s'élève
verticalement ; la mer est comme un miroir 1 Très légère
brise
1 à 5 1 à 3 il se forme des rides, mais il n'y a pas d'écume 2 Légère brise 6 à 11 4 à 6 vaguelettes courtes ; leurs
crêtes ne déferlent pas
3 Petite brise 12 à 19 7 à 10 très petites vagues ; écume d'aspect vitreux 4 Jolie brise 20 à 28 11 à 15 petites vagues devenant
plus longues ; moutons nombreux 5 Bonne brise 29 à 38 16 à 21 vagues modérées,
allongées ; moutons nombreux 6 Vent frais 39 à 49 22 à 26 des lames se forment ;
crêtes d'écume blanche plus étendues 7 Grand frais 50 à 61 27 à 33 la mer grossit ; l'écume est
soufflée en trainées ; lames déferlantes 8 Coup de vent 62 à 74 34 à 40 lames de hauteur
moyenne ; de leurs crêtes se détachent des tourbillons d'embruns 9 Fort coup de
vent
75 à 87 41 à 47 grosses lames ; leur crête s'écroule et déferle en
rouleaux 10 Tempête 88 à 102 48 à 55 très grosses lames à
longues crêtes en panache ; déferlement en rouleaux intense et brutal 11 Violente
tempête
103 à 117 56 à 63 lames exceptionnellement hautes ; mer recouverte
de bancs d'écume blanche
12 Ouragan plus de
118
plus de 64 air plein d'écume et d'embruns ; mer entièrement blanche ;
visibilité très réduite