Problème des suites – Bac pratique – Section informatique – 2015

Bac Info 06-01-26
42 0

Sujet (Algo et programmation - Bac 2015)

Soit la suite U définie par :

La suite U converge toujours vers 1 quelque soit la valeur de départ (Uo).

Travail demandé

Ecrire un programme en Python intitulé "Suit_Min" qui permet de

1- Remplir un fichier nommé "Departdat" par P entiers compris entre 2 et 1000 représentant différentes valeurs de U0 (avec 2 < P < 30).

2- A partir du fichier "Depart.dat", générer un nouveau fichier d'enregistrements nommé "Suite.dat" où chaque enregistrement contient les champs suivants :

Dep : valeur du terme de départ Uo provenant du fichier "liepart.dat".

Nb nombre de termes calculés de la suite U pour atteindre la valeur 1.

3- A partir du fichier "Suite.dat", afficher les valeurs des termes de départ (Dep) correspondant au nombre de termes (Nb) minimal.

 

Solution Algorithmique

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

- la fonction saisie()

- la procédure remplir_fichier_depart()

- la fonction nbr_termes_suite()

- la procédure remplir_fichier_suite()

- la fonction recherche_terme_min()

- la procédure afficher_termes_min()

 

Algorithme du programme Principal

Déclaration des objets

Objet Type / Nature
p entier
terme_min entier

 

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 procédure remplir_fichier_depart

Le rôle de cette procédure remplir_fichier_depart est de permettre à l’utilisateur de saisir p nombres entiers compris entre 2 et 2000 et de les enregistrer dans le fichier Depart.dat, un nombre par ligne.

1- Affichage d’un message

La procédure informe l’utilisateur que le remplissage du fichier va commencer.

2- Ouverture du fichier Depart.dat en mode écriture

Le fichier est créé ou écrasé s’il existe déjà.

Les données qui y seront écrites remplaceront le contenu précédent.

3- Boucle de saisie des nombres

La procédure demande p nombres à l’utilisateur de saisir un entier valide.

Elle appelle la fonction saisie pour récupérer un entier compris strictement entre 2 et 2000.

Cette fonction vérifie que l’utilisateur entre une valeur correcte.

4- Écriture du nombre dans le fichier

La procédure convertit le nombre en chaîne de caractères.

La procédure écrit chaque nombre sur une nouvelle ligne du fichier.

5- Fermeture du fichier

La procédure sauvegarde définitivement les données et libère la ressource.

Déclaration des objets

Objet Type / Nature
f fichier
i entier
u0 entier

 

La fonction nbr_termes_suite

Le rôle de cette fonction nbr_termes_suite est de calculer et retourner le nombre de termes de la suite de Collatz (ou suite 3n+1) à partir d’un entier u0 jusqu’à atteindre 1.

Étapes détaillées du fonctionnement

1- Initialisation du compteur

Un compteur nbr_termes est créé pour compter le nombre d’étapes de la suite. Initialement, il vaut 0.

2- Boucle principale

Tant que la valeur actuelle u0 n’est pas égale à 1, la boucle continue.

L’objectif est d’appliquer les règles de Collatz jusqu’à ce que la suite atteigne 1.

Si u0 est pair, on le divise par 2.

Si u0 est impair, on le transforme en 3*u0 + 1.

Mise à jour de la valeur courante : u0 = u1

La nouvelle valeur calculée devient la valeur courante pour l’itération suivante.

Incrémentation du compteur : nbr_termes = nbr_termes + 1

À chaque étape, on ajoute 1 au compteur pour suivre le nombre de transformations effectuées.

3- Retour de la valeur

Une fois que u0 atteint 1, la fonction retourne le nombre total d’étapes nécessaires pour arriver à 1.

Déclaration des objets

Objet Type / Nature
u1 entier
nbr_termes entier

 

La procédure remplir_fichier_suite

La procédure remplir_fichier_suite parcourt toutes les valeurs de départ dans Depart.dat, calcule pour chacune le nombre de termes de la suite U, et enregistre ces informations dans un fichier binaire Suite.dat sous forme de dictionnaires.

Étapes détaillées du fonctionnement

1- Affichage d’un message

La procédure informe l’utilisateur que le calcul et l’enregistrement des suites vont commencer.

2- Ouverture des fichiers

Depart.dat : fichier texte contenant les valeurs de départ.

Suite.dat : fichier binaire où seront enregistrées les informations pour chaque suite.

3- Lecture des lignes du fichier de départ

Chaque ligne contient un nombre saisi par l’utilisateur.

La procédure supprime le caractère \n à la fin de chaque ligne pour ne garder que le nombre.

Elle calcule le nombre de termes de la suite et prépare un enregistrement contenant la valeur de départ et le nombre de termes.

Elle écrit l'enregistrement dans le fichier binaire et enregistre le dictionnaire dans Suite.dat au format binaire avec pickle.

4- Fermeture des fichiers

La procédure sauvegarde les données et libère les ressources.

Déclaration des objets

Objet Type / Nature
f_depart fichier
f_suite fichier
termes_u0 chaîne
u0 chaîne
suite_enregistrement Enregistrement
nbr_termes entier

 

La fonction recherche_terme_min

La fonction lit toutes les valeurs de départ dans Depart.dat, calcule le nombre de termes de chaque suite de Collatz, et retourne le plus petit nombre de termes trouvé.

Étapes détaillées du fonctionnement

1- Ouverture du fichier de départ

La fonction ouvre le fichier texte contenant les valeurs de départ des suites.

2- Lecture de la première valeur

La fonction lit la première ligne et supprime le retour à la ligne.

3- Initialisation du minimum

La fonction calcule le nombre de termes de la suite pour la première valeur u0.

Ce nombre sert d’initialisation du minimum.

4- Lecture de la deuxième valeur et boucle sur toutes les autres

La fonction parcourt toutes les lignes suivantes jusqu’à la fin du fichier.

5- Mise à jour du minimum

Pour chaque valeur de départ, la fonction calcule le nombre de termes de sa suite.

Si ce nombre est inférieur au minimum courant, on met à jour le minimum.

6- Lecture de la ligne suivante

La fonction passe à la valeur suivante.

7- Fermeture du fichier

La fonction libère la ressource après avoir terminé la lecture.

8- Retour du résultat

La fonction renvoie le nombre minimal de termes parmi toutes les suites.

Déclaration des objets

Objet Type / Nature
f_depart fichier
u0 chaîne
terme_min entier

 

La procédure afficher_termes_min

Cette procédure permet de remplir le tableau t avec les 9 pixels voisins du pixel situé à la position (i, j) dans la matrice m, y compris le pixel central.

La matrice m représente une image (ou une matrice de pixels).

Le pixel central est m[i][j].

Les pixels voisins correspondent au voisinage 3×3 autour de ce pixel.

Déclaration des objets

Objet Type / Nature
f_suite fichier
suites 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