Problème des molécules – Bac théorique – Section informatique – 2014

Bac Info 05-01-26
41 0

Sujet (Algo et programmation - Bac 2014)

Une molécule est un regroupement d'au moins deux atomes qui sont unis par des liens chimiques et elle est représentée par une formule chimique. Exemple : HO2.

Une formule chimique est une succession de symboles d'atomes, suivi chacun par un entier représentant le nombre d'apparitions (nbr) de l'atome dans la molécule.

Chaque atome est symbolisé par la première lettre de son nom en majuscule, suivie éventuellement d'une deuxième lettre en minuscule pour distinguer des atomes ayant des initiales identiques. Ainsi, le Fluor (F) se distingue du Fer (Fe), du Fermium (Fm) et du Francium (Fr),

Le calcul de la masse molaire moléculaire d'une molécule, notée NI(Molécule), sera comme suit :

- pour chaque atome de la molécule, calculer le produit (nbr x Matome)) ois A(atome) est un réel représentant la masse atomique de l'atome

- calculer la somme des produits obtenus.

Exemple :

Pour la molécule dichromate de potassium (K2Cr207) qui est constituée de 2 atomes de potassium. (K), 2 atomes de chrome (Cr) et .7 atomes d'oxygène (e), sa masse molaire moléculaire ill(K2Cr207) est égale à 2*.A(K) ± 2 *A ('Cr,) + 7 *.4 CO.

Puisque A(K) = 39,1 g/mol, A(Cr) = 52 g/ o1 et A(0) = 16 g/mol,

alors M(K2Cr207) sera égale à 2 * 39,1 + 2*52 + * 16 = 294,2 g/mol

En disposant d'un fichier texte "Molecules.txt" dont chaque ligne contient le nom d'une molécule suivi de sa formule chimique, séparés par le caractère astérisque "*", écrire un programme permettant de :

- remplir un fichier "Atomes.dat" par les données relatives à N atomes (N<50), où chacun est représenté par son symbole et sa masse atomique, - stocker dans un fichier "Resultats.dat" le nom et la masse molaire moléculaire de chaque molécule figurant dans le fichier "Molecules.txt". Travail demandé

1- Analyser le problème en le décomposant en modules.

2- Analyser chacun des modules envisagés.

 

Solution Algorithmique

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

- la fonction saisie()

- la fonction verif_atome()

- la fonction saisie_atome()

- la procédure remplir_fichier_atomes()

- la fonction verif_formule()

- la fonction saisie_formule()

- la procédure remplir_fichier_molecules()

- la procédure extraire_noms_nombres_atomes()

- la fonction recherche_atome()

- la procédure remplir_fichier_resultats()

 

Algorithme du programme Principal

Déclaration des objets

Objet Type / Nature
longueur_noms entier
longueur_nombres entier
n entier
m entier
noms_atomes tableau des chaînes
nombres_atomes tableau des entiers

 

La fonction saisie

Le rôle de cette fonction est de permettre à l’utilisateur de saisir un entier n compris strictement entre deux bornes inf et sup.

1- La fonction saisie(inf, sup) demande à l’utilisateur d’entrer un entier n.

