Les programmes nécessaires à la réalisation des robots ...€¦ · Voyons où les composants se...

52

Transcript of Les programmes nécessaires à la réalisation des robots ...€¦ · Voyons où les composants se...

Page 1: Les programmes nécessaires à la réalisation des robots ...€¦ · Voyons où les composants se trouvent sur la carte ESPeRobo : vous serez amené, au fil de votre apprentissage,
Page 2: Les programmes nécessaires à la réalisation des robots ...€¦ · Voyons où les composants se trouvent sur la carte ESPeRobo : vous serez amené, au fil de votre apprentissage,

Ce livre est une œuvre protégée par le droit d’auteur. École Robots, Speechi et Artec sont des marques déposées.

© 2019 Speechi - 12 rue de Weppes - 59000 Lille. Tel : +33 (0)320 347 425. Email : [email protected]. Web : www.speechi.net.

Tous droits réservés. Toute reproduction interdite.

Les programmes nécessaires à la réalisation des robots sont disponibles en téléchargement sur le site www.ecolerobots.com.

Toutes les boîtes et les pièces détachées sont aussi disponibles sur le site www.ecolerobots.com.

Page 3: Les programmes nécessaires à la réalisation des robots ...€¦ · Voyons où les composants se trouvent sur la carte ESPeRobo : vous serez amené, au fil de votre apprentissage,

Les bases de la programmationLa syntaxe Python – partie 1

Montage, programmation, robotique.École Robots – Cursus Éducation Nationale

Page 4: Les programmes nécessaires à la réalisation des robots ...€¦ · Voyons où les composants se trouvent sur la carte ESPeRobo : vous serez amené, au fil de votre apprentissage,

©2019 Speechi 1

Sommaire

Chapitre 1 : Avant d'apprendre le langage Python ...................... 3

1. Quels liens entre la programmation et la société ? .................................................................... 3

2. Les métiers nécessitant des compétences en programmation ................................................... 4

3. Les langages de programmation utilisés dans la société ............................................................ 4

4. Pourquoi apprendre le langage Python ? .................................................................................... 5

Chapitre 2 : Les données en Python .................................................. 7

1. Ce que vous allez apprendre dans cette leçon ................................................................................ 7

2. Présentation du matériel ................................................................................................................. 7

3. Ouvrir un environnement de programmation pour écrire en Python ............................................ 8

3.1. L’interface de l’environnement de programmation « Mu » .................................................... 8

3.2. Installer l’environnement de programmation « Mu » ............................................................. 8

4. Préparatifs avant chaque début des cours ...................................................................................... 9

4.1. Connecter l’ESPeRobo .............................................................................................................. 9

4.2. Ouvrir l’environnement de programmation Mu ...................................................................... 9

5. Les données numériques en Python ............................................................................................. 10

5.1. Traitement des données numériques .................................................................................... 10

5.2. Convertir des données de type numérique ............................................................................ 14

6. Les chaînes de caractères en Python............................................................................................. 16

6.1. Créer des chaînes de caractères ............................................................................................. 16

6.2. Convertir une valeur numérique en chaîne de caractères et inversement ........................... 18

7. Exercice : Afficher son nom sur le panneau LED de l’ESPeRobo ................................................... 20

7.1. Créer un programme .............................................................................................................. 20

7.2. Exécuter le programme .......................................................................................................... 21

7.3. Sauvegarder le programme .................................................................................................... 22

Résumé du chapitre........................................................................................................................... 22

Chapitre 3 : Les variables en Python ............................................. 23

1. Ce que vous allez apprendre dans cette leçon .............................................................................. 23

2. Les variables en Python ................................................................................................................. 23

2.1. Utiliser des variables .............................................................................................................. 25

2.2. Comment nommer une variable ? ......................................................................................... 25

2.3. Écraser des données dans des variables ................................................................................ 26

3. Le type de données d’une variable ............................................................................................... 27

3.1. Écraser une variable avec un autre type de données ............................................................ 27

4. Exemple de programme utilisant des variables ............................................................................ 28

Page 5: Les programmes nécessaires à la réalisation des robots ...€¦ · Voyons où les composants se trouvent sur la carte ESPeRobo : vous serez amené, au fil de votre apprentissage,

2 ©2019 Speechi

4.1. Calcul du prix incluant la taxe à la consommation ................................................................. 28

4.2. Affichage de plusieurs phrases avec une chaîne de caractères commune ............................ 28

5. Exercice : Jouer le son de l’ESPeRobo ........................................................................................... 29

5.1. Créer un programme .............................................................................................................. 29

5.2. Exécuter le programme .......................................................................................................... 30

Résumé de ce chapitre ...................................................................................................................... 30

Chapitre 4 : Les fonctions en Python ............................................. 31

1. Ce que vous allez apprendre dans cette leçon .............................................................................. 31

2. Les fonctions en Python ................................................................................................................ 31

2.1. Les fonctions intégrées de Python ......................................................................................... 32

2.2. Définir la fonction ................................................................................................................... 33

3. Les commentaires pour expliquer le fonctionnement du programme ......................................... 35

3.1. Comment écrire des commentaires ? .................................................................................... 35

4. Exercice : Mettre les sons du buzzer de l’ESPeRobo dans les fonctions ....................................... 36

4.1. Créer un programme .............................................................................................................. 36

4.2. Exécuter le programme .......................................................................................................... 38

Résumé de ce chapitre ...................................................................................................................... 39

Chapitre 5 : Les objets en Python ................................................... 40

1. Ce que vous allez apprendre dans cette leçon .............................................................................. 40

2. Les objets en Python ..................................................................................................................... 40

2.1. Les attributs de l'objet ............................................................................................................ 40

2.2. Les méthodes de l'objet ......................................................................................................... 41

2.3. La programmation orientée objet .......................................................................................... 41

3. Les méthodes des chaînes de caractères ...................................................................................... 41

3.1. Méthode de transformation des caractères alphabétiques en majuscules et minuscules ... 41

3.2. Méthode de recherche d'un caractère dans une chaîne ....................................................... 42

3.3. Méthode permettant de remplacer une chaîne de caractères par une autre chaîne de

caractères ...................................................................................................................................... 43

3.4. Méthode pour couper la chaîne de caractères ...................................................................... 44

3.5. Méthodes spéciales de remplacement des chaînes ............................................................... 45

4. Exercice : Afficher un message de bienvenue ............................................................................... 46

4.1. Créer un programme .............................................................................................................. 46

Résumé de ce chapitre ...................................................................................................................... 46

Page 6: Les programmes nécessaires à la réalisation des robots ...€¦ · Voyons où les composants se trouvent sur la carte ESPeRobo : vous serez amené, au fil de votre apprentissage,

©2019 Speechi 3

Chapitre 1 : Avant d'apprendre le langage Python

1. Quels liens entre la programmation et la société ?

Vous les utilisez tous les jours sur votre smartphone ou votre tablette, mais savez-vous au juste comment fonctionnent les applications de messagerie, les réseaux sociaux ou encore les plateformes vidéo ?

Vous utilisez et accédez à ces services, via un navigateur Web ou une application dédiée, grâce à des serveurs qui sont des ordinateurs sur lesquels s’exécutent des programmes complexes.

Comme ces services font désormais partie de notre quotidien, il est légitime de se demander comment ces nouveaux services basés sur des technologies de pointe, comme l’IA (Intelligence Artificielle) ou la « blockchain », impactent et font évoluer notre société.

Certains chercheurs se sont déjà penchés sur la question et prédisent que, dans un avenir proche, les ordinateurs et les robots occuperont très probablement des postes aujourd’hui occupés par des humains en raison du développement de l’IA. Outre le fait que de nouveaux emplois liés à l’utilisation de ces technologies devraient émerger, il est probable que les emplois créatifs que seuls des humains peuvent occuper et les emplois demandant des compétences en communication élevées deviennent de plus en plus importants.

Toutes ces technologies qui annoncent cette nouvelle ère impliquent la programmation. Or, dans le même temps, on annonce également une pénurie de personnes capables de comprendre l’informatique et plus particulièrement la programmation pourtant nécessaire au fonctionnement de ces nouvelles technologies.

Page 7: Les programmes nécessaires à la réalisation des robots ...€¦ · Voyons où les composants se trouvent sur la carte ESPeRobo : vous serez amené, au fil de votre apprentissage,

4 ©2019 Speechi

Avant d’aborder la programmation, examinons de plus près les métiers et tâches nécessitant des compétences en programmation et les avantages qu’il y a à apprendre la programmation.

2. Les métiers nécessitant des compétences en programmation

De nombreux emplois exigent des compétences en programmation. Regardons quelques exemples dans le tableau ci-dessous.

Tâches nécessitant des compétences en programmation

À quoi sert la programmation ?

Développement d'applications pour smartphone

Transformer les idées de services et de jeux en applications.

Contrôle de robots et de dispositifs IoT (*)

Utiliser des capteurs pour obtenir des informations sur des sites à distance ou piloter à distance des moteurs pour contrôler une machine.

Automatisation de tâches simples de traitement de données

Agréger automatiquement les données d’une enquête et distribuer automatiquement des e-mails à des heures précises.

Production d'art numérique

Contrôler la lumière et le son pour créer des œuvres numériques.

