• Aucun résultat trouvé

Sujets de Travaux Dirigés et de Travaux Pratiques Pascal Ballet, Philippe Le Parc et François Monin

N/A
N/A
Protected

Academic year: 2022

Partager "Sujets de Travaux Dirigés et de Travaux Pratiques Pascal Ballet, Philippe Le Parc et François Monin"

Copied!
65
0
0

Texte intégral

(1)

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

(2)

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 ?

(3)

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

(4)

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

(5)

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.

(6)

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.

(7)

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

(8)

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

(9)

 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

(10)

Schéma de l’architecture RISC utilisée (source PixArchi)

(11)

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.

(12)

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

(13)

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

(14)

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

(15)

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.

(16)

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

(17)

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

(18)

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.

(19)

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.

(20)
(21)

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

(22)

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

(23)

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

(24)

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.

(25)

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.

(26)

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.

(27)

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 :

(28)

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

(29)

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

(30)

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.

(31)

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.

(32)

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

(33)

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.

(34)

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.

(35)

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

(36)

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.

(37)

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.

(38)

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 !")

(39)

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.

(40)

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.

(41)

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

Références

Documents relatifs

- Vous précisez votre cahier des charges : Quelles fonctionnalités votre SGBD remplira ? - Vous avez saisi que le projet doit pouvoir vous être utile, dans le cadre d’un stage,

Quels sont les différents types de titres dans cette base de

4. Citer quelques fonctions simples utilisées dans un tableur Excel. Quelle est la démarche pour obtenir la somme des contenus des cellules A1 et A2 dans la cellule A3 ? 6. Donner

b-La présence d’un Epiderme et de xylème centrifuge indique qu’il s’agit d’une tige.. c- L’existence d’un Cambium indique qu’il s’agit d’une plante Dicotylédone

Remarque : introduire une procédure nommée « rangeeDeMaisons » paramétrée par la taille d'une maison et le nombre de maisons, procédure qui sera également utilisée dans

Afficher tous les noms et prénoms d’étudiants ainsi que le libellé des UEs toujours pour ceux qui suivent l’UE « SL2IBD » ou l’UE « SL2IPI ».. Afficher tous les étudiants

 CODATA can help make the case with International Scientific Unions, with learned societies and journal editorial boards to implement practice of data citation.  A Campaign

c) Suppression d’un terrain (table adresses → Oui, mais on ne supprime pas, on peut ajouter un attribut dans Terrain pour savoir que le terrain n’est plus utilisé. d)