Conversion nombres – Bac pratique – Section informatique- 2008

Bac Info 20-11-25
18 0

Sujet (Algo et programmation - Bac 2008)

On dispose d'un fichier intitulé nombres.dat composé d'une suite de nombres entiers naturels écrits dans la base 10.

On se propose de remplir un deuxième fichier intitulé nbr_conv.dat comportant autant d'enregistrements que de nombres dans le fichier nombres.dat.

Chaque enregistrement est composé de quatre données successives : le nombre décimal pris du premier fichier, son équivalent binaire, son équivalent octal puis son équivalent hexadécimal.

Questions :

Ecrire un programme qui crée et remplit le fichier nombres.dat par n entiers naturels inférieurs à 32000 (5 < n <100). Ensuite, il lit de ce fichier les nombres décimaux, les convertit dans les bases indiquées ci haut, affiche les résultats de ces conversions puis les met dans le fichier nbr_conv.dat sous forme d'enregistrements.

Solution Algorithmique

Ce programme réalise un mini-système de traitement et conversion de nombres, avec :

✔ Saisie contrôlée
✔ Stockage des valeurs dans un fichier
✔ Conversion en plusieurs bases
✔ Génération d’un second fichier regroupant toutes les conversions

Dans cet algorithme, On va utiliser quatre fonctions et deux procédures :

Algorithme du programme Principal

Déclaration des objets

Objet Type / Nature
n entier

La fonction saisir

Cette fonction saisit et retourne un entier entre 5 et 100.

Déclaration des objets

Objet Type / Nature
n entier

La fonction convertir_binaire

L’objectif de cette fonction est de convertir un nombre décimal (base 10) en binaire (base 2) sans utiliser de fonction Python prête à l’emploi.

Cette fonction permet de :

1) prendre un nombre décimal.

2) lire son dernier bit (reste de la division par 2).

3) ajouter ce bit au début de la chaîne binaire.

4) diviser le nombre par 2.

5) répéter jusqu’à ce que le nombre soit nul.

Déclaration des objets

Objet Type / Nature
binaire chaine
reste entier

 

La fonction convertir_octal

Cette fonction a pour rôle de convertir un nombre décimal (base 10) en un nombre octal (base 8) sans utiliser de fonctions Python toutes faites.

Elle applique la méthode mathématique classique de conversion :

1- On divise le nombre par 8 (puisque l’octal est en base 8),

2- On récupère à chaque étape le reste (un chiffre entre 0 et 7),

3- On construit le nombre octal en plaçant chaque nouveau chiffre à gauche,

4- On recommence jusqu’à ce que le nombre devienne 0.

Déclaration des objets

Objet Type / Nature
octal chaine
reste entier

 

La fonction convertir_hexadecimal

Cette fonction a pour rôle de convertir un nombre décimal (base 10) en un nombre hexadécimal (base 16) en utilisant la méthode de conversion manuelle.

Comment elle fonctionne ?

1- Elle divise successivement le nombre par 16.

2- À chaque étape, elle récupère le reste, qui correspond à un chiffre hexadécimal.

3- Comme l’hexadécimal utilise 16 symboles (0–9 et A–F), la fonction récupère le bon caractère dans la chaîne :"0123456789ABCDEF"

4- Chaque caractère obtenu est ajouté à gauche pour construire correctement le nombre hexadécimal.

5- La conversion s’arrête lorsque le nombre devient 0.

Déclaration des objets

Objet Type / Nature
hexa chaine
caracteres chaine
reste entier

 

La procédure remplir_fichier_nombres

Cette procédure sert à saisir plusieurs nombres entiers depuis le clavier et à les enregistrer dans un fichier texte nommé nombre.dat.

Plus précisément, elle réalise les actions suivantes :

- Ouvrir le fichier nombre.dat en mode écriture. Cela crée le fichier ou écrase son contenu s’il existe déjà.

- Demander à l’utilisateur d’entrer n nombres entiers

- Écrire chaque nombre dans le fichier. Chaque nombre est enregistré sur une ligne du fichier.

- Fermer le fichier à la fin

Déclaration des objets

Objet Type / Nature
f fichier du nombre.dat
i entier
nombre chaine

 

La procédure remplir_fichier_conv

Cette procédure lit tous les nombres enregistrés dans le fichier nombre.dat, puis pour chaque nombre :

1- Elle convertit le nombre : en binaire, en octal et en hexadécimal.

2- Elle écrit dans un nouveau fichier nbr_conv.dat, sur une même ligne : le nombre en décimal, son équivalent en binaire, son équivalent en octal et son équivalent en hexadécimal

Le tout séparé par des espaces.

3- Elle ferme les deux fichiers à la fin du traitement.

Déclaration des objets

Objet Type / Nature
f_nombre fichier du nombre.dat
f_convnombre fichier du nbr_conv.dat
i entier
nombre chaine

Solution en Python

0 commentaire

laisser un commentaire

Veuillez noter s'il vous plaît*

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Passion de robotique

Atelier robotique

Construction des robots

Bras robotique

Maison intelligente

But de ce site web

La robotique éducative joue un rôle important dans l'éducation des enfants et des jeunes en les aidant à acquérir des compétences en science et technologie.
Dans ce cadre notre site web représente une excellente ressource pour les parents, les enseignants et les enfants qui souhaitent découvrir la robotique.

Coordonnées

Zaouiet Kontech-Jemmel-Monastir-Tunisie

+216 92 886 231

medaliprof@gmail.com

Photos des articles

Site robotique réalisé par Mohamed Ali-Prof Info