*IoT : acronyme pour Internet of Things, c’est-à-dire Internet des objets. Désigne les objets connectés à Internet qui s’échangent des informations pour se contrôler mutuellement.

3. Les langages de programmation utilisés dans la société

D'innombrables programmes en cours d'exécution dans le monde sont écrits dans divers langages de programmation. Examinons certaines des fonctionnalités des langages de programmation les plus fréquemment utilisés et ce qu’on peut faire avec.

• Python

Langage de programmation né aux Pays-Bas en 1991. Ce langage est très apprécié des

débutants parce qu’il permet d’écrire du code source (*) concis et facile à lire. Ce langage

est bien adapté aux opérations numériques et est devenu populaire grâce au

développement de programmes d’intelligence artificielle tels que l’analyse de données,

l’apprentissage automatique (machine learning) et l’apprentissage profond (deep

learning) qui sont de plus en plus demandés depuis ces dernières années.

*Le code source : chaîne de caractères, texte ou fichier texte d'un programme écrit dans un

langage de programmation.

Page 8: Les programmes nécessaires à la réalisation des robots ...€¦ · Voyons où les composants se trouvent sur la carte ESPeRobo : vous serez amené, au fil de votre apprentissage,

©2019 Speechi 5

• Java

Langage de programmation développé aux États-Unis au début des années 90. Beaucoup de systèmes ont été développés en Java, resté longtemps populaire dans le monde entier. Il permet de développer une très grande variété de systèmes, que ce soient des systèmes Web, des applications Android, des systèmes professionnels utilisés dans les entreprises ou encore des systèmes de contrôle de machines. Les programmes écrits dans ce langage fonctionnent sous Windows et Mac.

• Langage C

Langage de programmation né aux États-Unis en 1972. Ce langage permet aussi bien de développer des logiciels « bas niveau » (logiciels très réactifs embarqués dans des avions, des voitures, etc.) que des logiciels « haut niveau » (applications de bureautique, jeux, etc.). Bien que le temps de développement soit long et sa grammaire compliquée, il a souvent été présenté comme le premier langage de programmation à apprendre depuis le milieu des années 1990. L’environnement utilisé dans ce cours pour écrire des programmes en Python est écrit en langage C.

• JavaScript

Langage développé aux États-Unis et apparu au milieu des années 90. Ce langage fonctionne dans un navigateur. Lorsque vous affichez une page Web contenant du code JavaScript, le code change dynamiquement la page. Il permet, par exemple, de changer le texte et les images en réponse aux clics de l'utilisateur, d’ajouter une animation qui produit des mouvements complexes, etc.

• Ruby

Langage de programmation né au Japon en 1992. Polyvalent et flexible, il est utilisé dans de nombreux systèmes Web, quelle que soit leur taille. Comparé à d'autres langages, il est intéressant pour implémenter de nombreuses fonctions en très peu de code.

• Swift

Nouveau langage de programmation développé en 2014 pour les produits Apple. Il reprend les avantages des différents langages de programmation et se maîtrise relativement facilement.

4. Pourquoi apprendre le langage Python ?

Le langage de programmation visuel appelé Scratch est souvent utilisé pour faire ses premiers pas en programmation. Scratch permet de créer un programme simplement en glissant des blocs sur un écran. Bien qu’il soit facile d’utilisation, même pour les débutants, il ne convient pas au développement de jeux et de systèmes complexes. En revanche, si vous maîtrisez des langages de programmation écrits comme Python, vous pourrez créer et réaliser ce que vous souhaitez, même si la syntaxe est un peu compliquée.

Page 9: Les programmes nécessaires à la réalisation des robots ...€¦ · Voyons où les composants se trouvent sur la carte ESPeRobo : vous serez amené, au fil de votre apprentissage,

6 ©2019 Speechi

Aujourd’hui, Python est l'un des langages de programmation les plus utilisés dans le développement pour créer des applications, contrôler des robots et coder l'intelligence artificielle. C’est pourquoi Python compte un grand nombre d'utilisateurs qui forment une communauté active. Ce langage présente à la fois l'avantage d'obtenir facilement un code source ouvert et de haute qualité, mais aussi celui de raccourcir le temps de développement.

Comme la société évolue avec le développement des technologies de l'information et l’émergence de nouveaux modèles d’intelligence artificielle, de robots ou encore de monnaie virtuelle, il devient de plus en plus urgent et nécessaire d’élargir sa culture informatique et d’acquérir des compétences en programmation. La programmation deviendra, en effet, l’un des piliers de notre société future et sera un sujet abondamment traité dans les journaux télévisés, les médias web et magazines. Pour offrir des clés de compréhension face à ces nouveaux enjeux de société, ce manuel et les suivants vous proposent de maîtriser les bases du langage Python.

Page 10: Les programmes nécessaires à la réalisation des robots ...€¦ · Voyons où les composants se trouvent sur la carte ESPeRobo : vous serez amené, au fil de votre apprentissage,

©2019 Speechi 7

Chapitre 2 : Les données en Python

1. Ce que vous allez apprendre dans cette leçon

Après une présentation du matériel et du logiciel que vous utiliserez au fil de ces manuels pour apprendre le langage Python, nous nous intéresserons aux données numériques les plus utilisées et aux chaînes de caractères. À la fin de ce chapitre, vous écrirez un programme en Python pour afficher votre nom sur le panneau LED de la carte.

2. Présentation du matériel

Dans ce chapitre, vous acquerrez non seulement les bases du langage Python, mais aussi les commandes de base pour contrôler le panneau LED et le buzzer de la carte ESPeRobo.

La carte ESPeRobo

Les composants de la carte ESPeRobo Voyons où les composants se trouvent sur la carte ESPeRobo :

En plus de contrôler le panneau LED et le buzzer de la carte,

vous serez amené, au fil de votre apprentissage, à écrire des

programmes pour recueillir et mesurer des informations

tirées de l'environnement de la carte grâce à ses boutons

intégrés, son capteur de lumière, son capteur de température,

son accéléromètre, son gyroscope et sa boussole.

La carte ESPeRobo comporte diverses fonctionnalités qui feront l’objet d’exercices de programmation. Vous programmerez, par exemple, les LED à s’allumer en changeant leur couleur selon une séquence que vous aurez établie.

Page 11: Les programmes nécessaires à la réalisation des robots ...€¦ · Voyons où les composants se trouvent sur la carte ESPeRobo : vous serez amené, au fil de votre apprentissage,

8 ©2019 Speechi

3. Ouvrir un environnement de programmation pour écrire en Python

Pour écrire des programmes en Python, il faut un environnement de programmation. Dans ce cours, vous utiliserez l’environnement de programmation « Mu » distribué en open source (*).

(*) Open source : logiciel dont le code source est publié gratuitement et peut, selon sa licence, être librement modifié ou redistribué par n'importe qui.

3.1. L’interface de l’environnement de programmation « Mu »

L’interface de l’environnement de programmation « Mu » est assez simple et facile à prendre en main par les débutants parce qu’il ne propose aucune fonctionnalité avancée.

3.2. Installer l’environnement de programmation « Mu »

Mu est disponible en version Windows et Mac. Si Mu n'est pas installé sur votre PC, téléchargez le programme d'installation correspondant au système d'exploitation de votre PC à partir du lien ci-dessous et installez-le.

Pour apprendre les bases de la programmation en Python, vous intégrerez, dans un 1er temps, quelques exemples de programme dans l’environnement de programmation et les exécuterez pour observer les résultats.

Télécharger Mu pour Windows https://www.artec-kk.co.jp/artecrobo2/data/mu-editor_64bit.exe Télécharger Mu pour Mac https://www.artec-kk.co.jp/artecrobo2/data/mu-editor.zip

Page 12: Les programmes nécessaires à la réalisation des robots ...€¦ · Voyons où les composants se trouvent sur la carte ESPeRobo : vous serez amené, au fil de votre apprentissage,

©2019 Speechi 9

4. Préparatifs avant chaque début des cours

Désormais, avant chaque début de cours, vous devrez faire les préparatifs décrits ci-dessous.

4.1. Connecter l’ESPeRobo

Le programme que vous aurez créé dans l’environnement de programmation devra être transféré de votre PC vers l’ESPeRobo. Pour cela, connectez votre ordinateur à l’ESPeRobo en utilisant le câble USB fourni.

Connectez la grande fiche du câble USB à votre ordinateur.

Connectez la petite fiche du câble USB à l’ESPeRobo.

4.2. Ouvrir l’environnement de programmation Mu

1) Double-cliquez sur l'icône suivante pour lancer « Mu ».

2) Lors du 1er démarrage, une fenêtre vous proposera de sélectionner le mode de démarrage. Sélectionnez Studuino:bit dans la liste et cliquez sur le bouton « OK ». Lors du 2nd démarrage, l’environnement de programmation s’ouvrira automatiquement dans le mode précédemment sélectionné.

Page 13: Les programmes nécessaires à la réalisation des robots ...€¦ · Voyons où les composants se trouvent sur la carte ESPeRobo : vous serez amené, au fil de votre apprentissage,

10 ©2019 Speechi

3) Cliquez sur le bouton "REPL*" en haut au centre de l'écran affiché.

* REPL est une abréviation pour « Read-Eval-Print Loop ». Il permet d’envoyer des commandes au robot pendant l’exécution du programme et d’afficher les résultats dans la console.

