9 Python et bases de la programmation

 

Publié pour la première fois dans les années 1990, Python2 est un langage de programmation de haut niveau. Python est un langage interprété, ce qui signifie qu’il est traité lors de son exécution par rapport à un langage compilé qui doit être traité avant d’être exécuté. Python est devenu un langage populaire pour la programmation de robots. Cela peut être dû à son langage facilement lisible, à sa nature visuellement épurée et typée dynamiquement, et à la disponibilité de nombreuses bibliothèques prêtes à l’emploi qui fournissent des fonctionnalités communes telles que des fonctions mathématiques. Python est pratique lorsque vous souhaitez créer rapidement un prototype, car il nécessite un minimum de lignes de code pour réaliser des tâches complexes. Il soulage également un autre casse-tête majeur pour les programmeurs débutants en étant un langage de collecte de déchets. La récupération de place est le processus automatique par lequel la mémoire utilisée par le programme, est gérée.

 

Python identifie les blocs de code en utilisant l’indentation (une tabulation ou un espace blanc au début d’une ligne de code). Contrairement aux langages tels que C/C++ et Java qui utilisent des accolades {} pour délimiter les blocs de code, une indentation correcte est cruciale en Python pour garantir que votre code fonctionne correctement. Cette exigence améliore également la lisibilité et l’esthétique du code.

Passons maintenant en revue quelques concepts de programmation courants en utilisant Python comme exemple de langage.

 

Variables, chaînes et instructions d’affectation

 

Python est un langage typé dynamiquement, ce qui signifie que les variables ne sont pas statiquement typées (par exemple, string, float, integer). Les développeurs n’ont donc pas besoin de déclarer les variables avant de les utiliser ni de déclarer leur type. En Python, toutes les variables sont un objet.

Un composant typique de nombreux autres langages de programmation est que les variables sont déclarées dès le départ avec un type de données spécifique, et toute valeur qui lui est attribuée pendant sa durée de vie doit toujours avoir ce type. Python présente un avantage d’accessibilité grâce à l’absence de restriction sur les types de variables. En effet, contrairement à d’autres langages, une variable en Python peut être assignée à une valeur d’un certain type puis à une nouvelle valeur d’un type différent. Chaque valeur en Python possède un type de données. Les autres types de données en Python incluent les nombres, les chaînes, le dictionnaire et bien d’autres. La déclaration de variables en Python est simple et rapide, pouvant être réalisée avec n’importe quel nom ou même avec des noms composés d’alphabet tels que a, ab, abc, etc.

Les chaines sont un type de données utiles et largement utilisées en Python. Nous les créons en mettant les caractères entre guillemets. Python traite les guillemets simples et les guillemets doubles de la même manière. Créer des chaînes est aussi simple que d’attribuer une valeur à une variable. Par exemple :


var1 = ’Hello World!’
var2 = "Banana Robot"


Dans l’exemple ci-dessus, nous constatons deux variables notées par les étiquettes ’var1’ et ’var2’ . Un moyen simple de comprendre consiste à considérer une variable comme un nom attaché à un objet particulier. Pour créer une variable, il vous suffit de lui attribuer une valeur, puis de commencer à l’utiliser. L’affectation est réalisée avec un seul signe égal (=).

 

Opérateurs relationnels et logiques

 

Certaines conditions sont requises pour gérer le flux de n’importe quel programme et dans tous les langages de programmation, y compris Python. Les opérateurs relationnels et logiques définissent ces conditions.

Par exemple, et pour le contexte, lorsqu’on vous demande si 3 est supérieur à 2, la réponse est oui. En programmation, la même logique s’applique.

Lorsque le compilateur est fourni avec une condition basée sur une expression, il calcule l’expression et exécute la condition en fonction de la sortie de l’expression. Dans le cas d’expressions relationnelles et logiques, la réponse sera toujours soit Vrai ou Faux.

Les opérateurs sont des symboles conventionnels qui combinent des opérandes pour former une expression. Les opérateurs et les opérandes sont ainsi des facteurs décisifs de la sortie.

Opérateurs relationnels sont utilisés pour définir la relation entre deux opérandes Les exemples sont inférieur à, supérieur ou égal aux opérateurs. Python comprend ces types d’opérateurs et renvoie en conséquence une sortie qui peut être Vrai ou Faux.

 

1 < 10 
Vrai

 

1 est inférieur à 10, donc la sortie renvoyée est Vrai.

Une liste simple des opérateurs les plus courants :

Moins que → indiqué par <

Plus grand que → indiqué par >

Égal à → indiqué par ==

Pas égal à → indiqué par !=

Inférieur ou égal à → indiqué par <=

Supérieur ou égal à → indiqué par >=

Les opérateurs logiques sont utilisés dans les expressions où les opérandes sont Vrai ou Faux. Les opérandes d’une expression logique peuvent être des expressions qui renvoient Vrai ou Faux lors de l’évaluation.

Il existe trois types de base d’opérateurs logiques :

AND : Pour l’opération AND, le résultat est Vrai si et seulement si les deux opérandes sont Vrai. Le mot clé utilisé pour cet opérateur est AND.

OR : Pour l’opération OR, le résultat est Vrai si l’un deux opérandes est Vrai. Le mot clé utilisé pour cet opérateur est OR.

NOT : Le résultat est Vrai si l’opérande est Faux. Le mot clé utilisé pour cet opérateur est NOT.

 

Structures de décision