2- Elle vérifie que n appartient à l’intervalle ouvert ] inf , sup [ (c’est-à-dire inf < n < sup). 3- Tant que la valeur saisie n’est pas valide (n ≤ inf ou n ≥ sup), la fonction redemande la saisie. 4- Une fois une valeur correcte entrée, la fonction retourne n.

Déclaration des objets

Objet Type / Nature
n entier

 

La fonction verif_atome

Le rôle de cette fonction est de vérifier si une chaîne de caractères représente un nom d’atome valide, c’est-à-dire composée uniquement de lettres.

1- La fonction verif_atome(ch) parcourt la chaîne caractère par caractère.

2- À chaque étape, elle vérifie si le caractère courant est une lettre de l’alphabet (majuscule ou minuscule).

3- La méthode Majus() permet de traiter les deux cas (A–Z et a–z).

4- La boucle s’arrête dès qu’un caractère non alphabétique est trouvé ou quand on atteint l’avant-dernier caractère.

5- Valeur retournée :

Vrai → la chaîne contient uniquement des lettres (nom d’atome valide)

Faux → la chaîne contient au moins un caractère non alphabétique (chiffre, symbole, espace…)

Déclaration des objets

Objet Type / Nature
i entier

 

La fonction saisie_atome()

Le rôle de cette fonction est de permettre la saisie d’un nom d’atome valide et garantir qu’il est composé uniquement de lettres.

1- La fonction saisie_atome() demande à l’utilisateur d’entrer le nom d’un atome.

2- Elle utilise la fonction verif_atome(atome) pour vérifier la validité du nom saisi.

3- Tant que le nom contient des caractères non alphabétiques (chiffres, symboles, espaces…), la saisie est redemandée.

4- Une fois un nom valide entré, la fonction retourne ce nom.

Déclaration des objets

Objet Type / Nature
atome chaîne

 

La procédure remplir_fichier_atomes

Le rôle de cette procédure est de créer et remplir le fichier Atomes.dat avec les informations de n atomes (nom et masse atomique).

1- La procédure remplir_fichier_atomes(n) ouvre le fichier Atomes.dat en mode écriture.

2- Elle répète l’opération n fois :

- saisit un nom d’atome valide grâce à la fonction saisie_atome(),

- saisit la masse atomique correspondante,

- écrit ces deux informations sur une seule ligne du fichier sous la forme : nom_atome masse_atomique

- Chaque atome est enregistré sur une ligne différente.

3- À la fin, le fichier est correctement fermé.

Déclaration des objets

Objet Type / Nature
f fichier
i entier
atome chaîne
masse réel

 

La fonction verif_formule

Le rôle de cette fonction est de vérifier si une chaîne de caractères représente une formule chimique valide, selon des règles simples de syntaxe.

1- La fonction commence par vérifier que la chaîne a au moins 2 caractères.

2- Elle teste ensuite :

-le premier caractère : doit être une lettre (A–Z ou a–z),

- le dernier caractère : doit être un chiffre (0–9).

3- Elle parcourt ensuite toute la chaîne pour vérifier que chaque caractère est soit : une lettre ou un chiffre.

4- Si toutes les conditions sont respectées, la fonction retourne Vrai, sinon Faux.

Déclaration des objets

Objet Type / Nature
i entier

 

La fonction saisie_formule()

Le rôle de cette fonction est de permettre la saisie d’une formule chimique valide et garantir qu’elle respecte les règles de validation définies.

1- La fonction saisie_formule() demande à l’utilisateur d’entrer une formule chimique.

2- Elle utilise la fonction verif_formule(formule) pour vérifier la validité de la formule saisie.

3- Tant que la formule ne respecte pas les règles (formule invalide), la saisie est redemandée.

4- Une fois une formule correcte entrée, la fonction retourne cette formule.

Déclaration des objets

Objet Type / Nature
formule chaîne

 

La procédure remplir_fichier_molecules

Le rôle de cette procédure est de créer et remplir le fichier Molecules.txt avec les noms des molécules et leurs formules chimiques valides.

1- La procédure remplir_fichier_molecules(m) ouvre le fichier Molecules.txt en mode écriture.

2- Elle répète l’opération m fois :

- saisit le nom de la molécule,

- saisit et valide sa formule chimique à l’aide de la fonction saisie_formule(),

- écrit ces informations dans le fichier selon le format : nom_molecule*formule

- Chaque molécule est enregistrée sur une ligne distincte.

3- À la fin, le fichier est correctement fermé.

Déclaration des objets

Objet Type / Nature
f fichier
i entier
molecule chaîne
formule chaîne

 

La procédure extraire_noms_nombres_atomes

Le rôle de cette procédure est d' analyser une formule chimique et en extraire : les noms des atomes,le nombre (indice) de chaque atome, puis stocker ces informations dans deux tableaux distincts.

1- La procédure extraire_noms_nombres_atomes(formule, noms_atomes, nombres_atomes) reçoit :

- une formule chimique (ex : "H2O1"),

- un tableau pour les noms des atomes,

- un tableau pour les nombres d’atomes.

2- Elle initialise les tableaux et remet à zéro les longueurs globales.

3- Elle parcourt la formule caractère par caractère :

- Les lettres sont regroupées pour former le nom d’un atome.

- Les chiffres sont regroupés pour former le nombre d’atomes correspondant.

- Chaque nom d’atome est stocké dans noms_atomes.

- Chaque nombre associé est stocké dans nombres_atomes.

Déclaration des objets

Objet Type / Nature
i entier
longueur_noms entier (variable globale)
longueur_nombres entier (variable globale)
mot chaîne
nb chaîne

 

La fonction recherche_atome

Le rôle de cette fonction est de rechercher un atome donné dans un tableau de noms d’atomes et retourner son indice.

1- La fonction recherche_atome(atome, noms_atomes) parcourt le tableau noms_atomes.

2- Elle compare chaque élément du tableau avec le nom de l’atome recherché.

3- La recherche se fait séquentiellement depuis l’indice 0 jusqu’à longueur_noms − 1.

4- Dès que l’atome est trouvé, la boucle s’arrête. La fonction retourne l’indice.

Déclaration des objets

Objet Type / Nature
i entier
longueur_noms entier (variable globale)

 

La procédure remplir_fichier_resultats

Le rôle de cette procédure est de calculer la masse molaire de chaque molécule du fichier Molecules.txt et enregistrer les résultats dans Resultat.dat.

Explication détaillée du fonctionnement :

1- Ouverture des fichiers :

- Molecules.txt : contient les molécules et leurs formules (nom_molecule*formule).

- Resultat.dat : fichier où seront enregistrés les noms des molécules et leur masse molaire.

2- Lecture des molécules :

Chaque ligne du fichier Molecules.txt est lue et la formule chimique est extraite après le *.

3- Extraction des atomes et de leurs nombres :

La fonction extraire_noms_nombres_atomes décompose la formule en deux tableaux :

- noms_atomes : les symboles des atomes présents,

- nombres_atomes : le nombre d’atomes correspondant.

4- Calcul de la masse moléculaire :

Pour chaque atome, on lit son symbole et sa masse atomique depuis Atomes.dat.

On cherche l’indice de l’atome dans le tableau avec reherche_atome.

On multiplie la masse atomique par le nombre d’atomes dans la molécule et on additionne au total.

5- Écriture des résultats :

Le nom de la molécule et sa masse molaire calculée sont : affichés à l’écran et écrits dans Resultat.dat.

6- Fermeture des fichiers :

Tous les fichiers sont correctement fermés après traitement.

Déclaration des objets

Objet Type / Nature
f_resultat fichier
f_molecules fichier
f_atome fichier
molecules chaîne
formule chaîne
masse réel
atome chaîne
i entier

 

Solution en Python

Exécution du programme

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 Haj Salah - Prof Info