4) Quand REPL est activé, une console interactive s’ouvre en bas de l’écran, qu’on appelle aussi terminal. À ce stade, le PC et l’ESPeRobo sont toujours en communication. Ne débranchez donc pas le câble USB. Pour quitter le REPL, cliquez à nouveau sur le bouton « REPL ».

5. Les données numériques en Python

En programmation, divers types de données peuvent être traités : nombres, lettres, images, musique ou encore vidéos.

5.1. Traitement des données numériques

La calculatrice est le premier outil auquel on pense pour réaliser des calculs sur un ordinateur. Vous pouvez cependant également faire divers calculs en Python, tout comme sur une calculatrice.

■ Les types de données numériques

Lorsque vous utilisez une calculatrice, vous ne faîtes pas de différence entre les entiers et les décimales. Le programme, lui, en revanche, les traite comme des types de données différents.

• Le nombre entier 0, les nombres naturels (1, 2, …) et les entiers négatifs (-1, -2, …) sont traités comme des données entières.

• Les nombres à virgule, les valeurs numériques avec des informations après le point décimal, sont traités, quant à eux, comme des données à virgule.

■ Les opérateurs numériques

En Python, différentes opérations arithmétiques peuvent être effectuées, notamment les quatre opérations arithmétiques : addition, soustraction, multiplication et division.

Dans les langages de programmation, les signes utilisés pour les calculs (ex : +, - , etc.) sont appelés « opérateurs ». Les opérateurs d'addition et de soustraction « + » et « - » sont les mêmes. En revanche, les opérateurs pour les multiplications et divisions ne sont pas les signes « × » et « ÷ », mais l’astérisque « * » pour la multiplication et la barre oblique « / » pour la division.

Page 14: Les programmes nécessaires à la réalisation des robots ...€¦ · Voyons où les composants se trouvent sur la carte ESPeRobo : vous serez amené, au fil de votre apprentissage,

©2019 Speechi 11

Type de calcul Opérateur Addition + Soustraction - Multiplication * Division /

Maintenant, écrivons et exécutons un programme qui effectue des calculs.

■ Addition entière

Commençons par faire une simple addition « 1 + 2 ». Un programme ne nécessitant qu'une seule ligne de code comme ce calcul peut être écrit dans la fenêtre REPL et exécuté immédiatement. Cette fenêtre est généralement appelée « console » ou « terminal ».

Cliquez à côté des signes « >>> » dans la dernière ligne du terminal et écrivez le calcul suivant :

Appuyez sur la touche « Entrée » pour exécuter ce programme. Vérifiez que 3 est bien le résultat qui s’affiche.

* Si vous ne parvenez pas à faire « Entrée » dans le terminal, c’est que la communication entre le PC et l’ESPeRobo a échoué. Assurez-vous que le câble USB est correctement branché, appuyez une 1ère fois sur le bouton REPL pour fermer le terminal, puis une 2nde fois pour le rouvrir.

■ Addition de nombres à virgule

Écrivons maintenant l’opération « 1.2 + 1.8 ». Une fois la formule écrite, appuyez sur la touche « Entrée » pour exécuter le code. Attention, la virgule s’écrit avec « . » et non « , » !

* Comme ce qui est affiché sur le terminal ne peut pas être supprimé, entrez la formule à la suite de la 1ère comme ci-dessous.

Page 15: Les programmes nécessaires à la réalisation des robots ...€¦ · Voyons où les composants se trouvent sur la carte ESPeRobo : vous serez amené, au fil de votre apprentissage,

12 ©2019 Speechi

Comme les données sont traitées comme des nombres à virgule, le résultat s’affiche cette fois-ci avec un point décimal « 3.0 ».

■ Soustraction d’entiers et de nombres à virgule

Calculons maintenant la soustraction décimale « 4.9 - 0.9 ».

Si le nombre à soustraire est un nombre à virgule, le résultat de l'opération est également traité comme un nombre à virgule.

■ Multiplication d'entiers

Multiplions maintenant les entiers 4 et 9. Pour la multiplication, utilisez l’astérisque « * » au lieu de « x ».

Dans une multiplication, le résultat d'une opération est traité comme un entier si les nombres sont des entiers et comme un nombre à virgule si ce sont des nombres à virgule.

Page 16: Les programmes nécessaires à la réalisation des robots ...€¦ · Voyons où les composants se trouvent sur la carte ESPeRobo : vous serez amené, au fil de votre apprentissage,

©2019 Speechi 13

■ Division d’entiers

Calculons la division d’entiers « 54 ÷ 6 ». Pour la division, utilisez la barre oblique « / » au lieu du signe « ÷ ».

Notez que la réponse est « 9.0 » au lieu de « 9 ». Dans la division, même si le quotient est entier, le résultat est toujours traité comme un nombre à virgule.

■ Les autres opérateurs

Outre ces quatre opérateurs, Python dispose d’autres opérateurs servant à d’autres calculs numériques. Un calcul numérique désigne les calculs réalisés sur un système informatique.

Type de calcul Opérateur Calcul pour trouver le quotient entier d’une division (sans le reste)

//

Calcul du reste d’une division % Calcul de la puissance (ex : 10² = 100) **

Exemples de calculs :

Page 17: Les programmes nécessaires à la réalisation des robots ...€¦ · Voyons où les composants se trouvent sur la carte ESPeRobo : vous serez amené, au fil de votre apprentissage,

14 ©2019 Speechi

■ Priorité des opérateurs

Les opérateurs ont une priorité de calcul. Lorsque plusieurs opérateurs sont inclus dans une expression, l'opération commence par l'opérateur ayant la priorité la plus élevée.

Priorité des opérateurs Python (du plus prioritaire au moins prioritaire) :

Opérateur Type de calcul ** Puissance *, /, //, % Multiplication, division, division (quotient

entier), reste +, - Addition, soustraction

Comme avec l'arithmétique normale, si une opération comporte une addition « + » et une multiplication « * », la multiplication « * » a la priorité, sauf si l’opération comporte une expression incluse « ( ) ». Dans ce cas, c’est cette dernière qui a la priorité sur la multiplication.

Exemple de calculs :

5.2. Convertir des données de type numérique

Nous avons pu voir par le calcul de diverses opérations que les nombres entiers et ceux à virgule sont traités comme des données différentes. Dans des langages de programmation comme Python, toutes les données sont traitées selon le type auquel elles appartiennent.

■ Obtenir le type de données numériques

Utilisez la commande type() pour connaître le type auquel appartiennent ces données.

Lancez le programme suivant pour savoir à quel type appartiennent ces données, nombre entier ou nombre à virgule :

'int' et 'float' précédés de « class » désignent un type de données. 'int' désigne un entier et 'float' désigne un nombre à virgule.

Page 18: Les programmes nécessaires à la réalisation des robots ...€¦ · Voyons où les composants se trouvent sur la carte ESPeRobo : vous serez amené, au fil de votre apprentissage,

©2019 Speechi 15

* En anglais, les entiers sont appelés « integer number » et les nombres à virgule « floating-point number », d’où les mots 'int' et 'float'.

■ Conversion de données de type numérique

Comment convertir un nombre à virgule (« 9.0 ») en nombre entier (« 9 ») et inversement ? Python propose les instructions suivantes pour convertir un type de données numériques en un autre :

Pour convertir des données en type entier (int), utilisez la commande suivante :

Pour convertir des données en type de nombre à virgule (float), utilisez la commande suivante :

Tapez les commandes suivantes pour savoir si les types de données sont convertis. * Notez que les instructions int() et float() sont insérées dans l'instruction type() qui sert à vérifier le type auquel appartiennent ces données.

Pour mieux comprendre ces résultats, notamment le dernier, regardons comment agit la fonction int() :

On peut voir que int() transforme un nombre à virgule en nombre entier en ne conservant que la partie avant la virgule, opération que l’on appelle « tronquer ». Quelle que soit la partie X après la virgule, int(1.X) renverra 1.

Page 19: Les programmes nécessaires à la réalisation des robots ...€¦ · Voyons où les composants se trouvent sur la carte ESPeRobo : vous serez amené, au fil de votre apprentissage,

16 ©2019 Speechi

6. Les chaînes de caractères en Python

Dans cette partie, nous allons découvrir le type permettant de manipuler du texte en Python (les chaînes de caractères) et comment le convertir vers des types numériques et inversement.

6.1. Créer des chaînes de caractères

Dans les langages de programmation, une chaîne de caractères est un type de donnée qui permet de traiter du texte dans les programmes. Dans cette partie, nous allons voir comment manipuler ce type en Python.

■ Créer des chaînes de caractères

Comme indiqué dans le code suivant, une erreur se produira si la chaîne est écrite et exécutée telle quelle :

L’erreur « NameError: name 'hello' isn’t defined » indique que les données nommées ‘hello’ ne sont pas définies. La raison de cette erreur sera expliquée au chapitre 3 dans lequel seront abordées les variables. Lorsque vous manipulez des chaînes en Python, il suffit d’utiliser des guillemets simples '' ou des guillemets doubles '' '' pour que l’erreur ne se produise plus.

En Python, aucune différence n’est faite entre une chaîne encadrée de guillemets simples ou doubles.

■ Afficher une chaîne de caractères dans le terminal

En Python, la commande print() permet d’afficher une chaîne de caractères dans un terminal.

Exécutez le code suivant pour voir comment cela fonctionne :

