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
:
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?"
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)
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).
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.
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).
Cliquer
sur l'image pour agrandir
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...
Cliquer
sur l'image pour agrandir
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 bouclesSI...ALORS et affichage
du résultat.
Cliquer
sur l'image pour agrandir
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 bouclesSI...ALORS et affectation
de la valeur correspondante à
la variable comparer. Le
résulatat est affiché
à la fin cette fois.
Cliquer
sur l'image pour agrandir
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.
Cliquer
sur l'image pour agrandir
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.
Cliquer
sur l'image pour agrandir
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
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).
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.
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).
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.
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).