Les structures de décision permettent à un programme d’évaluer une variable et de répondre de manière préétablie. Fondamentalement, le processus de prise de décision répond aux conditions qui se présentent lors de l’exécution du programme, avec des actions conséquentes prises en fonction de ces conditions. Les structures de décision de base évaluent une série d’expressions qui produisent des résultats Vrai ou Faux. Voici les types de séquences de prise de décision proposés par le langage de programmation Python.

 

L’instruction if : Une instruction if consiste en une expression booléenne suivie d’une ou plusieurs instructions.

L’instruction If …else : Une instruction if peut être suivie d’une instruction else facultative, qui s’exécute lorsque l’expression booléenne est FALSE.

Instruction If imbriqué . Vous pouvez utiliser une instruction if ou else if dans une autre instruction if ou else if.

Vous trouverez ci-dessous un exemple de clause if d’une ligne,

 

# il s’agit d’un commentaire (commençant par le symbole #). 
# Les commentaires sont un élément de documentation important dans la programmation
var = 1300#a variable assignment
if (var == 1300): print "Value of expression is 1300" #structure de décision en une seule ligne
print "Bye#afficher le mot Bye!

 

Lorsque le code ci-dessus s’exécute, voici la sortie,

Value of expression is 1300
Bye!

 

En général, les instructions sont exécutées de manière séquentielle. La première instruction d’une fonction est exécutée en premier, suivie de la seconde et ainsi de suite. Il est utile de considérer le code comme un ensemble d’instructions simples, pas très différent d’une recette de cuisine préférée. Parfois, il est nécessaire d’exécuter plusieurs fois un bloc de code. Une instruction de boucle nous permet d’exécuter une instruction ou un groupe d’instructions plusieurs fois.

 

Boucles

 

En Python, il existe généralement trois façons d’exécuter des boucles. Ils offrent tous des fonctionnalités similaires ; cependant, ils diffèrent par leur syntaxe et leur durée de vérification des conditions.

Boucle While : Répète une instruction ou un groupe d’instructions alors qu’une condition donnée est VRAI. Elle teste la condition avant d’exécuter le corps de la boucle.

Boucle For : Exécute une séquence d’instructions plusieurs fois et abrège le code qui gère la variable de boucle.

Boucles imbriquées : Vous pouvez utiliser une ou plusieurs boucles à l’intérieur d’une autre boucle while, for ou do..while.

 

# boucle while
count = 0
while (count < 3):   
    count = count + 1#notez l’indentation pour indiquer que cette section du code est à l’intérieur de la boucle
    print("Hello Robot")

 

Lorsque le code ci-dessus est exécuté, nous nous attendons à voir la sortie suivante:

Hello Robot
Hello Robot
Hello Robot

 

Fonctions

Une fonction est un bloc de code conçu pour être réutilisable et destiné à effectuer une seule action. Les fonctions offrent aux développeurs une modularité pour leur application ainsi que des blocs de code réutilisables. Une bibliothèque de fonctions bien construite permet de réduire considérablement le temps de développement. Par exemple, Python propose des fonctions telles que print(), mais les utilisateurs peuvent également développer leurs propres fonctions. Ces fonctions sont appelées fonctions définies par l’utilisateur.

Par exemple :

def robot_function():
    print("Robot function executed")
# vous pouvez alors appeler cette fonction dans une autre partie de votre programme;
robot_function()

 

Lorsque vous exécutez le code, ce qui suit s’affiche :

Robot function executed

 

Vous pouvez transmettre des informations externes à la fonction en tant qu’arguments. Les arguments sont énumérés entre parenthèses après le nom de la fonction.

Par exemple :

def robot_function(robot_name):
    print("Robot function executed for robot named " + robot_name)

Nous avons modifié la fonction précédente pour inclure un argument appelé robot_name. Lorsque nous invoquons la nouvelle fonction, nous pouvons désormais inclure le nom du robot comme un argument :

robot_function(‘R2-D2’)

 

qui se traduira par la sortie suivante :

Robot function executed for robot named R2-D2

 

Fonction Callback

 

Une fonction Callback, est une fonction spéciale qui peut être transmise en tant qu’argument à une autre fonction. Cette dernière est conçue pour appeler la fonction Callback définie précédemment Cependant, la fonction Callback n’est exécutée que lorsqu’elle est requise. Les fonctions de rappel trouvent de nombreuses utilisations dans le domaine de la robotique. En particulier, lors de l’utilisation de ROS, on utilise souvent des fonctions Callback pour lire et écrire diverses informations vers et depuis le matériel robotique de manière asynchrone. Un exemple simple illustre les principaux éléments d’une implémentation de fonction Callback.

 

def callbackFunction(robot_status): 
    print("Robot’s current status is " + robot_status)
 
def displayRobotStatus(robot_name, callback):
   # cette fonction prend robot_name et une fonction de rappel comme arguments
   # Le code pour lire le statut du robot (stocké dans la variable robot_status) va ici
   # l’état de lecture est ensuite passé à la fonction de rappel
   callback(robot_status)

 

Vous pouvez maintenant appeler la fonction displayRobotStatus dans votre programme principal

if __name__ == ’__main__’:
    displayRobotStatus ("R2-D2", callbackFunc)
 
2 https://www.python.org/

Licence

Symbole de License Creative Commons Attribution - Pas d’utilisation commerciale - Partage dans les mêmes conditions 4.0 International

Fondements de la robotique Copyright © 2022 by Damith Herath et David St-Onge. Traduction de l’édition anglaise : Foundations of Robotics – A Multidisciplinary Approach with Python and ROS. Copyright © Dr. Damith Herath, Dr.David St-Onge 2022. is licensed under a License Creative Commons Attribution - Pas d’utilisation commerciale - Partage dans les mêmes conditions 4.0 International, except where otherwise noted.

Partagez ce livre