Notez qu’il n’y a pas de guillemets dans le résultat, contrairement au précédent programme, parce que print() affiche le contenu qui se trouve entre ses guillemets.

Page 20: Les programmes nécessaires à la réalisation des robots ...€¦ · Voyons où les composants se trouvent sur la carte ESPeRobo : vous serez amené, au fil de votre apprentissage,

©2019 Speechi 17

■ Gérer la présence de caractères spéciaux dans des chaînes de caractères

Il convient de prendre des précautions lorsque le texte à l’intérieur d’une chaîne de caractères contient des guillemets. Par exemple, si vous tentez de créer la chaîne 'hello ' python'', une erreur se produira :

Cette erreur est due au fait que le guillemet ['] situé devant « python » est considéré comme un guillemet simple qui ferme le guillemet ['] placé devant « hello ». Pour éviter une erreur, ce guillemet simple doit être traité de manière particulière grâce à l'une des solutions suivantes.

• Solution n°1

Si vous souhaitez créer une chaîne de caractères contenant des guillemets simples, placez l’ensemble de la chaîne entre guillemets doubles. Inversement, si vous souhaitez afficher des guillemets doubles dans une chaîne, placez l’ensemble de la chaîne entre guillemets simples.

• Solution n°2

En mettant un antislash « \ » devant un guillemet, le guillemet sera traité comme des guillemets de citation. Dans ces cas-là, l’antislash est appelé un caractère d’échappement. Il sert à indiquer que le guillemet qui suit ne doit pas être interprété comme un délimiteur de chaîne (pour marquer le début ou la fin d’une chaîne).

L’antislash « \ » peut également être utilisé pour afficher un saut de ligne entre deux parties d’une chaîne de caractères en le faisant suivre de la lettre « n », comme suit : « \n ». Le caractère « n » est alors interprété comme un saut de ligne. Il s’agit là aussi d’une séquence d'échappement. Cette fois-ci, le caractère d’échappement « \ » associe un comportement spécial au caractère « n » (ici le saut de ligne).

Page 21: Les programmes nécessaires à la réalisation des robots ...€¦ · Voyons où les composants se trouvent sur la carte ESPeRobo : vous serez amené, au fil de votre apprentissage,

18 ©2019 Speechi

■ Concaténer des chaînes

Vous pouvez concaténer, c’est-à-dire assembler, deux chaînes avec l'opérateur « + » utilisé précédemment pour additionner des nombres. Dans l'exemple ci-dessous, la chaîne « abcdef » est créée en concaténant les chaînes « abc » et « def ».

■ Répéter une chaîne

Quand l’opérateur « * » est utilisé avec un nombre N et une chaîne S, il crée une nouvelle chaîne de caractères dont le contenu est celui de S répété N fois. Dans l'exemple ci-dessous, la chaîne « abc » est multipliée par « 3 » :

6.2. Convertir une valeur numérique en chaîne de caractères et inversement

La valeur numérique « 123 » et la chaîne de caractères « ‘123’ » sont traitées comme des données complètement différentes. Les valeurs numériques peuvent être utilisées pour le calcul en tant que données numériques, mais il peut arriver de vouloir les traiter en chaînes de caractères. Dans ce cas, il faut convertir ces données numériques en chaînes de caractère. ■ Convertir des nombres en chaînes

Utilisez la commande len() pour obtenir le nombre de caractères d’une chaîne.

* « len » est une abréviation de « length » en anglais qui signifie « longueur ».

Essayez, par exemple, d’obtenir le nombre de caractères contenus dans la chaîne « python » en utilisant la commande len().

Page 22: Les programmes nécessaires à la réalisation des robots ...€¦ · Voyons où les composants se trouvent sur la carte ESPeRobo : vous serez amené, au fil de votre apprentissage,

©2019 Speechi 19

Avec cette même commande, vous pouvez obtenir le nombre de chiffres qui composent des données numériques. La commande len() ne prend, cependant, pas en charge les données numériques. Une erreur se produira si elle est spécifiée telle quelle :

Il faut donc commencer par convertir les données numériques en données de chaîne de caractères. Pour réaliser cette conversion, utilisez la commande str(). * « str » est une abréviation pour « string » qui signifie « chaîne » en anglais.

Exécutez le code suivant :

■ Convertir une chaîne de caractères en nombre

Pour repasser d'une chaîne de caractères à un nombre, utilisez les commandes int() ou float() que vous connaissez déjà.

Dans l’exemple ci-dessous, les chaînes "123" et "456" sont converties en nombres avec la commande int() et additionnées pour obtenir le résultat "579".

Page 23: Les programmes nécessaires à la réalisation des robots ...€¦ · Voyons où les composants se trouvent sur la carte ESPeRobo : vous serez amené, au fil de votre apprentissage,

20 ©2019 Speechi

7. Exercice : Afficher son nom sur le panneau LED de l’ESPeRobo

Dans cet exercice, nous allons utiliser les données de chaîne pour faire défiler votre nom sur le panneau LED.

7.1. Créer un programme

Jusqu'à présent, vous n'avez écrit et exécuté qu'une seule ligne de code à la fois dans le terminal. Or, dans cet exercice, vous devrez écrire plusieurs lignes de code pour contrôler la carte ESPeRobo. À partir de maintenant, nous utiliserons donc la zone d'édition. Cliquez dans la zone d’édition mise en évidence dans l’image ci-dessous pour écrire vos lignes de code.

Recopiez les deux lignes de code ci-dessous dans la zone d'édition. Ces deux lignes de code permettent de faire défiler du texte sur le panneau LED de la carte ESPeRobo. * Une explication détaillée de ce code sera faite petit à petit dans les leçons suivantes.

Dans la 1ère ligne de code, une instruction importe l’objet « display » qui sert à contrôler le panneau LED :

La 2e ligne de code exécute la commande scroll() qui sert à afficher et faire défiler la chaîne de caractères spécifiée entre parenthèses :

Page 24: Les programmes nécessaires à la réalisation des robots ...€¦ · Voyons où les composants se trouvent sur la carte ESPeRobo : vous serez amené, au fil de votre apprentissage,

©2019 Speechi 21

Remplacez le texte inscrit entre guillemets 'Ecrivez votre nom ici' par votre nom.

Si vous souhaitez afficher des nombres avec la commande scroll(), spécifiez-les sous forme de chaînes plutôt que de chiffres. Pour cela, utilisez l'une des méthodes suivantes :

• Placez les chiffres entre guillemets pour en faire une chaîne :

• Convertissez les chiffres en chaîne avec la commande str() :

7.2. Exécuter le programme

Pour exécuter le programme, cliquez sur le bouton « Lancer » en haut de l'écran.

Lorsque l’exécution est lancée, une fenêtre de terminal s’ouvre et affiche le message suivant. Votre nom défilera ensuite sur le panneau LED.

Page 25: Les programmes nécessaires à la réalisation des robots ...€¦ · Voyons où les composants se trouvent sur la carte ESPeRobo : vous serez amené, au fil de votre apprentissage,

22 ©2019 Speechi

7.3. Sauvegarder le programme

Pour sauvegarder le programme, cliquez sur le bouton « Enregistrer » en haut de l'écran. Vous pouvez spécifier le dossier de destination et le nom du fichier.

Les fichiers de programme Python ont une extension « .py ». L’ordinateur se sert de cette extension pour identifier le type de fichier. Les fichiers portant l'extension « .py » sont donc reconnus comme des fichiers de programme Python.

Le fichier de programme enregistré peut être ouvert et modifié à l’aide du bouton « Charger » situé en haut de l’écran.

Résumé du chapitre

Dans ce chapitre, vous avez appris à :

• repérer les éléments composant la carte ESPeRobo. • utiliser le logiciel Mu pour créer et exécuter des programmes en Python. • manipuler des données numériques. • traiter des chaînes de caractères.

Python peut gérer d'autres types de données, telles que les « listes », les « tuples » et les « dictionnaires ». Nous expliquerons en détail comment traiter ces données au chapitre 6.

Page 26: Les programmes nécessaires à la réalisation des robots ...€¦ · Voyons où les composants se trouvent sur la carte ESPeRobo : vous serez amené, au fil de votre apprentissage,

©2019 Speechi 23

Chapitre 3 : Les variables en Python

1. Ce que vous allez apprendre dans cette leçon

Dans ce chapitre, vous découvrirez les variables. Elles sont utilisées pour stocker temporairement des données dans un programme. À la fin du chapitre, vous saurez contrôler le tempo d’une mélodie jouée par le buzzer intégré de l’ESPeRobo en utilisant les données stockées dans les variables.

2. Les variables en Python

Au chapitre 2, nous avons utilisé le terminal pour écrire du code et afficher immédiatement les résultats à l'écran. Nous écrirons désormais des programmes de plusieurs lignes et nous serons parfois amenés à utiliser le résultat de la ligne de code précédente dans la ligne de code suivante.

Pour illustrer ce type de situation, considérons le problème de calcul suivant.

[Problème : Calcul du temps restant]

Vous partez d’un point A en voiture et vous dirigez vers le point B situé à 50 km. Jusqu'ici, vous avez pris 16 min pour parcourir 20 km. Sachant que vous gardez la même allure, combien de minutes vous faut-il pour parcourir les 30 km restants et arriver à destination ?

