Algorithmique
Robotique

Je remets ici le travail réalisé tout au long de l'année 2017-2018 avec ma classe de CM1. Les algorithmes étaient élaborés avec le groupe classe le lundi pendant 15-20 minutes, et chaque élève refaisait le programme pendant son atelier informatique de la semaine.

 

Définition du Larousse: L'algorithmique est l'ensemble des règles opératoires dont l'application permet de résoudre un problème énoncé au moyen d'un nombre fini d'opérations. Un algorithme peut être traduit, grâce à un langage de programmation, en un programme exécutable par un ordinateur.
Il existe un logiciel libre à utiliser en classe : Algobox. Pour télécharger ce logiciel pour reproduire nos algorithmes, les modifier, les améliorer :

Télécharger Algobox

Bonjour, comment vas-tu?

Problème : On veut que l'ordinateur nous dise bonjour de manière personnalisée avec le prénom.

Variables : Il existe 3 sortes de variables : les nombres, les chaînes de caractères et les listes. Un prénom est une chaîne de caractères.
prenom = chaîne de caractères

Algorithme :

Il faudra tout d'abord dire à l'ordinateur à qui il faut dire bonjour. Cela s'appelle lire la variable "prenom". Ensuite il suffit d'afficher le message "Bonjour", la variable "prenom", d'aller à la ligne et afficher "Comment vas-tu?"

Bonjour, comment vas-tu ?

Cliquer sur l'image pour agrandir

Clic droit: "Enregistrer la cible du lien"

Bonjour, comment vas-tu (modifié) ?

 

Problème : On veut que l'ordinateur dise bonjour de manière personnalisée 3 fois de suite.

Variables :
prenom = chaîne de caractères
nomb de type nombre et qui varie de 1 à 3

Algorithme :

On modifie l'algorithme précédent en introduisant une variable de type nombre :"nomb" et une boucle TANT_QUE "nomb" est plus petit que 4 (<4)

Bonjour, comment vas-tu ?

Cliquer sur l'image pour agrandir

Clic droit: "Enregistrer la cible du lien"

Multiplication au hasard dans les tables

Problème : On veut que l'ordinateur nous pose une multiplication prise au hasard dans les tables de multiplications de 2 à 10.

Variables : deux variables nombres vont prendre des valeurs au hasard entre 2 à 10: "nomb1" et "nomb2". Une 3ème variable nombre "reponse" est la réponse que va donner l'utilisateur.

