Académique Documents
Professionnel Documents
Culture Documents
2. Cadre de ralisation
Ce projet est not et peut tre ralis individuellement ou en binme. Comptences values : C.2.1 Analyser ; C.2.3 Dvelopper ; C.3.1 Agir au sein dune quipe ; C.4.1 Documenter un projet numrique.
4. Rappel : Codage binaire codage dcimal 1. Mthode des divisions successives par 2 :
Un nombre binaire est une squence
On crit :
decimal to binary
binary to decimal
Ce qui donne
= 131
77 1
2 38
38 0
2 19
19 1
2 9 9
9 1
2 4 4
4 0
2 2 2
2 0
2 1
Ce qui donne
Partie A.
Conversion
Partie B.
Addition binaire
1. Addition en base 10
Commenons par rappeler cet algorithme sur un exemple. On veut ajouter les nombres 728 et 456. On commence par ajouter les chiffres des units, 8 et 6. La table de laddition indique que la somme de ces deux chiffres est 14 ; on pose le chiffre des units, 4, et on retient le chiffre des dizaines, 1. On ajoute ensuite les chiffres des dizaines et cette retenue, 2, 5 et 1. La table de laddition indique que la somme de ces trois chiffres est 8 ; on pose le chiffre des units, 8, et on
2
retient le chiffre des dizaines, 0. On ajoute ensuite les chiffres des centaines et cette retenue, 7, 4 et 0. La table de laddition indique que la somme de ces trois chiffres est 11 ; on pose le chiffre des units, 1, et on retient le chiffre des dizaines, 1. Finalement, on pose cette retenue dans la colonne des milliers. Une irrgularit de cette mthode est que, lors de la premire itration, on ajoute deux chiffres, alors quen rgime permanent, on en ajoute trois. On peut corriger cela en commenant par poser la retenue gale 0. La premire itration se formule alors de la manire suivante : on commence par ajouter les chiffres des units et la retenue, 8, 6 et 0, etc. Ainsi, cet algorithme nutilise quune seule table, qui indique la somme de chacun des triplets (a ; b ; c) o a, b et c sont des chiffres compris entre 0 et 9, table quen gnral on connat par cur.
2. Addition en base 2.
Voyons maintenant comment on ajoute des nombres exprims en base deux, par exemple 101 et dire 5 et 7. , cest--
On commence, comme en base dix, par ajouter les chiffres des units et la retenue, 1, 1 et 0. La table de laddition indique que la somme de ces deux chiffres est 10 ; on pose le chiffre des units, 0, et on retient le chiffre des deuzaines, 1. On ajoute ensuite les chiffres des deuzaines et cette retenue, 0, 1 et 1. La table de laddition indique que la somme de ces trois chiffres est ; on pose le chiffre des units, 0, et on retient le chiffre des deuzaines, . On ajoute ensuite les chiffres des quatraines et cette retenue, 1, 1 et 1. La table de laddition indique que la somme de ces trois chiffres est ; on pose le chiffre des units, 1, et on retient le chiffre des deuzaines, . Finalement, on pose cette retenue dans la colonne des huitaines. Le rsultat est donc , (cest--dire 12 en base 10).
Remarque Il faut tenir compte, ds le deuxime rang que lon peut avoir une retenue ; donc il faut ajouter au rsultat prcdent la retenue de laddition de rang infrieur. Pour laddition de deux nombres binaires, on peut donc considrer quil faut ajouter chaque rang, 3 bits
et
consiste effectuer : Au rang 0 : la retenu tant 0, le bit de est la somme de , et la retenue 0 , A la rang : le bit de est la somme de , et la retenue du rang , Complter les cases vides du tableau suivant ( signifie ainsi de suite jusquau):
, soit
Complter la table suivante : En considrant une addition binaire comme la 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 somme effectuer sur trois mmoires un bit, Nous aurons comme rsultat : un bit de somme et un bit de retenue. La retenue est gale 1 ds que le rsultat, de la somme aval atteint la valeur 2 ( binaire) ou 3 (11 en binaire). en
4. Algorithme daddition
Soit 2 nombres binaires et . Leur somme reprsente par
et les retenues successives sont reprsents par . En langage C : , et seront reprsents par des variables de type tableau simple. Le nombre 9 sera par exemple reprsent par le tableau : {1,0,0,1}.
1. 2.
Complter lalgorithme daddition en base 2 ci-contre : Dfinir une fonction (programme C) nomme add_2.c qui effectue laddition binaire de A et B. ALGORITHME : Addition en base 2 (le nombre de bits nest pas limit a priori). VARIABLES DEBUT
FIN
Attention, 1. il faut penser, au pralable, complter si ncessaire, lune ou lautre des listes reprsentant A et B par des 0 gauche pour pouvoir effectuer lalgorithme daddition sur deux listes de mme taille. 2. Noubliez pas le cas de dbordement. voir lexemple du cours chapitre 1 Reprsentation de
linformation .
Exemple1 : : votre fonction doit complter la liste de procder lajout du nombre binaire reprsent par . Exemple 2. en avant
Sans dbordement Base 2 10010110 + 01111110 = 00010100 Base 10 150 + 126 = 20 (mod 256) Base 2
10010110 01111110
= 100010100
Remarque Attention, ne pas oublier de traiter le cas particulier de la dernire retenue gale 1. Pour encapsuler un algorithme dans une fonction, on suivra pas pas la dmarche suivante : o donner un nom explicite lalgorithme, o dfinir les paramtres dentre-sortie de lalgorithme, o prciser les prconditions sur les paramtres dentre, o donner des exemples dutilisation et les rsultats attendus, o dcrire par une phrase ce que fait lalgorithme et dans quelles conditions il le fait, o encapsuler lalgorithme dans la fonction spcifie par les 5 points prcdents.
------------------------- MENU -----------------------Entrer votre choix 0 : Aide 1 : Convertir en BINAIRE. 2 : Convertir en DECIMALE. 3 : Additionner deux nombres binaires 4 : Quiter --------------------------------------------------------------
b. Votre programme doit contenir 6 fonctions : i. la fonction Aide qui affiche comment utiliser et que fait votre programme ii. la fonction dec2bin qui convertit un nombre dcimal en binaire (ralise en A. 1.) iii. La fonction bin2dec qui convertit un nombre binaire en dcimal (ralise en A. 2.) iv. la fonction addbin qui additionne deux nombre binaire (ralise en B. 4.). v. la fonction principale main() qui excute les cinq taches selon le choix de lutilisateur c. Vous devez galement ajouter des commentaires permettant un programmeur de le comprendre sans ambigut.
Il contient :
lnonc du problme la spcification des donnes les conditions de fonctionnement analyse
Elle permet davoir une ide claire des tapes raliser pour la rsolution du problme donn, elle est rdige en franais.
Algorithme
On dtaille laide dun langage adapt les diffrents traitements (ou tapes)
Traduction
Il sagit de traduire les tapes prcdentes en langage de programmation (C ou C++, voir JAVA)
Excution
VARIABLES 2 a EST_DU_TYPE NOMBRE 3 b EST_DU_TYPE NOMBRE 4 c EST_DU_TYPE NOMBRE 5 d EST_DU_TYPE NOMBRE 6 pgcd EST_DU_TYPE NOMBRE 7 e EST_DU_TYPE NOMBRE 8 DEBUT_ALGORITHME 9 AFFICHER "Calcul du PGCD de 2 nombres " 10 AFFICHER " - Algorithme d'Euclide -" 11 AFFICHER " " 12 AFFICHER "Entrer le 1er nombre entier : " 13 LIRE a 14 c PREND_LA_VALEUR a 15 AFFICHER a 16 AFFICHER "Entrer le 2e nombre entier : " 17 LIRE b 18 AFFICHER b 19 d PREND_LA_VALEUR b 20 AFFICHER " " 21 TANT_QUE (d>0) FAIRE 22 DEBUT_TANT_QUE 23 e PREND_LA_VALEUR c%d 24 c PREND_LA_VALEUR d 25 d PREND_LA_VALEUR e 26 FIN_TANT_QUE 27 pgcd PREND_LA_VALEUR c 28 AFFICHER " " 29 SI (pgcd==1) ALORS 30 DEBUT_SI 31 AFFICHER "Les nombres " 32 AFFICHER a 33 AFFICHER " et " 34 AFFICHER b 35 AFFICHER " sont premiers entre eux." 36 AFFICHER " " 37 FIN_SI 38 SINON 39 DEBUT_SINON 40 AFFICHER "Le PGCD de " 41 AFFICHER a 42 AFFICHER " et " 43 AFFICHER b 44 AFFICHER " est " 45 AFFICHER pgcd 46 AFFICHER " " 47 FIN_SINON 48 FIN_ALGORITHME
9