Ce problème peut être résolu en réalisant les calculs suivants :

• Vitesse moyenne pour parcourir 20 km => 20 km ÷ 16 minutes = 1,25 km / min • Temps nécessaire pour parcourir le reste de la route => 30 km ÷ 1,25 km / min =

24 minutes

Dans le calcul ci-dessus, la vitesse obtenue dans la première formule est utilisée dans la formule suivante. Pour effectuer ce calcul dans un programme, il est nécessaire de stocker la vitesse calculée quelque part pour pouvoir l'utiliser dans des calculs ultérieurs. Dans un programme, les emplacements de stockage sont des « variables ». Les variables sont souvent comparées à des boîtes qui stockent des données.

Page 27: Les programmes nécessaires à la réalisation des robots ...€¦ · Voyons où les composants se trouvent sur la carte ESPeRobo : vous serez amené, au fil de votre apprentissage,

24 ©2019 Speechi

En Python, on définit une variable comme suit :

nomDeLaVariable = la valeur que vous souhaitez stocker dans la

variable

Mettre une valeur dans une variable se dit « assigner ». En mathématiques, « = » est un symbole indiquant « ce qui est à gauche et à droite de ce signe sont égaux ». En Python, en revanche, ce signe signifie « assigne le contenu du côté droit au côté gauche ». En Python, écrivez « == » pour représenter le même « égal » qu'en mathématiques. Ce signe « == » sert à tester si deux nombres sont égaux.

Page 28: Les programmes nécessaires à la réalisation des robots ...€¦ · Voyons où les composants se trouvent sur la carte ESPeRobo : vous serez amené, au fil de votre apprentissage,

©2019 Speechi 25

2.1. Utiliser des variables

Utilisons les variables pour effectuer des calculs en Python.

Commencez par écrire le code suivant pour trouver la vitesse moyenne lorsque vous parcourez 20 km en 16 minutes, puis appuyez sur la touche "Entrée" pour l’exécuter.

S'il est enregistré dans une variable, le résultat du calcul ne s'affiche pas dans le terminal. Utilisez print() pour afficher le résultat du calcul. Écrivez et exécutez le code suivant à la suite du code précédent.

* Le nom de la variable situé entre les parenthèses de print() ne doit pas être placé entre guillemets, sinon il sera traité comme une chaîne de caractères. Si on écrit print(''v''), le programme affichera le texte « v ».

Le résultat est stocké dans la variable v et s’affiche.

Utilisons cette variable pour calculer le temps nécessaire pour parcourir les 30 km restants.

2.2. Comment nommer une variable ?

Comme nous n'avions qu'une seule variable (la vitesse), nous pouvions nous permettre de lui donner un nom très court (ici "v" au lieu de "velocity" en entier) sans risque de confusion avec d'autres variables. Mais quand on commence à avoir plusieurs variables, le risque de se tromper augmente.

C’est pourquoi, dans ces cas-là, il est préférable de donner à la variable un nom explicite. On peut, par exemple, nommer « adresse » une variable stockant des adresses ou « age » une variable stockant l'âge.

Le nom d’une variable peut contenir plusieurs mots. Pour éviter, cependant, que ces mots ne soient interprétés comme plusieurs éléments du langage Python, il ne faut pas qu’ils soient séparés par des espaces. Deux conventions d’écriture sont traditionnellement utilisées dans le langage Python pour coller plusieurs mots tout en s’assurant que le nom reste lisible.

La 1ère convention d’écriture se nomme « snake case ». Elle consiste à séparer les mots avec un tiret bas « _ ». Par exemple, « nom_famille » sert à nommer la variable qui stocke le nom de famille. L’utilisation du tiret bas « _ » est une tradition de la communauté

Page 29: Les programmes nécessaires à la réalisation des robots ...€¦ · Voyons où les composants se trouvent sur la carte ESPeRobo : vous serez amené, au fil de votre apprentissage,

26 ©2019 Speechi

Python, mais rien n’empêche d’utiliser d’autres caractères pour séparer les mots comme le tiret haut « - » .

La 2e convention d’écriture couramment utilisée se nomme « camel case ». Elle consiste à écrire le premier mot en minuscules, puis la première lettre du deuxième mot et des suivants en majuscule. Ex : « nomFamille ».

■ Mots qui ne peuvent pas être utilisés comme noms de variable

En Python, il y a ce qu’on appelle des « mots réservés ». Certains mots, en effet, ne peuvent pas être utilisés pour nommer des variables parce qu’ils ont déjà une signification précise dans le langage Python. C’est le cas de « while » ou « if ». Si une erreur survient quand vous nommez une variable, vérifiez qu’il ne s’agit pas d’un mot réservé. Vous trouverez la liste des mots réservés dans la documentation officielle de Python.

Mots réservés - Documentation Python 3.8

2.3. Écraser des données dans des variables

Une variable à laquelle une valeur a été assignée peut être « écrasée » par de nouvelles données. Vérifiez que les données ont été écrasées en exécutant le code suivant dans le terminal :

La valeur 5 a d’abord été assignée à la variable a, puis remplacée par 10. C’est pourquoi la commande print() affiche la valeur 10 et non pas 5.

Page 30: Les programmes nécessaires à la réalisation des robots ...€¦ · Voyons où les composants se trouvent sur la carte ESPeRobo : vous serez amené, au fil de votre apprentissage,

©2019 Speechi 27

On peut assigner une variable en se basant sur la valeur de cette même variable, autrement dit on peut utiliser la variable elle-même dans une assignation. Vérifiez-le en exécutant le code suivant :

Dans ce code, la variable f à laquelle on assigne la valeur 100 est soumise à l’opération suivante : « valeur de la variable f (100 ici) + 100 = 200 ». C’est pourquoi le contenu de la variable f a finalement été remplacé par 200.

3. Le type de données d’une variable

Une variable peut avoir comme type de données des nombres ou encore des chaînes de caractères. Le type des données affectées devient le type de données de la variable en l'état. La commande type() sert à connaître le type de données d'une variable.

• Obtenir le type d'une variable qui stocke un entier

• Obtenir le type d'une variable qui stocke une chaîne de caractères

3.1. Écraser une variable avec un autre type de données

En Python, les variables sont très flexibles. Dans d’autres langages de programmation, le type de données de la variable est fixé par la première donnée affectée et ce type ne peut pas être modifié par la suite. En Python, en revanche, le type d’une variable évolue en fonction du contenu stocké.

Dans le code ci-dessus, un entier (int), un nombre à virgule (float), puis une chaîne (str) ont été successivement affectés à la même variable, changeant ainsi le type de données qui lui étaient affectées.

Page 31: Les programmes nécessaires à la réalisation des robots ...€¦ · Voyons où les composants se trouvent sur la carte ESPeRobo : vous serez amené, au fil de votre apprentissage,

28 ©2019 Speechi

4. Exemple de programme utilisant des variables

Pour réviser ce que vous avez appris, écrivons et exécutons deux programmes utilisant des variables.

4.1. Calcul du prix incluant la taxe à la consommation

Enregistrez le taux de TVA dans une variable pour l'utiliser dans le calcul des prix de plusieurs articles.

* print() peut afficher plusieurs résultats en une fois en séparant les données par une virgule « , ».

4.2. Affichage de plusieurs phrases avec une chaîne de caractères commune

Vous pouvez stocker des chaînes de caractères communes dans des variables et les connecter avec l'opérateur « + ». Dans l'exemple ci-dessous, la phrase commune « is now loading.» utilisée pour indiquer que les données sont en cours de chargement est stockée dans une variable.

Page 32: Les programmes nécessaires à la réalisation des robots ...€¦ · Voyons où les composants se trouvent sur la carte ESPeRobo : vous serez amené, au fil de votre apprentissage,

©2019 Speechi 29

5. Exercice : Jouer le son de l’ESPeRobo

Dans cette partie, nous allons utiliser une variable pour contrôler la durée du son du buzzer intégré dans l’ESPeRobo.

5.1. Créer un programme

Le programme suivant permet de jouer les quatre premières mesures d’une mélodie. À cette étape, il n'est pas nécessaire de comprendre entièrement le sens de ce programme. Recopiez toutes les lignes dans la zone d'édition de Mu.

[Exemple de code 5.1.1]

La variable est définie à la 4ème ligne (duration = 600). « duration » signifie « durée » en anglais. Cette variable contrôle la durée pendant laquelle le buzzer doit jouer une note.

• La commande « buzzer.on(…) », utilisée à partir de la ligne 6, permet de jouer la note spécifiée du buzzer.

• Les chaînes de caractères C4 et D4* situées entre parenthèses indiquent la note que doit jouer le buzzer.

• La commande « time.sleep_ms() » permet de faire attendre le buzzer le temps indiqué dans la variable « duration » avant de passer à la note suivante. La durée est indiquée en millisecondes**. Cette pause permet de maintenir le buzzer allumé pendant la durée indiquée.

• Au bout de cette durée, la commande « buzzer.off() » à la dernière ligne éteint le buzzer.

*Dans le système de notation musicale anglais, les notes sont représentées par des lettres. « C » correspond à « Do », « D » à « Ré » et ainsi de suite. ** 1000ms = 1s. Donc 600ms = 0.6s.

Page 33: Les programmes nécessaires à la réalisation des robots ...€¦ · Voyons où les composants se trouvent sur la carte ESPeRobo : vous serez amené, au fil de votre apprentissage,