Algorithme : Il faudra tout d'abord déclarer les différentes variables: "nomb1", "nomb2", "reponse". Pour que "nomb1" et "nomb2" prennent une valeur au hasard, il existe une fonction ALGOBOX_ALEA_ENT(2,10). Ici on demande des nombres au hasard entre 2 et 10. La variable "reponse" sera lue par l'ordinateur (l'utilisateur choisit et donne sa réponse).

SI la réponse est juste l'ordinateur répond "Excellent" SINON "Perdu"

Cliquer sur l'image pour agrandir

Clic droit: "Enregistrer la cible du lien"

Multiplication au hasard avec choix de la table

Problème : On veut que l'ordinateur pose une multiplication dans une table choisie par l'utilisateur.

Variables : L'algorithme de la semaine précédente est modifié: on garde la variable nomb1 qui va prendre des valeurs au hasard entre 2 à 10 et "nomb2" est lue. Une 3ème variable nombre "reponse" est la réponse que va donner l'utilisateur.

Algorithme :

Il faudra tout d'abord déclarer les différentes variables: "nomb1", "nomb2", "reponse". Pour que "nomb1" prenne une valeur au hasard, on utilise la fonction ALGOBOX_ALEA_ENT(2,10). Ici on demande des nombres au hasard entre 2 et 10. La variable "reponse" sera lue par l'ordinateur (l'utilisateur choisit et donne sa réponse).

SI la réponse est juste l'ordinateur répond "Excellent" SINON "Perdu"

Cliquer sur l'image pour agrandir

Clic droit: "Enregistrer la cible du lien"

10 multiplications au hasard à la suite

 

Problème : On veut que l'ordinateur pose 10 multiplications à la suite.

Variables : nomb1 et nomb2 sont générés au hasard avec la fonction ALGOBOX_ALEA_ENT(2,10). La variable "reponse" est la réponse entrée par l'utilisateur. Il va falloir introduire une nouvelle variable qui va compter le nombre de multiplications posées. On l'appelle "boucle".

Algorithme :

Il faudra tout d'abord déclarer les différentes variables: "nomb1", "nomb2", "reponse" et boucle. "boucle" prend la valeur 0 au départ et elle sera augmentée de 1 à chaque passage dans la boucle TANT_QUE.

SI la réponse est juste l'ordinateur répond "BRAVO !" SINON "DOMMAGE ! "

Cliquer sur l'image pour agrandir

Clic droit: "Enregistrer la cible du lien"

10 multiplications avec affichage du score

 

Problème : On veut que l'ordinateur pose 10 multiplications à la suite et qu'il nous donne notre score. Nous avons donc modifié le programme de la semaine précédente

Variables : On rajoute une variable "score" du type nombre.

Algorithme :

L'algorithme est le même que précédemment. La variable "score" vaut 0 au départ et chaque fois qu'une bonne réponse est donnée, "score" devient "score°1"

Cliquer sur l'image pour agrandir

Clic droit: "Enregistrer la cible du lien"

 

Série de nombres

Problème : Construire une série de 20 nombres dont le premier est 1 et chaque terme est le double du précédent. Cela revient à construire la série de nombres 1, 2, 4, 8, 16,... comme dans le casse-tête du 6 novembre (mais on va plus loin que les 8 termes demandés).

Variables :

resultat: c'est la variable qui donne le résultat de la multiplication par 2 à chaque boucle et que l'on fait s'afficher.

compteur: c'est une variable qui varie de 1 à 20

Algorithme :

Au départ la variable "resultat" vaut 1 et on l'affiche. La variable "compteur" est alors augmentée de 1. On calcule le terme "resultat" suivant en le multipliant par 2 et on l'affiche. On s'arrête dès que "compteur" est égal à 20 (c'est-à-dire plus petit que 21).

Suite de nombres

Suite de nombes<vide>

Clic droit: "Enregistrer la cible du lien"

L'âge de Mathis

Problème : Pour chacun de ses anniversaires, Mathis a un gâteau avec le nombre de bougies correspondant à son âge. Il possède 105 bougies. Quel âge a Mathis ?

Variables :

age = age de Mathis
nombrebougies = nombre de bougies

Algorithme :

Pour chacun des anniversaires de Mathis, l'ordinateur va calculer le nombre de bougies qu'il possède. Au départ, l'âge de Mathis est 0 et il a 0 bougies. Chaque année Mathis possède nombrebougies = nombrebougies + age. Le calcul sera fait tant que nombrebougies est différent de 105 (TANT QUE nombrebougies!=105).

!= veut dire différent pour l'ordinateur.

Age de Mathis

Cliquer sur l'image pour agrandir

Clic droit: "Enregistrer la cible du lien"

Multiples de 5


Problème : En classe, nous avons d'abord cherché sur l'ardoise les 10 premiers multiples de 5. Nous avons ensuite voulu écrire un algorithme qui nous permettrait d'afficher les 1500 premiers multiples de 5.

Variables :

multiple : c'est la variable pour les multiples de 5
boucle : c'est une variable qui varie de 1 à 1501 (pour avoir 1500 multiples, il faut aller jusqu'à boucle <1501 (sinon on n'en a que 1499)

Algorithme :

Au départ la variable "multiple" vaut 5. A chaque boucle "multiple" est affichée et elle prend ensuite la valeur "multiple*boucle". La variable "boucle" est alors augmentée de 1. On s'arrête dès que "boucle" vaut 1500.
L'algorithme s'est arrêté trois fois pour nous demander si l'on voulait vraiment avoir les 1500 multiples (quel paresseux cet ordinateur!) mais nous avons insisté pour aller jusqu'au bout. Le 1500ème multiple est 7500 (5*1500).

Multiples de 5

Cliquer sur l'image pour agrandir

Multiples de 5

Multiples

Problème : Nous voulons transformer le programme de la semaine dernière afin de pouvoir choisir le nombre dont on veut les multiples et le nombre de multiples. Nous devons donc rajouter une variable qui nous permettra de choisir le nombre de multiples.

Variables :

multiple : c'est la variable pour les multiples, on fera lire cette variable pour choisir le nombre dont veut les multiples.

nombreboucles: variable qui est lue au départ et qui permet de choisir le nombre de multiples

boucle : c'est une variable qui varie de 1 à nombreboucles+1 (pour avoir nombreboucles multiples, sinon on n'en a que nombreboucles-1)

Algorithme :

Au départ la variable "multiple" est lue. A chaque boucle "multiple" est affichée et elle prend ensuite la valeur "multiple*boucle". La variable "boucle" est alors augmentée de 1. On s'arrête dès que "boucle" vaut "nombreboucles"+1.

Nous avons essayé avec des multiples de 3 de 25, de 8...

Multiples de 5

Cliquer sur l'image pour agrandir

Multiples de 5

Clic droit: "Enregistrer la cible du lien"

Comparer 2 nombres

Problème : Nous voulons comparer 2 nombres que nous pouvons choisir en lançant l'algorithme.

Variables :

nombre1 et nombre2 : ce sont les variables nombres que l'on va comparer et qui vont être lues (c'est à dire choisies par l'utilisateur)

Algorithme :

Au départ les variables "nombre1" et "nombre2" sont lues. Il faut ensuite envisager les 3 situations possibles: nombre1<nombre2, nombre1>nombre2, nombre1=nombre2. Il faut donc trois boucles SI...ALORS et affichage du résultat.

Comparer 2 nombres

Cliquer sur l'image pour agrandir

Comparer 2 nombres

Clic droit: "Enregistrer la cible du lien"

Comparer 2 nombres (2)

Problème : La semaine dernière nous avons fait un algorithme pour comparer deux nombres. Nous voulons cette semaine l'améliorer. En effet, il n'est pas nécessaire d'afficher dans chaque boucle le résultat. Il suffira de comparer les nombres et d'afficher à la fin le signe qui convient entre ces deux nombres. Pour cela, il faut introduire une nouvelle variable qui sera affichée entre les deux nombres mais à la fin seulement.

Variables :

comparer est la variable qui peut prendre les valeurs : >, < , =. La variable comparer est donc déclarée comme CHAÏNE de caractères.

nombre1 et nombre2 sont comme la semaine dernière les nombres choisis par l'utilisateur et qui vont être comparés.

Algorithme :

Au départ les variables "nombre1" et "nombre2" sont lues. Il faut ensuite envisager les 3 situations possibles: nombre1<nombre2, nombre1>nombre2, nombre1=nombre2. Il faut donc trois boucles SI...ALORS et affectation de la valeur correspondante à la variable comparer. Le résulatat est affiché à la fin cette fois.

Comparer 2 nombres

Cliquer sur l'image pour agrandir

Comparer 2 nombres

Clic droit: "Enregistrer la cible du lien"

Comparer 2 nombres (3)

Problème : Cette semaine, nous avons encore amélioré notre algorithme en supprimant une boucle SI...ALORS

En effet la variable "comparer" sera " > ", " < " ou " = ". Il suffira donc de lui donner la valeur " = " au départ. Deux boucles de test permettront de lui attribuer la valeur " < " ou " > ". Si aucune de ces conditions n'est remplie, elle gardera sa valeur " = " sans qu'on ait besoin de tester une nouvelle fois.

Comparer 2 nombres

Cliquer sur l'image pour agrandir

Comparer 2 nombres

Clic droit: "Enregistrer la cible du lien"

Jeu du nombre à deviner

Problème : Deviner un nombre entre 1 et 10 choisi par l'ordinateur.

Variables :

hasard = nombre au hasard choisi par l'ordinateur
reponse = proposition faite par l'utilisateur

Algorithme : Déclaration des variables. Utilisation de la fonction ALGOBOX-ALEA-ENT(1,10) pour le choix du nombre au hasard. La variable "reponse" est lue. Affichage de "Bravo!" si la réponse est juste, et de "Perdu" dans le cas contraire (SI_SINON). La variable "hasard" est affichée à la fin.

Deviner un nombre

Cliquer sur l'image pour agrandir

Deviner un nombre

Clic droit: "Enregistrer la cible du lien"

Jeu du nombre à deviner (suite)

L'algorithme précédent a été modifié afin de permettre 7 essais pour trouver le nombre et le nombre à deviner est entre 1 et 100.

Variables rajoutée :

essai = prend la valeur 7 au départ et est décrémenté de 1 à chaque boucle. Si le résultat est trouvé avant la fin des 7 essais, "essai" est mis à 0 pour sortir artificiellement du programme.

Cliquer sur l'image pour agrandir

Deviner un nombre

Jeu du nombre à deviner (suite)

 

La semaine denière, Camille a proposé que le programme affiche le nombre d'essais restant à chaque nouvel essai. Le programme a donc été une nouvelle fois modifié pour que cette fois-ci, on indique au joueur combien d'essais il lui reste. Pas de nouvelle variable car il suffit d'afficher la variable "essai"-1 si le nombre n'est pas trouvé (comme le nombre d'essais restant est affiché avant qu'on enlève 1, il faut en tenir compte et l'afficher avec 1 de moins).

Deviner un nombre avec affichage nombre d'essais restant

Cliquer sur l'image pour agrandir

Robotique: Thymio

Thymio est un petit robot qui permet de découvrir l’univers de la robotique et d’apprendre le langage des robots. Il peut être programmé pour réaliser de nombreuses expériences.

Télécharger les 3 fiches de travail (pdf)

Questionnaire internet

Semaine 1: découverte des modes pré-programmés du robot

Robot Thymio

Thymio en mode violetThymio en mode amical

Cliquer sur l'image pour agrandir

Revoir la vidéo de préparation à la séquence 1

Semaine 2: programmation de Thymio avec VPL

(Visual Programming Language)

VPL est un language de programmation visuelle qui permet de programmer Thymio.

Télécharger VPL

Dans un premier temps, il s'agit de programmer une séquence imposée (photo 1) .
Ensuite, toute la liberté est laissée d'inventer d'autres programmes pour découvrir tous les événements et actions possibles (photo 2).

Robot Thymio

Cliquer sur l'image pour agrandir

Revoir la vidéo de préparation à la séquence 2

Semaine 3: programmation de Thymio avec VPL avancé

Le mode avancé de VPL permet de construire des programmes avec un état interne.
Cela permet d'utiliser des versions avancées de certains blocs ainsi que de nouveaux blocs.

Robot Thymio

Cliquer sur l'image pour agrandir

Dans le programme ci-dessus, en appuyant sur la touche , Thymio avance après un délai de 2 secondes. Il émet un signal sonore et devient vert. S'il rencontre un obstacle, il devient jaune et tourne en rond. Pour l'arrêter, il faut le renverser: il fait un signal sonore et devient violet.

Revoir la vidéo de préparation à la séquence 3

Semaine 4: utilisations des états

L’utilisation des états permet de changer d’actions à faire pour un même événement. Alors que dans VPL simple, on ne peut pas avoir deux évènements identiques, ici c’est possible parce que les deux évènements dépendent de l’état du robot et ne sont donc pas vraiment identiques. Dans l'exemple ci-dessous, grâce aux états, une même instruction de tap sur le robot donne des couleurs différentes selon si c’est le premier tap (bleu), le deuxième (vert) ou le troisième (jaune).

Robot Thymio

Cliquer sur l'image pour agrandir