NOMBRES - Curiosités, théorie et usages

 

Accueil                           DicoNombre            Rubriques           Nouveautés      Édition du: 19/04/2020

Orientation générale        DicoMot Math          Atlas                   Actualités                       M'écrire

Barre de recherche          DicoCulture              Index alphabétique        Références      Brèves de Maths

      

Programmation

 

Débutants

Programmation

PYTHON

 

Glossaire

Informatique

Glossaire

Algorithme

 

 

 

INDEX

Python

 

Programmation

Informatique

Multimédia

Ordinateur

 

Python (la base)

Glossaire

 Palindrome

Les classiques

Arithmétique

Dessins

Puissances

Plus de chiffres

Trucs

Chiffres

NumPy

Exercice pas à pas

Lycée

 

Sommaire de cette page

>>> Algorithme pas à pas

>>> Implémentation en langage Python

>>> Implémentation en langage Sratch

>>> Implémentation en langage Maple

>>> Bilan du calcul

 

 

 

 PROGRAMMATION PYTHON

Un exercice expliqué pas à pas

 

Je suis perdu comme une poule qui aurait trouvé un couteau ! J'ai vraiment  besoin d'une explication qui reprenne tout depuis le début.

*    Dans la première partie de cette page, on profite d'un exercice, simple pour certains et qui parait insurmontable pour d'autres. On va décoder l'algorithme proposé et le coder en Python.

*    Dans la seconde, on en profite pour explorer deux autres langages de programmation tout en étudiant les dessous mathématiques des calculs.

 

Voir absolument  Mon espace de travail en Python

 

 

Algorithme pas à pas

On nous demande de déchiffrer cet algorithme.

Comment le lire, l'interpréter et le réaliser en langage Python ?

 

 

Mentalement, on lit les lignes les unes après les autres. Chaque ligne est un code, une instruction, une directive invitant à effectuer un calcul, une opération, un traitement.

 

 

Première ligne

Notation classique avec une flèche d'une fonction à laquelle on attribue une valeur, on affecte une valeur

Ici, on indique que la variable S va prendre la valeur 1.

En Python, c'est simple: on écrit S = 1; dans d'autres langages de programmation, on précise bien qu'il s'agit du chargement de la valeur 1 dans un mémoire que l'on appelle S, et on écrit: S: = 1.

Il est probable que cette variable va être modifiée au cours du déroulement de l'algorithme. On dit que cette ligne est une instruction d'initialisation.

 

La variable S prend la valeur 1.

 

On note:

S = 1

 

ou parfois:

S := 1

 

Deuxième ligne

Cette ligne de code est typiquement une instruction de répétition de tout le calcul qui va suivre. On dit qu'il s'agit d'une boucle de calcul ou aussi qu'il s'agit d'un calcul itératif (qui veut dire: répétitif mais avec des valeurs qui changent à chaque fois).

Ici, on lit  qu'il faut faire le calcul (n – 1) fois avec une variable i qui va prendre les valeurs successives de 1 à n – 1

On remarque en passant que l'algorithme ne précise pas la valeur de n; elle est laissée au choix de l'utilisateur.

 

 

Si n = 4

Alors:  i = 1, puis, 2, puis 3

et Arrêt car 4 – 1 = 3

 

Troisième ligne

Nous avons la signification de la flèche: ici, la variable S va être modifiée. Sa nouvelle valeur est égale à l'ancienne valeur à laquelle on ajoute cette drôle de fraction.

 

Coin maths

La fraction est égale à 1/2 = 0,5 portée d'abord à la puissance i (qui au début vaut 1) et, le tout, au carré. En fait, cette double puissance (i puis 2) se résume à une seule (2i)

Le numérateur (1) à la puissance 2i vaut 1 et le dénominateur vaut 2^2·i.

L'accent circonflexe (^) est le symbole de la puissance lorsqu'on se peut pas écrire les exposants. En informatique (Python) on utilise aussi le double astérisque: **

 

 

 

 

 

Retour à l'algorithme complet

Appel avec n = 4.

Initialisation avec S = 1.

Lancement de la boucle avec  i = 1.

 

Premier tour de la boucle

n = 3, S = 1 et i = 1:
alors nouvel S = 1 + 1 / 2^2 = 5/4

 

Tour suivant avec i = 2,
alors: S = 5/4 + 1 / 2^4 = 21/16

Etc.      Voir le tableau récapitulatif

 

 

Déroulement le l'algorithme (boucle)

n

S

i

S

3

1

1

3

2

3

3

Arrêt pour i = n – 1  = 4 – 3

Valeur de sortie: 85/64 = 1,328125

 

 

 

Implémentation en langage Python

Algorithme à réaliser (à implémenter)

Si vous êtes novices en langage Python, il faut absolument lire cette page >>>

 

 

 

