La programmation du Raspberry Pi en Python

Le langage Python

Le Raspberry Pi a aussi été conçu pour permettre d’apprendre la programmation.

Le langage principal pour programmer sur Raspberry Pi est Python.

J’ai dû voir comment mettre en place mon environnement de programmation en Python sur mon Raspberry Pi pour réaliser mon projet.

Python est un langage de programmation qui est utilisé dans différents domaines (application, web, …) Il est souvent comparé à Perl, Ruby ou encore Java. D’après le site Raspberry Pi, les principaux points forts de Python sont :

  • Langage adapté aux débutants (comme moi 😉 )
  • Les grandes possibilités du langage. Il va aussi bien être adapté aux petits projets qu’aux gros projets
  • Peut-être utilisée sur différents types d’ordinateurs
  • Stable, langage qui est assez vieux et qui a fait ses preuves
  • Simple à comprendre

L’environnement de travail Python sur le Raspberry Pi

Pour programmer en Python sur Raspberry Pi, on peut lancer le programme Thonny Python IDE.

Voici à quoi ressemble l’IDE avec mon premier programme d’exemple (décrit dans la partie suivante).

Mes premiers essais en python

Pour découvrir Python j’ai essayé de réécrire en python les programmes d’exemples que j’ai codé quand j’ai découvert java lors de mon travail personnel sur les langages de programmation : ces exemples étaient l’écriture en java des exemple de programmes Cobol, Fortran que j’avais lus quand j’avais regardé « histoire des langages de programmation ».

Multiplication de deux nombres

Le premier programme faisait la multiplication de deux nombres ;

Voici le résultat en python.

# lit les nombres
input1 = input("Enter first number:" );
num1 = int(input1)
input2 = input("Enter Second number:");
num2 = int(input2)

# ça fait le calcul
result = num1 * num2;

# affiche le resultat
print("result is = " , result);

Comme différence avec Java, on voit que :

  • le programme est plus petit à écrire.
  • On n’a pas besoin de dire le type des variables
  • Il est plus facile d’afficher les résultats ou de demander des saisies de l’utilisateur
  • Pour les commentaires on utilise « # » à la place de « // »
  • On a dû faire attention à convertir la saisie (input1) en nombre (num1)

PGCD de deux nombres

Le second programme définissait une fonction qui pouvait être réutilisée. La fonction calculait le PGCD de deux nombres. Voici ce que cela donne en python :

def calculePGCD(na,nb):
   ia = na
   ib = nb

   while ib !=0 :
      itemp = ia
      ia = ib
      ib = itemp % ib
   return ia

a = 55
b = 33
resultat =calculePGCD(a,b)
print("le pgcd de",a,"et",b,"est", resultat)

Comme différence avec Java :

  • Pour utiliser une fonction on utilise « def»
  • Il faut faire attention aux indentations ; Python se sert des indentations pour structurer le programme (intérieur de la fonction, intérieur de la boucle while). En Java on utilisait les « { } »
  • Ici aussi, le code est très compact à écrire.

Reduction de fractions

Le troisième programme utilisait la fonction PGCD pour réduire une fraction. Voici ce que cela donne en Python :

#lit les nombres.
inputNumerateur = input ("Entre le numérateur:")
numerateur = int(inputNumerateur)
inputDenominateur = input ("Entre le dénominateur:")
denominateur = int(inputDenominateur)
print ("la saisie est :",numerateur,"/",denominateur)

# calcul du pgcd en utilisant le programme d'exemple
pgcd = calculePGCD (numerateur , denominateur)

#calcul du nouveu numérateur et du nouveau dénominateur
numerateur = (int) (numerateur / pgcd)
denominateur = (int) (denominateur / pgcd)

# affiche le resultat
print ("le resultat est :",numerateur,"/",denominateur)

Comme point particulier, on a dû faire attention à ce que le résultat des nouveaux numérateurs et dénominateurs soit bien un entier (par défaut, on obtenait un nombre décimal).

Conclusion

Python a l’air plus facile à manipuler pour apprendre que ce que j’avais dû faire en java (par exemple pour le jeu Pong du Tutorial que j’avais repris).

Je vais maintenant devoir voir comment utiliser Python pour les différentes tâches que je dois faire pour le projet (lire les capteurs, envoyer les données à Salesforce, etc…).