La structure d’un programme

(code sous licence creative commun CC BY-NC-SA BY Alexis Dendiével)

Télécharger le pdf

Télécharger le notebook

Lancer le notebook sur binder (lent)

Structure général d’un programme

Elle correspond pour un programme simple au déroulé suivant

  • importation des bibliothèques

  • définition des constantes, des fonctions

  • appel des entrées

  • corps de programme

  • affichage des résultats.

L’importance du commentaire

Les commentaires dans un programme sont d’une importance capitale. ils servent: - à l’auteur du programme - au lecteur du programme - à celui qui souhaite modifier le programme.

Sans aucun impact sur l’execusion, ils gagnent à être le plus précis possible.

[1]:
# ceci est un commentaire de programme

Tout ce qui est précédé du signe # dans un programme est un commentaire.

Voyons ceci sur un exemple :

le programme suivant, calculant la force de gravitation entre deux masses m1 et m2 séparées d’une distance d, est donnée en version brute et en version commentée :

[2]:
G = 6.67e-11
print("nous nous nous proposons de calculer la force de gravitation "
      "s'exerçant entre deux masses m1 et m2 séparées d'une distance d")
# Masse m1 en kg
m1 = 50
# Masse m2 en kg
m2 = 70.5
# Distance d en mètres
d = 2.5
FG = G*m1*m2/d**2
print("masse m1 : {0:.2e} kg".format(m1))
print("masse m2 : {0:.2e} kg".format(m2))
print("masse d : {0:.2e} m".format(d))
print("==> la valeur de la force de gravitation est: {0:.2e} N".format(FG))
nous nous nous proposons de calculer la force de gravitation s'exerçant entre deux masses m1 et m2 séparées d'une distance d
masse m1 : 5.00e+01 kg
masse m2 : 7.05e+01 kg
masse d : 2.50e+00 m
==> la valeur de la force de gravitation est: 3.76e-08 N

Nous voyons dans cet exemple simple que la lecture du programme est beaucoup plus aisée avec les commentaires. De plus, le saut d’une ligne n’a aucun impact sur la programmation, et permet une plus grande lisibilité.

Il est donc fortement recommandée de prendre le temps de commenter ses programmes.

(Il en sera d’ailleurs de même pour les fonctions)

Les noms de variable

Rien ni personne n’oblige à utiliser tel ou tel nom de variable dans python. La variable n’a pas à être défini au début du programme, elle pointe sur un objet et en présente les caractéristiques; en revanche, il est obligatoire d’avoir assigné une valeur à une variable avant de l’utiliser.

Il est cependant fortement recommandé d’utiliser des noms de variables donnant sens au programme, pour plus de clarté envers les personnes susceptibles de le lire ou de le modifier. exemples:

  • « atome » plutôt que « a »

  • « forcedegravitation » plutôt que « f »

  • « temps » plutôt que « t » …

Une variable peut être écrite en majuscule ou minuscules, voire même avec des accents, mais les bonnes pratiques incitent plus à utiliser des minuscules pour les variables, sans accents, et en séparant les mots par des « underscore »

[3]:
élément=12 # mal
element=12 # bien
Numéroatomique=12 # mal
numero_atomique=12 # bien
[4]:
# très mal (pas possible, en fait)
numero atomique=12
  File "<ipython-input-4-c80d00387f69>", line 2
    numero atomique=12
                  ^
SyntaxError: invalid syntax

L’importance de l’indentation

Un programme python n’a pas de code pour le début et la fin d’une séquence d’instructions. Sa structuration suit une indentation (espaces en début de ligne) qui définit la structuration du programme.

Le « : » après les instructions tabule automatiquement la ligne suivante.

Pour une instruction else suivant un if par exemple, il faut revenir en arrière afin que la structure soit correcte et lisible.

[5]:
n = 3
if n>5:
    print("n est plus grand que 5")
else:
    print("n est plus petit ou égal à 5")
n est plus petit ou égal à 5

Cette règle d’écriture structure le programme et demande de la rigueur. Il est par ailleurs fortement conseillé de ne pas faire des lignes de code trop grandes. Si celle-ci est importante, un passage à la ligne en milieu d’instruction donnera davantage de lisibilité au programme.

Quelques bibliothèques en python

Même si la bibliothèque standard python est bien développée, certaines bibliothèques sont bien utiles: ### numpy C’est une bibliothèque très utile pour les calculs numériques.

[6]:
# importation de la bibliothèque numpy
import numpy as np

La bibliothèque de calcul, dont vous trouverez facilement les utilisations sur le net, est ici importée en début de programme sous le nom np.

[7]:
# quelques exemples de calcul
print(np.pi)
print (np.sin(np.pi/4))
print (np.cos(np.pi/4))
3.141592653589793
0.7071067811865475
0.7071067811865476

matplotlib.pyplot

C’est une bibliothèque permettant de faire facilement des graphiques.

[8]:
# programme de tracé simple avec des valeurs d'abscisse et d'ordonnée

# importation de la bibliothèque matplotlib.pyplot
import matplotlib.pyplot as plt
%matplotlib inline

# initialisation des données
x = (0,1,2,3,4,5)
y = (2.1, 3.3, 4.2, 5.1, 6.3, 7.2)

# affichage
plt.plot(x, y)
plt.grid()
plt.xlabel("abscisse")
plt.ylabel("ordonnée")
plt.show()
plt.close()
../_images/05-bases_01-structure-programme_18_0.png

math

C’est une bibliothèque qui permet de faire facilement les calculs mathématiques

[9]:
# importation de la bibliothèque math
import math as math

# quelques exemples
print (math.cos(math.pi))
print (math.sqrt(5))
print ("la valeur approchée du nombre d'or est", (1+math.sqrt(5))/2)
-1.0
2.23606797749979
la valeur approchée du nombre d'or est 1.618033988749895

random

C’est une bibliothèque permettant de créer des nombres aléatoires

[10]:
# importation de la bibliothèque random
import random as rd

# impression de 5 nombres aléatoires compris entre 1 et 100
for i in range (5):
    print(rd.randint(1,100))
100
83
40
11
27

turtle

Cette bibliothèque permet de tracer des graphiques en suivant la « tortue ». (Cette bibliothèque & cet exemple ne fonctionnent pas sur un environnement jupyter en ligne)

[ ]:
# importation de la bibliothèque
import turtle as tu

tu.reset()
tu.speed(1)
for i in range(6):
  tu.fd(100)
  tu.rt(360/6)

liste non exaustive des fonctions turtle

  • fd(n) avance de n

  • bk(n) recule de n

  • rt(n) tourne à droite de n degrés

  • lt(n) tourne à gauche de n degrés

  • clear() efface l’écran

  • penup() lève le stylo

  • pendown() baisse le stylo

  • reset() efface l’écran, remet la tortue au centre et réinitialise ses paramètres

  • showturtle() montre la tortue

  • hideturtle() cache la tortue

  • speed(n) Change la vitesse de 1(lent) à 10 (rapide). La valeur spéciale 0 est la plus rapide.

  • tracer(n,d)

  • update() Force l’affichage des graphismes en attente

  • bye() Referme la fenêtre

  • setup(w,h) Ouvre une fenêtre de taille wxh

Conclusion

Ce notebook donne les premiers conseils afin de structurer un programme python. Ce qu’il faut retenir, c’est la recherche de la clarté tant dans le code que dans les commentaires.