Éditeur (écriture du programme)

 

Faire enregistrement sous un nom à vous puis exécution (F5 ou run)

 

Interpréteur (résultat du calcul)

 

 

Après avoir précisé la valeur choisie pour n, on initialise la valeur de la somme S à 1.

Nous sommes prêts à lancer la boucle. Le code est en anglais et la ligne se lit:

Pour i dans le domaine (1, n, 1), et implicitement,
veuillez exécuter la suite.

Domaine (1, n, 1) veut dire: 1 est le départ, n est la valeur d'arrêt qui, d'ailleurs, ne doit pas être exécutée. Le dernier 1 est facultatif, il indique que i doit progresser par pas de 1.

Le calcul de S s'écrit simplement en retenant que le symbole de la puissance est **.

Si on veut voir le résultat du traitement, il faut en demander l'impression avec l'instruction print (imprimer en anglais). Notez qu'en anglais la virgule est devenue un point.

 

 

Implémentation en langage Scratch

 

Bloc de calcul de la puissance b du nombre a

 

 

Programme principal

 

 

COMMENTAIRES

 

Puissance b de a: création d'une fonction

Curieusement Scratch ne dispose pas du calcul de la puissance. Le premier programme est un bloc, défini à l'aide de la palette des instructions.

Ce bloc dispose de deux valeurs d'entrée a et b et va multiplier a par lui-même b fois, le résultat est dans P.

 

Le programme principal commence par initialiser n = 10 (exemple), S = 1 et place i, un compteur de boucle, à 1.

Les résultats du calcul seront placés dans la liste L, en commençant avec le premier élément 1.

Boucle de répétition

On positionne a et b pour appeler la fonction Puissance, laquelle livrera son résultat en P.

Cette valeur est injectée dans le calcul de S, et le résultat est ajouté à la liste L.

Avant de repartir pour une nouvelle itération, la valeur de i est incrémentée (on lui ajoute 1).

 

Résultat du calcul

Le programme est lancé en cliquant sur le drapeau vert.

La liste calculée est visible dans la zone d'exécution.  Au besoin, le cadre est redimensionné en l'étirant en bas à droite.

La dernière instruction "attendre une seconde" est facultative. Elle permet de voir se constituer la liste pas à pas.

 

 

 

Implémentation en langage Maple

 

Programme

Résultat

Explications

 

Restart efface tout ce qui a pu être fait auparavant. On donne une valeur à n et à S au démarrage.

On introduit deux listes de nombres (F et Fd)  pour recueillir tous nos calculs.

 

La boucle se lit: pour i de 1 à n faire. La boucle sera close en écrivant le do (faire) à l'envers: od.

Calcul de S. Ce langage dédié aux maths permet l'écriture classique de la formule mathématique.

 

On range le résultat sous sa forme fractionnaire dans F, puis sous sa forme décimale dans Fd (instruction evalf).

 

En écrivant F; et Fd; le programme imprime ces deux listes.

 

Programme pour expert

Explications

Initialisation

Calcul de tous les inverses des puissances de 2 dans la séquence S. On commence par i = 0 pour disposer du 1 initial.

Addition de toutes des valeurs avec add. Les valeurs sont extraites de S pour les rangs j allant de 1 au dernier spécifié par nops(S).

Les points virgules indiquent que les résultats doivent être imprimés.

 

Encore plus concis

 

Algorithme traduit en formule

Lecture: S est égal à la somme cumulée de cette expression pour i valant toutes les valeurs de 0 à n.

 

L'instruction sum opère directement ce type de calcul (somme cumulée).

 

 

Bilan du calcul

 

S est la somme cumulée des inverses des puissances paires de 2:

 

Fractions

 

Expression décimale (en gardant le point anglais)

1, 1.250000000, 1.312500000, 1.328125000, 1.332031250, 1.333007812, 1.333251953, 1.333312988, 1.333328247, 1.333332062, 1.333333015

 

Convergence

Cette suite de nombres converge vers 1, 333… = 4/3

 

Algorithme traduit en formule

 

 

 

 

Retour

*         Python – Ce qu'il faut absolument comprendre avant de se lancer

*         Les classiques en Python

Suite

*         Tour d'horizon avec l'exemple des palindromes

*         Les classiques – Factorielle, Fibonacci …

*         Comment obtenir plus de chiffres significatifs

*         Mes premiers dessins

*         Tous les programmes sur ce siteIndex

*         Exercices en lycéeIndex

Voir

*           Scratch – Apprendre à programmer simplement

*           Maple – Apprendre à programmer (maths)

*           Historique de l’aventure informatique

Sites

*           Cours Python – OpenClassrooms 

*           Programmation Python – WikiBooks

Cette page

http://villemin.gerard.free.fr/aInforma/PYTHON/PasaPas.htm