LSM 3.053 TP No 3

publicité
LSM 3.053
Informatique : TP n°3
Exercice 1 : Représentation des entiers négatifs
La représentation des entiers négatifs nécessite d'ajouter à la représentation un bit de signe, placé en
tête. Par convention, un bit de signe à 0 indique une valeur positive, un bit de signe à 1 une valeur
négative. Cette règle permet de rester cohérent avec le système de représentation des entiers positifs,
puisqu'il suffit d'ajouter un 0 en tête de chaque valeur.
Deux méthodes de codage ont été successivement introduites :
Méthode du "Complément à un"
Ce codage consiste à inverser la valeur de chaque bit du codage binaire de l'entier.
Cette méthode a un défaut puisqu'il y a 2 représentations de la valeur 0: 0000 ou 1111.
Méthode du "Complément à deux"
Pour palier le défaut précédent, on a introduit la représentation par complément à deux. Celle-ci
consiste à réaliser un complément à un de la valeur, puis d'ajouter 1 au résultat.
1) On écrit d'abord en binaire la valeur absolue de l'entier à coder
2) On inverse chacun des bits
3) On ajoute 1
Exemple: codage sur 4 bits de -5
1) on code 5 :
0101
2) on inverse les bits: 1010
3) on ajoute 1:
1011
L'addition en complément à deux se fait comme une addition normale, mais en ignorant la dernière
retenue :
Exemple: addition de -5 et +7
-5
1011
+7
0111
2 (1) 0010
(on "ignore" la retenue)
Avec n bits, la méthode du complément à deux permet de représenter les nombres entre -2n-1 et 2n-1-1.
Réalisez un programme qui :
• demande via une boite de dialogue la valeur d'un nombre N à convertir sur 4 bits
• si ABS(N) <8
a)
convertit N en 4 bits {signe, p4, p2, p1}
tels que N = -1signe + p4*22 +p2*21+p1*20
(fonctions IIf, Abs et Int)
b)
inverse les bits p4, p2, p1 (fonction IIf)
c)
ajoute 1 au binaire p4 p2 p1 (attention aux retenues
successives).
d)
convertisse signe, p4, p2 et p1 en caractères et affiche
dans une boite la chaine ("signe" "p4" "p2" "p1")
• si ABS(N) >7
Affiche un message d'erreur indiquant que le nombre ne peut
être codé sur 4 bits.
1) Dessinez l'organigramme du programme :
2) Réalisez par étapes le programme
a) codage sur 4 bits la valeur absolue d'un entier
b) inversion des bits
c) ajout de 1
d) inclusion des étapes précédentes dans une boucle conditionnelle testant Abs(N).
Exercice 2 : Calcul matriciel basique
Pour chacune des parties de programme suivante, commencez par dessiner
l'organigramme du programme avant de taper le code.
1)
Entrée des éléments des matrices
Réalisez une procédure qui demande à l’utilisateur grâce à des boîtes de dialogue
* Le nombre de lignes l d'une matrice
* Le nombre de colonnes c de la matrice
* Les éléments de matrice (aij) i=1, l et j = 1, c
et les inscrits respectivement à partir de la cellule A2 dans une feuille de calcul.
2)
Addition de 2 matrices A et B.
Réalisez une procédure qui :
demande à l’utilisateur le nombre de lignes et de colonnes des 2 matrices A et B
vérifie que l'addition A+B a un sens
Nombre de lignes (A) = Nombre de lignes (B)
Nombre de colonnes (A) = Nombre de colonnes (B)
Si l'addition est impossible :
Affiche un message d'erreur dans une boite de message.
Si l'addition est possible :
Inscrit les éléments de matrice (aij) dans les cellules comprises
entre A2 et (A+c)(2+l).
Inscrit les éléments de matrice (bij) dans les cellules
comprises entre A+c+2 et (A+2c+2)(2+l).
(B décalée de 2 colonnes par rapport à A)
Réalise l'addition des 2 matrices (cij) = (aij)+ (bij)
Ecrit les éléments (cij) de la matrice résultat dans les cellules
comprises entre A+2c+4 et (A+3c+4)(2+l).
2)
Multiplication de 2 matrices A et B.
Mettez au point la fonction mulelem qui calcule le produit cik de 2 éléments de matrice aij et bjk connus
Réalisez une procédure qui :
• demande à l’utilisateur le nombre de lignes et de colonnes des 2 matrices A et B
• vérifie que la multiplication A*B a un sens : Nombre de lignes (A) = Nombre de
colonnes (B)
Si la multiplication est impossible :
Affiche un message d'erreur dans une boite de message
Si multiplication est possible :
Inscrit les éléments de matrice (aij) dans les cellules comprises
entre A2 et (A+c)(2+l).
•
inscrit les éléments de matrice (bij) de B dans les cellules comprises
entre A+c+2 et (A+2c+2)(2+l). (B décalée de 2 colonnes par rapport à A)
•
calcule les éléments rlc de la matrice Produit pour
chaque ligne l de A
chaque colonne c de B
en faisant appel à la fonction mulelem à l'intérieur d'une boucle sur l'indice k repérant
à la fois une colonne de a et une ligne de b.
(AIDE : l'introduction d'une variable intermédiaire res dans la boucle est fortement
conseillée pour stocker le résultat des appels successifs de mulelem !)
•
écrit l'élément (cij) de la matrice résultat dans les cellules comprises entre
A+2c+4 et (A+3c+4)(2+l).
Téléchargement