30 ©2019 Speechi

Le point important dans ce code est que la même variable « duration » est utilisée dans tous les appels à time.sleep_ms(). On peut donc modifier la durée de toutes les notes en une fois, en modifiant la valeur de la variable « duration », à la ligne 4.

5.2. Exécuter le programme

Cliquez sur le bouton « Lancer » en haut de l'écran pour exécuter le programme et vérifier que le programme se comporte comme prévu. Vérifiez également que le tempo de la chanson change lorsque vous modifiez la valeur de la variable « duration ».

Résumé de ce chapitre

Dans ce chapitre, vous avez découvert que les variables servent à stocker des données, notamment des valeurs numériques et des chaînes de caractères.

Page 34: Les programmes nécessaires à la réalisation des robots ...€¦ · Voyons où les composants se trouvent sur la carte ESPeRobo : vous serez amené, au fil de votre apprentissage,

©2019 Speechi 31

Chapitre 4 : Les fonctions en Python

1. Ce que vous allez apprendre dans cette leçon

Dans ce chapitre, vous allez étudier les « fonctions » qui servent à éviter des répétitions dans le code. À la fin de ce chapitre, vous programmerez une fonction permettant de décaler une mélodie d’une ou plusieurs octaves et de la jouer sur le buzzer de la carte ESPeRobo.

2. Les fonctions en Python

Les programmes utilisés dans les systèmes informatiques actuels peuvent comprendre des dizaines de milliers de lignes de code. Plus le programme est volumineux, plus il est nécessaire d’utiliser des « fonctions » pour écrire un code le plus concis possible. Un code plus concis est non seulement plus facile à lire, mais aussi plus facile à maintenir. La maintenance d’un code consiste, par exemple, à ajouter des fonctionnalités ou à corriger des bugs.

Le terme « fonction » est aussi utilisé en mathématiques dans lesquelles les fonctions tiennent un rôle similaire aux fonctions en Python. En mathématiques, l’expression « f(x)=y » signifie que l’on applique la fonction f au nombre x et que l’on récupère le résultat dans le nombre y.

À titre d'exemple, considérons la fonction suivante :

Dans cette fonction, si « x » vaut « 1 », le résultat est « 5 » et si « x » vaut « 2 », le résultat est « 7 ».

En d'autres termes, une fonction est quelque chose qui s’applique à un nombre et renvoie un autre nombre. En programmation, la valeur donnée à une fonction est appelée « argument » et le résultat produit par la fonction est appelé « valeur de retour ».

Page 35: Les programmes nécessaires à la réalisation des robots ...€¦ · Voyons où les composants se trouvent sur la carte ESPeRobo : vous serez amené, au fil de votre apprentissage,

32 ©2019 Speechi

Cependant, contrairement aux mathématiques, les programmes peuvent créer des fonctions sans arguments ni valeurs de retour.

2.1. Les fonctions intégrées de Python

Python comporte des fonctions préconstruites appelées « fonctions intégrées ». Vous en connaissez déjà quelques-unes, parmi lesquelles print(), type() ou encore int().

Liste des fonctions intégrées utilisées jusqu'à présent :

Nom de la fonction

Argument Valeur de retour

Action

print()

Données comme des valeurs numériques ou des chaînes de caractères

Aucune

Envoie les données reçues en argument à l'écran (terminal).

int()

Données numériques ou chaînes

Données entières

Reçoit des données non entières en argument, les convertit en données de type entier et les renvoie.

float()

Données numériques ou chaînes

Données à virgule

Reçoit des données qui ne sont pas un nombre à virgule en tant qu'argument, les convertit en données à virgule et les renvoie.

Page 36: Les programmes nécessaires à la réalisation des robots ...€¦ · Voyons où les composants se trouvent sur la carte ESPeRobo : vous serez amené, au fil de votre apprentissage,

©2019 Speechi 33

str()

Données numériques

Données de chaîne

Reçoit les données numériques en argument, les convertit en données de chaîne de caractères et les renvoie.

len()

Données telles que les chaînes de caractères

Longueur de la donnée

