~~NOTOC~~ =======Bilan des connaissances sur la programmation des objets connectés======= Pour utiliser, et encore plus pour programmer, un objet connecté, il est nécessaire d'en connaître le fonctionnement ainsi que de connaître les principes de la programmation. ======L'algorithme====== Il n'est pas possible de programmer un objet dans un langage de programmation si l'on n'est pas capable d'expliquer simplement et précisément en français ce que l'on veut faire. C'est comme pour expliquer à un petit enfant de tracer un trait droit entre 2 points. Il faut lui demander de prendre une règle et un crayon, de poser la règle sur le premier point et de la faire pivoter pour qu'elle touche aussi le deuxième, de la maintenir pour pas qu'elle glisse le temps de tracer un trait du 1er point au deuxième. Il faut être capable d'expliquer comme dans une recette de cuisine. * **Un algorithme** est une méthode générale pour atteindre la solution d'un problème. * C'est une **suite précise et ordonnée d’opérations simples** permettant de résoudre le problème. * Il est **exprimé en langage naturel** (pour nous en français) et **en respectant certaines règles comme l'indentation** (décalage des lignes à répéter ou conditionnelle) . Le robot mBot doit aller du point D au point A. Je dois connaître l'utilisation des capteurs infra-rouge et ultra-son. {{cours:mbot_capteurs_u.jpg?200 }}{{ cours:mbot_capteurs_i.jpg?200}}Capteur ultra-son : Connaître sa distance par rapport à un obstacle Capteur infra-rouge : Connaître sa position par rapport à une ligne noire. 0 c'est bon, 1 ou 2 il faut corriger la trajectoire, 3 il n'y a plus de ligne. Comme il y a 4 possibilités pour la position de la ligne, je dois l'enregistrer dans une variable afin de faire les 4 tests qui peuvent répondre VRAI ou FAUX. La solution la plus simple est de suivre la ligne noire, puis de tourner de 90° au bout et de s'arrêter à 10 cm. Pour l'exprimer simplement, précisément et de manière ordonnée je dois écrire quelque chose comme : {{ :cours:defi1mbot.jpg?300|}} * Définir une variable LIGNE à 0 (0 = être sur la ligne) * Répéter jusqu'à plus voir de ligne noire (valeur 3 du suiveur de ligne) * ---- Mettre la position réelle dans la variable LIGNE (éviter d'avoir 3 si on ne roule pas droit) * ---- Si je déborde à droite de la ligne (valeur 1) * ---- ---- Tourner un peu à gauche * ---- Si je déborde à gauche de la ligne (valeur 2) * ---- ---- Tourner un peu à droite * ---- Si je suis sur la ligne (valeur 0) * ---- ---- Avancer un peu à droite * Tourner de 90° à gauche * Répéter jusqu'à ce que la distance mesurée soit plus petite que 10 cm (distance d'arrêt dépassée) * ---- Avancer un peu * S'arrêter ======Le programme====== J'ai été capable d'expliquer la solution mais quelqu'un d'autre n'a peut être pas utilisé les mêmes mots ou la même langue. J'ai peut être fait des fautes d'orthographe. Contrairement à l'humain, l'ordinateur ne peu concevoir qu'une seule solution possible. **Un programme informatique est un ensemble d'opérations normalisées** de manière internationale destinées à être exécutées par un ordinateur. **C'est la traduction de l'algorithme**. **Il existe de nombreux langages de programmation** (Java, Python, PHP, C, **SCRATCH** …) utilisables utilisable graphiquement ou textuellement par l'être humain. Chacun est adaptés à un type de programme particuliers. Il n'existe qu'un langage **(le code machine en 0 et 1) compréhensible par l'ordinateur**. Il faudra donc une deuxième traduction par un programme : l'interpréteur (traduction ligne par ligne) ou un le compilateur (traduction en 1 seule fois) pour passer du langage de programmation au code machine. {{ :cours:mblock_progdef1.png?600|}} Pour pouvoir faire ma traduction, je dois connaître la signification des couleurs et des blocs qui vont avec. * (en orange) Je peux définir la valeur d'une variable que j'ai créé (rectangle) ou lire sa valeur (ovale) * (en jaune) Je peux réaliser des répétitions "Répéter jusqu'à ... " ou des conditions "Si ... alors ..." (remarquer l'indentation pour les répétitions et les conditions). * (en vert) Je dois utiliser des opérateurs en forme de losange pour préciser les conditions (ou des opérateurs ronds pour faire des calculs) * (en bleu clair) Je peux lire mes capteurs (rond = valeur analogique et losange = valeur logique) * (en bleu foncé) Je peux commander mes actionneurs. J'ai du faire des essais pour trouver la valeur en seconde qui correspond à 90°. Lorsque j'ai fini de traduire l'algorithme en langage de programmation graphique SCRATCH, Je clique sur le bouton "Télécharger" qui va d'abord compiler le programme (le traduire en 0 et 1) avant de le télécharger dans mBot. Je peux alors poser mBot au point D et le mettre en marche pour vérifier si le programme fonctionne.