Pistolet de FURY – Bac théorique – Section informatique – 2025

Bac Info 27-01-26
20 0

Sujet (Algo et programmation - Bac 2025)

Le pistolet de FUR Y génère des impulsions successives dont l'intensité, exprimée en valeurs entières, varie selon une loi mathématique. Pour calculer le cycle de l'intensité de l'impulsion, il suffit de suivre le procédé suivant :

Etape 1 : Convertir en binaire l'intensité de l'impulsion émise (l'entier de départ).

Etape 2 : Inverser les chiffres de ce nombre binaire (miroir du nombre binaire).

Etape 3 : Convertir en base 10 le nombre binaire obtenu à l'étape 2, puis lui ajouter

Répéter les trois étapes précédentes jusqu'à ce que l'intensité de l'impulsion émise devienne périodique c'est-à-dire que le résultat retourné par l'étape 3 soit l'entier de départ.

Exemple :

Si le pistolet est réglé sur 39 (intensité de l'impulsion initiale) alors, lors d'un tir, les impulsions émises auront pour intensité :

D'où, on constate que pour le réglage 39, les intensités sont périodiques et les valeurs 39, 59, 57, 41 se répètent indéfiniment . Pour le réglage 39, la période est donc 4.

Pour certaines valeurs, l'intensité n'est jamais périodique. Le comportement du pistolet devient alors imprévisible et peut s'exploser après un changement d'intensité de plus de 1024 fois.

Afin d'améliorer le pistolet de FURY, il convient de ne permettre que les réglages des valeurs de départ qui donnent lieu à un comportement périodique.

On se propose de simuler le fonctionnement du pistolet de FURY afin de générer, sur la racine du disque C, un fichier d'enregistrement "Amplitude.dat" contenant les cycles périodiques associés à des valeurs de départ de l'intensité de l'impulsion. Ces valeurs de départ sont préalablement stockées dans un fichier texte "Depart.txt", déjà rempli et enregistré sous la racine du disque C à raison d'un entier par ligne.

Chaque enregistrement du fichier "Amplitucle.dat" est formé par les champs suivants :

Cycle : une chaîne de caractères qui contient les intensités des impulsions ayant abouti à un

cycle périodique, où chaque paire d'intensités est séparée par le caractère "e.

Periode : un entier naturel qui représente le nombre d'impulsions du cycle périodique.

MB : Si l'entier de départ n'aboutit pas à un cycle périodique après 1024 changements d'intensité, on arrête la vérification pour cet entier.

Exemple :

Pour le réglage de départ 39 :

- le champ Cycle = "39#59#57#41"

- le champ Periode = 4

Travail demandé :

1- Ecrire les instructions d'ouverture des deux fichiers "Depart.txt" et "Amplitude.dat" sachant que les noms logiques des deux fichiers sont respectivement Fd et

2- Ecrire un algorithme d'une procédure FURY(Fd, Fa) qui permet de générer le fichier d'enregistrements Fa à partir des valeurs de départ de l'intensité de l'impulsion stockées dans le fichier texte Fd en respectant le procédé décrit précédemment.

NB : Le candidat est appelé à déclarer les nouveaux types nécessaires pour le fichier Fa.

 

Solution Algorithmique

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

- la fonction saisie()

- la fonction decimal_vers_binaire()

- la fonction inverser_binaire()

- la fonction binaire_vers_decimal()

- la procédure remplir_fichier_depart()

- la procédure fury()

Algorithme du programme Principal

Déclaration des objets

Objet Type / Nature
n entier

 

La fonction saisie

Cette fonction permet de saisir et retourner un entier > 0 en contrôlant la validité de la saisie.

Déclaration des objets

Objet Type / Nature
n entier

 

La fonction decimal_vers_binaire

Le rôle de la fonction decimal_vers_binaire est de convertir un entier décimal en sa représentation binaire sous forme de chaîne de caractères.

Déclaration des objets

Objet Type / Nature
binaire chaîne

 

La fonction inverser_binaire

Le rôle de la fonction inverser_binaire est de renverser une chaîne de caractères représentant un nombre binaire, c’est-à-dire que le premier bit devient le dernier et le dernier devient le premier.

Déclaration des objets

Objet Type / Nature
binaire_inverse chaîne
i entier

 

La fonction binaire_vers_decimal

Le rôle de la fonction binaire_vers_decimal est de convertir une chaîne représentant un nombre binaire en son équivalent entier décimal.

Déclaration des objets

Objet Type / Nature
decimal entier
puissance entier
i entier

 

La procédure remplir_fichier_depart

Le rôle de la procédure remplir_fichier_depart est de créer et remplir un fichier texte nommé "Depart.txt" avec les nombres entiers de 0 à n‑1, un nombre par ligne.

Déclaration des objets

Objet Type / Nature
f fichier
i entier

 

La procédure fury

Le rôle de la procédure fury est de calculer pour chaque entier d’un fichier de départ un “cycle” de transformations binaires et sa période, puis de sauvegarder ces résultats dans un fichier binaire.

Déclaration des objets

Objet Type / Nature
f_depart fichier
f_amplitude fichier
nombres chaîne
nombre chaîne
n entier
binaire chaîne
binaire_inverse chaîne
n1 entier
n2 entier
cycle chaîne
periode entier
amplitude enregistrement

 

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