Retourne la longueur des données reçues en argument (dans le cas d'une chaîne de caractères, le nombre de caractères).

Il peut y avoir un argument, deux arguments ou plus, voire aucun. De même, pour la valeur de retour, certaines fonctions donnent des résultats, tandis que d'autres, comme print(), écrit quelque chose à l'écran et ne renvoie rien.

Python possède de nombreuses autres fonctions intégrées en plus de celles évoquées. Si vous souhaitez en savoir plus sur les fonctions intégrées, reportez-vous à la documentation officielle de Python. Cependant, en raison de sa difficulté, il est recommandé de ne la lire qu’après avoir étudié plus de chapitres.

Fonctions intégrées - Documentation Python 3.8

2.2. Définir la fonction

Vous pouvez également définir vos propres fonctions de la manière suivante : écrivez, après le mot « def », le nom de votre fonction. Faîtes-le suivre de parenthèses entre lesquelles vous définirez le nom des arguments, puis de deux points « : ». Comme pour les variables, les fonctions peuvent être nommées librement, à l'exception des mots réservés.

Les deux points introduisent, à la ligne suivante, le bloc d’instructions de la fonction qui est signalé par une indentation. Sans cette indentation, Python ne peut pas identifier ce bloc d’instructions comme le corps de la fonction.

L'indentation peut être entrée avec la touche « Tab » de votre clavier.

Page 37: Les programmes nécessaires à la réalisation des robots ...€¦ · Voyons où les composants se trouvent sur la carte ESPeRobo : vous serez amené, au fil de votre apprentissage,

34 ©2019 Speechi

À titre d’exercice, définissons une fonction « square » qui dépend d’un paramètre « x », renvoie le résultat de la mise au carré de « x » en tant que valeur de retour et utilise une variable intermédiaire pour calculer le résultat.

Dans la zone d'édition Mu, définissez d’abord une fonction nommée « square » ayant un paramètre x.

* « square » signifie « carré » en anglais. Nommez vos fonctions clairement de façon à savoir en un coup d’œil ce qu’elles font sans avoir à lire les blocs d’instructions de ces fonctions.

Écrivez ensuite le corps de la fonction. Le carré de l'argument x est affecté à la variable « result ». N’oubliez pas d’indenter le bloc d’instructions (avec la touche « Tab »).

* « result » signifie « résultat ».

La variable « result » est renvoyée en tant que valeur de retour. Utilisez l'instruction « return » pour renvoyer la valeur d'une fonction. Ajoutez la dernière ligne de code présentée ci-dessous :

Maintenant que la fonction est définie, cliquez sur le bouton « Lancer » en haut de l'écran pour exécuter ce programme.

Définir simplement la fonction et l'exécuter ne produira cependant aucun résultat. La fonction doit, en effet, être appelée pour être utilisée. Entrez le code suivant dans le terminal pour calculer le carré de 10 qui appelle la fonction « square() ».

Les fonctions sont appelées sous la forme : « NomDeLaFonction (argument) ». Vérifiez que le résultat retourné par la fonction square() avec d’autres valeurs en argument est correct.

Page 38: Les programmes nécessaires à la réalisation des robots ...€¦ · Voyons où les composants se trouvent sur la carte ESPeRobo : vous serez amené, au fil de votre apprentissage,

©2019 Speechi 35

• Calcul du carré de 123

• Calcul du carré de 1.2

Nous avons défini une fonction qui calcule le carré d’un nombre que l’on peut tout aussi bien calculer sans définir de fonction en utilisant l’opérateur « ** ». Mais qu'en est-il des calculs complexes composés de dizaines de lignes de code ? Pour de tels calculs, il faudrait recopier de longues formules et remplacer tous les nombres par leurs valeurs pour obtenir un résultat. En définissant une fonction, on obtient un résultat très simplement en se contentant de fournir la valeur des différents arguments et la complexité de la formule est cachée.

3. Les commentaires pour expliquer le fonctionnement du programme

Vous avez appris qu'il était important de bien nommer les variables et les fonctions pour connaître le rôle qu’elles jouent dans le programme. Cependant, le nom seul peut ne pas fournir assez d'informations à la personne qui lit le code. Dans de tels cas, vous pouvez laisser des « commentaires » qui précisent le fonctionnement du programme.

3.1. Comment écrire des commentaires ?

Si vous n’écrivez que des caractères qui ne sont ni des données de chaîne de caractères ni des noms de variables, une erreur se produit. Pour écrire des commentaires en Python, il suffit de les faire précéder d’un dièse « # ».

Regardons l'exemple d'utilisation suivant.

Page 39: Les programmes nécessaires à la réalisation des robots ...€¦ · Voyons où les composants se trouvent sur la carte ESPeRobo : vous serez amené, au fil de votre apprentissage,

36 ©2019 Speechi

Lorsque vous exécutez ce programme, vous obtenez le résultat suivant :

À la ligne 6, le code écrase a priori la variable a en lui assignant la valeur 50. Cependant, comme cette ligne est identifiée par le programme comme un commentaire grâce au dièse # qui le précède, l’équation à la ligne 7 récupère la valeur de la variable définie à la ligne 2 (a = 10). C’est pourquoi le résultat de l’équation de la ligne 7 est 30 et non 70.

Les commentaires sont donc ignorés lors de l’exécution du programme. Tout ce qui suit le symbole # sur cette ligne est traité comme un commentaire. Dès la ligne suivante, vous pouvez écrire le code Python comme d'habitude.

L’utilisation du dièse # peut également servir à invalider le traitement d’une instruction que vous souhaitez mettre en attente comme « #a = 50 ». Si vous souhaitez, à un moment donné, exécuter cette instruction, il vous suffit de supprimer le #.

Les commentaires non seulement aident les autres utilisateurs à comprendre votre code, mais sont aussi utiles à l’auteur du code pour se remémorer son fonctionnement. En plus d’attribuer des noms explicites à vos variables, écrivez avec soin vos commentaires pour qu’ils soient clairs.

4. Exercice : Mettre les sons du buzzer de l’ESPeRobo dans les fonctions

Au chapitre 3, nous avons utilisé une variable pour contrôler le tempo du morceau joué par le buzzer de l’ESPeRobo. Ici, nous allons définir une fonction qui permet de décaler une mélodie d’une ou plusieurs octaves. Le nombre d’octaves sera donné en argument de la fonction.

4.1. Créer un programme

Copiez le code suivant pour importer les fonctions permettant de contrôler le temps et le buzzer de la carte ESPeRobo.

Définissez ensuite la fonction play_music (key) qui lance le buzzer ou le morceau avec la hauteur de touche en argument. Ajoutez ce code à la quatrième ligne comme suit :

Page 40: Les programmes nécessaires à la réalisation des robots ...€¦ · Voyons où les composants se trouvent sur la carte ESPeRobo : vous serez amené, au fil de votre apprentissage,

©2019 Speechi 37

Ajoutez, dans la fonction play_music(), le code suivant pour jouer les notes présentées ci-dessous dans l’ordre. Copiez les lignes 5 à 29 de ce code dans votre éditeur Mu. Assurez-vous que les instructions liées à la fonction sont indentées.

[Exemple de code 4.1.1]

Le code qui joue les sons est écrit dans le format suivant :

buzzer.on(str(numéro de note MIDI + valeur de l’argument key *12))

La note spécifiée entre parenthèses dans l’instruction « buzzer.on() » peut être soit le nom de la note anglaise suivi de son octave, soit le numéro de note défini par la norme mondiale appelée MIDI. Cependant, les deux types de note doivent être spécifiés sous forme de chaînes.

Tableau des notes MIDI

Notes avec octave Notes MIDI C3 48 D3 50 E3 52 F3 53 G3 55 A3 57 B3 59

Page 41: Les programmes nécessaires à la réalisation des robots ...€¦ · Voyons où les composants se trouvent sur la carte ESPeRobo : vous serez amené, au fil de votre apprentissage,

38 ©2019 Speechi

C4 60 D4 62 E4 64 F4 65 G4 67 A4 69 B4 71 C5 72

Dans la norme MIDI, deux notes séparées d’une octave ont un écart de 12. La différence entre C3 et C4 (60-48 = 12) et entre F3 et F4 (65-53 = 12) donnent le même résultat.

En utilisant cette propriété, on peut décaler une note MIDI de valeur n de x octaves en effectuant le calcul n + 12 * x. » Par exemple, pour décaler la note E3 (de valeur midi 52) de 1 octave, on calcule 52 + 12 * 1 = 64, ce qui correspond bien à la note E4 (la note E de l’octave supérieure).

Si vous utilisez une note MIDI, il faut la spécifier sous la forme d’une chaîne. Il vous faut donc utiliser la commande str() pour convertir le résultat du calcul en chaîne.

4.2. Exécuter le programme

Cliquez sur le bouton "Lancer" en haut de l'écran pour exécuter ce programme.

Les fonctions définies dans le programme exécuté peuvent être appelées à partir du terminal et exécutées. Entrez le code suivant dans le terminal et exécutez-le en appuyant sur la touche "Entrée".

Page 42: Les programmes nécessaires à la réalisation des robots ...€¦ · Voyons où les composants se trouvent sur la carte ESPeRobo : vous serez amené, au fil de votre apprentissage,

©2019 Speechi 39

Vérifiez que la fonction décale bien la mélodie du nombre d’octaves spécifié en argument en y mettant des valeurs entre 1 et 5.

Si vous spécifiez un nombre supérieur à 6 ou un entier inférieur à -1 en argument, une erreur se produira. En effet, le résultat du calcul de « 50 + key * 12 » se situe en dehors de la plage de numéros de note MIDI « 48 à 127 » pouvant être jouée à partir du buzzer de l’ESPeRobo.

Résumé de ce chapitre

Dans ce chapitre, vous avez découvert ce qu’étaient les fonctions et les commentaires dans le langage Python. Il existe d'autres fonctions utiles et d’autres utilisations possibles des fonctions qui ne sont pas introduites ici. Celles-ci seront expliquées au fur et à mesure de votre apprentissage. Pour l'instant, nous nous limiterons à connaître la façon d’utiliser les fonctions apprises dans ce chapitre.

Page 43: Les programmes nécessaires à la réalisation des robots ...€¦ · Voyons où les composants se trouvent sur la carte ESPeRobo : vous serez amené, au fil de votre apprentissage,

40 ©2019 Speechi

Chapitre 5 : Les objets en Python

1. Ce que vous allez apprendre dans cette leçon

Python est un langage de programmation que l’on dit « orienté objet ». Dans ce chapitre, nous allons étudier les notions de base de l’objet et programmer un message de bienvenue sur le panneau LED de l’ESPeRobo en utilisant les fonctionnalités de l'objet associé.

2. Les objets en Python

Dans le langage Python, toutes les données sont des objets, y compris les nombres et les chaînes de caractères.

Pour comprendre ce qu'est un objet en Python, transposons cette notion dans le monde réel. Dans le monde réel, une voiture est un objet qui possède des attributs (ex : elle est rouge, elle a 4 roues...) et peut réaliser des actions (ex : rouler). Cet objet voiture pourra interagir avec un objet conducteur qui lui-même a des attributs (un nom, un âge...) et peut réaliser certaines actions (marcher, conduire...).

De même, dans les langages de programmation orientés objet, l'objet possède des variables appelées "attributs" et des fonctions appelées "méthodes" qui équivalent à des actions. Pour comprendre plus précisément le rôle des attributs et des méthodes d'un objet en programmation, comparons un objet image à une personne.

2.1. Les attributs de l'objet

Les attributs sont des éléments qui définissent un objet. De même qu’une personne possède certains attributs tels qu’un « nom », un « âge », un « sexe » et une « adresse », chaque objet en Python possède ses propres attributs. Dans le cas d’une image stockée sur un ordinateur, les attributs peuvent être, par exemple, la « hauteur », la « largeur », la « couleur » et la « date de prise de vue ».

Page 44: Les programmes nécessaires à la réalisation des robots ...€¦ · Voyons où les composants se trouvent sur la carte ESPeRobo : vous serez amené, au fil de votre apprentissage,

©2019 Speechi 41

2.2. Les méthodes de l'objet

Une méthode désigne les actions et le comportement d’un objet, autrement dit la fonction qu’il remplit. Une personne, par exemple, peut réaliser plusieurs actions comme « manger », « dormir » et « parler ». En Python, les objets ont des méthodes qui remplissent diverses fonctions. Quand vous travaillez une image sur un ordinateur, des fonctions telles que « Traiter l'image (recadrage, ajustement de la luminosité, redimensionnement, etc.) » ou encore « Enregistrer l'image traitée » ne sont rien d’autre que des méthodes.

■ Différences entre méthodes et fonctions

Bien qu’une méthode et une fonction aient des rôles très similaires, elles présentent des différences dans la manière dont elles sont écrites au moment de l'appel.

Les fonctions comme print() et int(), abordées dans le 1er chapitre, sont écrites de la manière suivante :

nomDeLaFonction(argument1, argument2, ...)

Les méthodes, quant à elles, s’écrivent de la manière suivante :

nomDeLobjet.nomDeLaMethode(argument1, argument2, ...)

Contrairement aux fonctions, les méthodes sont associées à un objet. C’est pourquoi, pour appeler une méthode, vous devrez écrire « Exécutez la méthode untel de l'objet untel ». N’oubliez pas le point (.) entre « nomDeLobjet » et « nomDeLaMethode ».

2.3. La programmation orientée objet

La programmation qui se sert des caractéristiques des objets comme les attributs et les méthodes est appelée « programmation orientée objet ». La programmation orientée objet comporte d'autres concepts importants comme l’« héritage », l’« encapsulation » ou encore le « polymorphisme ». Ces concepts seront expliqués au fur et à mesure de votre apprentissage. Nous commencerons d’abord par les attributs et les méthodes des objets.

3. Les méthodes des chaînes de caractères

Nous avons expliqué précédemment que toutes les données Python étaient des objets. Parmi ces données, nous pouvons citer les nombres et les chaînes de caractères qui disposent donc, en tant qu’objet, de plusieurs méthodes. Nous allons maintenant découvrir quelques méthodes de chaînes de caractères faciles à utiliser. Si vous voulez connaître en détail toutes les méthodes disponibles pour ces types de données, reportez-vous aux documents suivants.

Les types numériques - Documentation Python 3.8

Le type String (chaîne de caractères) -documentation Python 3.8

3.1. Méthode de transformation des caractères alphabétiques en majuscules et minuscules

La méthode lower() permet de changer les lettres majuscules en minuscules. Inversement, la méthode upper() permet de mettre les lettres minuscules en majuscules. Écrivons le code suivant qui utilise ces deux méthodes dans la zone d'édition et exécutons-le.

Page 45: Les programmes nécessaires à la réalisation des robots ...€¦ · Voyons où les composants se trouvent sur la carte ESPeRobo : vous serez amené, au fil de votre apprentissage,

42 ©2019 Speechi

[Exemple de code 3-1-1]

Lorsque vous exécutez ce programme, les résultats s’affichent comme ceci dans le terminal :

Les méthodes lower() et upper() créent une copie de la valeur d'une chaîne de caractères en la transformant, par exemple, en minuscule ou en majuscule. Par conséquent, il n'est pas nécessaire de spécifier la chaîne de caractères à traiter en argument, c'est la valeur de l'objet qui appelle la méthode qui est utilisée.

Ces deux méthodes renvoient une nouvelle chaîne de caractères dans laquelle des caractères ont été mis en minuscules ou majuscules. À ce stade, l'objet n’est pas remplacé par les données converties. C’est pourquoi le résultat de « print(text) » reste « Python », c’est-à-dire la chaîne de caractères initiale.

Une méthode qui n’écrase pas le contenu d’un objet lorsqu’on l’appelle de cette manière s'appelle une méthode non destructive. Il en est de même de la méthode title()* et de la méthode capitalize()**qui sont des méthodes non destructives.

* La méthode title() ne met en majuscule que la première lettre de chaque mot. ** La méthode capitalize() met en majuscule la première lettre d'un mot.

Si vous souhaitez vraiment modifier la chaîne de caractères « text », il faut explicitement l’écraser en lui affectant la valeur de retour de la méthode.

3.2. Méthode de recherche d'un caractère dans une chaîne

La méthode find() permet de rechercher un caractère spécifique dans une chaîne. Si vous spécifiez le caractère recherché en argument de cette méthode, la première occurrence de ce caractère sera renvoyée sous la forme d’une valeur entière.

Écrivons le code suivant et observons le résultat après son exécution.

Page 46: Les programmes nécessaires à la réalisation des robots ...€¦ · Voyons où les composants se trouvent sur la carte ESPeRobo : vous serez amené, au fil de votre apprentissage,

©2019 Speechi 43

[Exemple de code 3-2-1]

(Résultat après exécution)

Le caractère « a » apparaît dans la chaîne « tomato » en 4e position. Or, en Python, le comptage se fait à partir de 0, c’est pourquoi le résultat est « 3 ». Si un même caractère se trouve deux fois ou plus dans une chaîne de caractères, comme le caractère « o » dans « tomato », la position du 1er caractère trouvé sera renvoyée, (ici, « 1 »). Enfin, cette méthode retourne « -1 » si le caractère en question n’est pas dans la chaîne.

La méthode count() permet d’obtenir le nombre de fois qu’un caractère se trouve dans une chaîne. En spécifiant le caractère que vous souhaitez rechercher en argument, le nombre de fois que ce caractère apparaît dans la chaîne vous sera renvoyé.

[Exemple de code 3-2-2]

(Résultat après exécution)

3.3. Méthode permettant de remplacer une chaîne de caractères par une autre chaîne de caractères

Si vous souhaitez remplacer tout ou partie d’une chaîne de caractères par une autre, vous pouvez utiliser la méthode replace(). Cette méthode nécessite deux arguments : la chaîne à remplacer et la chaîne de remplacement. Lorsque vous spécifiez plusieurs arguments, séparez-les par une virgule « , ».

chaine.remplace(chaine_a_remplacer, chaine_de_remplacement)

La méthode replace() spécifie en 1er argument la chaîne de caractères à remplacer et en 2e argument la chaîne de caractères de remplacement. Il s'agit également d'une méthode non destructive. Si vous souhaitez écraser la chaîne de l’objet « text », vous devez lui affecter la valeur de retour de la méthode à l'aide de l'opérateur « = ». Dans l'exemple suivant, la chaîne « sunny » a été remplacée par la chaîne « rainy ».

Page 47: Les programmes nécessaires à la réalisation des robots ...€¦ · Voyons où les composants se trouvent sur la carte ESPeRobo : vous serez amené, au fil de votre apprentissage,

44 ©2019 Speechi

(Résultat après exécution)

3.4. Méthode pour couper la chaîne de caractères

La suppression de caractères superflus, comme les espaces et les sauts de ligne, avant et après une chaîne est appelée « rognage ». Pour faire cela, les chaînes de caractères Python disposent de la méthode strip(). Si l’argument de la méthode strip() n’est pas renseigné, elle renvoie la chaîne débarrassée des espaces se trouvant au début et à la fin de cette chaîne.

[Exemple de code 3-3-1]

(Résultat après exécution)

Comme le remplacement n’est effectué qu’au début et à la fin de la chaîne, les espaces entre les caractères ne sont pas supprimés.

[Exemple de code 3-3-2]

(Résultat après exécution)

Page 48: Les programmes nécessaires à la réalisation des robots ...€¦ · Voyons où les composants se trouvent sur la carte ESPeRobo : vous serez amené, au fil de votre apprentissage,

©2019 Speechi 45

Une chaîne de caractères peut être spécifiée en argument de la méthode strip() pour être supprimée.

[Exemple de code 3-3-3]

(Résultat après exécution)

3.5. Méthodes spéciales de remplacement des chaînes

Certaines méthodes permettent de personnaliser certains éléments d’un mail envoyé à plusieurs personnes, comme le nom du destinataire ou encore son adresse. Dans l’exemple ci-dessous, le mail peut être facilement personnalisé en modifiant simplement les accolades {} par le nom du destinataire.

Les accolades « {} » présentes dans cette chaîne de caractères peuvent être remplacées par la chaîne de caractères spécifiée dans l'argument de la méthode format (). Si plusieurs accolades « {} » se trouvent dans la chaîne, il faut spécifier plusieurs arguments pour qu’ils remplacent dans l'ordre les accolades de cette chaîne. Pour exemple, écrivons et exécutons le code suivant.

[Exemple de code 3-4-1]

(Résultat après exécution)

Page 49: Les programmes nécessaires à la réalisation des robots ...€¦ · Voyons où les composants se trouvent sur la carte ESPeRobo : vous serez amené, au fil de votre apprentissage,

46 ©2019 Speechi

4. Exercice : Afficher un message de bienvenue

Pour la fin de ce chapitre, créons et faisons défiler un message de bienvenue sur le panneau LED de l’ESPeRobo.

4.1. Créer un programme

Le programme suivant sert à afficher sur le panneau le message « Welcome {nom de la personne} ! ».

[Exemple de code 4-1-1]

Comme le mot « Welcome » est commun aux trois messages, ce code utilise des accolades {} qui sont remplacées par le nom de plusieurs personnes grâce à la méthode format(). En vous basant sur cet exemple, créez un programme pour afficher un message d’accueil simple qui fait défiler votre nom.

Résumé de ce chapitre

Dans ce chapitre, vous avez découvert les objets en Python, et en particulier les méthodes, qui correspondent aux actions réalisables par cet objet. Le buzzer.on() qui permet de lancer le buzzer de l’ESPeRobo et le display.scroll() qui fait défiler des caractères sur le panneau LED sont également des exemples de méthodes. De nombreuses autres méthodes sont disponibles, mais, comme les retenir toutes serait fastidieux, nous vous conseillons d’aller consulter la documentation fournie quand le besoin s’en fait ressentir.

Page 50: Les programmes nécessaires à la réalisation des robots ...€¦ · Voyons où les composants se trouvent sur la carte ESPeRobo : vous serez amené, au fil de votre apprentissage,

Notes

Page 51: Les programmes nécessaires à la réalisation des robots ...€¦ · Voyons où les composants se trouvent sur la carte ESPeRobo : vous serez amené, au fil de votre apprentissage,
Page 52: Les programmes nécessaires à la réalisation des robots ...€¦ · Voyons où les composants se trouvent sur la carte ESPeRobo : vous serez amené, au fil de votre apprentissage,

Apprendre à programmer des robots pour comprendre le monded’aujourd’hui et de demain.

Les machines programmées, de plus en plus intelligentes, font partie intégrante de notre viede tous les jours. Elles nous accompagnent, nous entourent et ont envahi tous les domaines denotre vie quotidienne. Maîtriser le monde, ce n'est pas les utiliser, mais avant toutcomprendre comment elles fonctionnent.

Comment fonctionnent-elles?Selon quelle logique ? Selon quels algorithmes?Comment sont conçus les programmes qui leur dictent leurs actions et réactions ?

C'est ce que vous apprendrez tout au long de ces livrets d'apprentissage. Et pas seulement "enthéorie" : vous allez vous-même concevoir et programmer vos propres robots : des actionssimples aux plus complexes, vous apprendrez à programmer des robots amusants et originauxque vous aurez conçus vous-même. Une seule limite : votre créativité !

L'École Robots permet à tous de s'initier à la programmation en s'amusant, un enjeu majeur, aujourd'hui et demain.

Pour en savoir plus : www.ecolerobots.com

C U R S U S E D U C A T I O N N A T I O N A L E

Réf : LIV-EN-LY-PY-1 (v.1)