Chapitre 2. Bases de la programmation
Pourquoi est-il important d’apprendre la programmation ? Regardez cette vidéo pour comprendre en deux minutes chrono !
Séance 1. Notions d’algoritme et de programme, boucle for
Pendant cette séance :
- Nous avons revisé la notion d’algorithme.
- Nous avons revisé la programmation par bloc avec Angry Birds dans Studio Code (Niveaux 1 à 10). Nous avons notamment revu le bloc répéter qui permet de répéter une instruction un nombre défini de fois.
- Nous nous sommes initié à la programmation textuelle avec le langage Python dans Py-Rates (Niveau 1). Nous avons utilisé l’équivalent Python du bloc répéter : la boucle for.
Voici la correction du niveau 1. de Py-Rates :
-
Le nombre
16
indique que l’instructionavancer()
contenue dans la bouclefor
sera exécutée 16 fois. Cela permet d’économiser 14 lignes de code ! -
L’instruction
avancer()
est décallée vers la droite d’une indentation. Cela signifie que cette instruction est contenue dans la bouclefor
. Cette instruction sera donc répétée 16 fois. -
L’instruction
ouvrir()
permettant d’ouvrir le coffre ne doit être exécutée qu’une seule fois à la fin du trajet lorsque le personnage se trouve devant le coffre. On a donc pris soin de ne pas mettre d’indentation avant l’instructionouvrir()
afin que cette instruction soit exclue de la boucle.
Astuces.
- Cliquez sur les plus pour afficher les explications.
- Cliquez sur le coin haut droit du cadre de code pour copier le programme.
Séance 2. Boucle for (suite), affectation de variable
Pendant cette séance nous avons continué la programmation textuelle dans Py-Rates.
- Nous avons retravaillé la boucle for (Niveau 2.).
- Nous avons découvert la notion de variable (Niveau 3.). Créer une variable permet de conserver en mémoire une valeur (par exemple un nombre) au cours de l’exécution d’un programme. Cette valeur peut ensuite être utilisée dans les instructions suivantes du programme. L’affectation de variable est l’instruction qui permet de créer une variable en lui attribuant un nom et une valeur initiale.
Voici la correction des niveaux 2. et 3. de Py-Rates :
Niveau 2. Boucle for (suite) | |
---|---|
-
Le nombre
6
indique que les instructionssauter()
etavancer()
contenues dans la bouclefor
seront exécutées 6 fois. Cela permet d’économiser 9 lignes de code ! -
Les instructions
sauter()
etavancer()
sont décallées vers la droite d’une indentation. Cela signifie que ces deux instructions sont contenues dans la bouclefor
. Ces deux instructions seront donc répétées 6 fois. Ainsi, le personnage peut atteindre la clé ! -
Les instructions
avancer()
,gauche()
,avancer()
,avancer()
permettent de passer au niveau inférieur. Cette série d’instructions ne doit être exécutée qu’une seule fois. On a donc pris soin de ne pas mettre d’indentation avant chacune de ces quatre instructions afin que ces instructions soient exclues de la boucle précédente. -
Le nombre
9
indique que les instructionscoup()
etavancer()
contenues dans la bouclefor
seront exécutées 9 fois. Cela permet d’économiser 15 lignes de code ! -
Les instructions
coup()
etavancer()
sont décallées vers la droite d’une indentation. Cela signifie que ces deux instructions sont contenues dans la bouclefor
. Ces deux instructions seront donc répétées 9 fois. Ainsi, le personnage peut traverser le tunnel en cassant au fur et à mesure les pots en terre cuite ! -
Les instructions
avancer()
etouvrir()
permettant d’atteindre puis d’ouvrir le coffre ne doivent être exécutée qu’une seule fois à la fin du trajet lorsque le personnage se trouve proche du coffre. On a donc pris soin de ne pas mettre d’indentation avant les instructionsavancer()
etouvrir()
afin que ces instructions soient exclues de la boucle précédente.
Niveau 3. Découverte de la notion de variable | |
---|---|
-
L’instruction
sauter_hauteur(4)
permet au personnage de sauter d’une hauteur de quatre unités. -
Cela permet d’économiser 14 lignes de code !Le nombre
4
indique que la suite d’instructions suivantes sera répétée 4 fois : -
Cette instruction est une affectation de variable. Ici, on crée une variable dont le nom est
nbre_caisses
. Cette variable prend comme valeur initiale le nombre lu sur le message de la bouteille avec l’instructionlire_nombre()
. Voici un exemple d’exécution qui peut se produire (il faut lire cette ligne de droite à gauche) :- Tout d’abord l’expression
lire_nombre()
est évaluée : le nombre est lu sur le message de la bouteille (par exemple, ce nombre peut être3
). Ainsi l’instruction devient dans cet exemplenbre_caisses = 3
. - Ensuite, l’affectation de variable a lieu : le nom
nbre_caisses
est stocké en mémoire et est associé à la valeur3
.
- Tout d’abord l’expression
-
Dans cette instruction, on utilise la valeur stockée précédemment dans la variable
nbre_caisses
. Par exemple cette valeur peut être le nombre3
. Ainsi, l’instruction devientsauter_hauteur(3)
et le personnage saute d’une hauteur de trois caisses.
Séance 3. Types et valeurs de base en Python
Dans cette séance, nous avons :
- découvert l’utilisation de la console Python avec le logiciel Thonny ;
- découvert les 4 types Python de base permettant de représenter les données élémentaires :
- Le type
int
(de l’anglais integer, “entier” en français) permet de représenter les nombres entiers positifs et négatifs (Exemples :3
,-5
) ; - Le type
float
(de l’anglais floating point number, “nombre à virgule flottante” en français ou plus simplement “flottant”) permet de représenter des nombres décimaux (Exemples :3.5
,-0.5
,4.0
). Attention ! Le séparateur décimal en Python est le point (et non la virgule) ! - Le type
str
(de l’anglais string, “chaîne de caractère” en français ou plus simplement “chaîne”.) permet de représenter du texte c’est-à-dire un simple caractère (lettre, espace etc.), un mot, une phrase voir une texte (Exemples :'a'
,'chat'
,"Boujour !"
). Remarque. Une chaîne de caractère est bordée par des guillemets simples ou doubles. - Le type
bool
(de l’anglais boolean, “booléen” en français) permet de représenter une valeur booléenne c’est-à-direTrue
(vrai) ouFalse
(faux).
- Le type
Séance 4. Affectation de variable et affichage, utilisation d’un IDE
Dans cette séance, avec l’aide de Thonny, nous avons :
- approfondi la notion d’affectation de variable ;
- écrit, enregistré et exécuté des programmes à l’aide de l’IDE Thonny.
Voici les deux programmes travaillés pendant cette séance :
Activité 2. Agriculteur (programme à recopier) | |
---|---|
Activité 3. Baguettes (programme à compléter) | |
---|---|
Séance 5. Branchements conditionnels
Dans cette séance :
-
Nous avons revisé la programmation par bloc avec Angry Birds dans Studio Code (Niveaux 11 à 20). Nous avons notamment revu les blocs jusqu’à, si et si sinon.
- Le bloc jusqu’à permet de répéter des instructions un nombre NON défini de fois. La répétition des instructions s’arrête lorsque la condition ciblée est réalisée (par exemple atteindre un personnage).
- Le bloc si permet d’exécuter des instructions si une condition est vraie (par exemple tourner à gauche si un chemin est détecté à gauche).
- Le bloc si sinon permet d’exécuter des instructions si une condition est vraie et d’autres instructions sinon (si la condition est fausse) (par exemple avancer si un chemin est détecté devant, sinon tourner à gauche).
-
Nous avons découvert les équivalents Python des blocs précédents. On utilise pour cela les mots-clés Python suivant :
if
(si)else
(sinon)elif
(abbréviation de l’anglais else if qui signifie “sinon si”).
Voici la correction des niveaux 4. et 5. de Py-Rates :
Niveau 4. Conditionnelle à deux branches | |
---|---|
-
Le nombre
5
indique que les instructions décalées vers la droite (lignes 2 à 8) c’est-à-dire les instructions contenues dans la bouclefor
seront exécutées 5 fois. Cela permet d’économiser 27 lignes de code ! -
Cette instruction est une affectation de variable. Ici, on crée une variable dont le nom est
direction
. Cette variable prend comme valeur initiale la chaîne de caractère lue sur le message de la bouteille rencontrée avec l’instructionlire_chaine()
. Voici un exemple d’exécution qui peut se produire (il faut lire cette ligne de droite à gauche) :- Tout d’abord l’expression
lire_chaine()
est évaluée : la chaîne est lue sur le message de la bouteille (par exemple, cette chaîne peut être"gau"
). Ainsi l’instruction devient dans cet exempledirection = "gau"
. - Ensuite, l’affectation de variable a lieu : le nom
direction
est stocké en mémoire et est associé à la valeur"gau"
.
- Tout d’abord l’expression
-
1er cas. Si la variable
direction
est égale à"gau"
(condition), on oriente le personnage vers la gauche avec l’instructiongauche()
. Remarque. Attention, le test d’égalitédirection == "gau"
utilise l’opérateur double égal ! -
2nd cas. Sinon, on oriente le personnage vers la droite. Remarquez que le mot clé
else
n’est pas suivi d’une condition. -
Après avoir choisi la direction vers laquelle orienter le personnage, on doit dans les deux cas avancer. Il faut donc penser à décaler vers la gauche l’instruction
avancer()
. Si on conserve l’alignement avec l’instruction précédente, le personnage n’avancera que dans le second cas c’est-à-dire lorsque la direction choisie est la droite. -
Les instructions
avancer()
etouvrir()
ne doivent être exécutées qu’une seule fois en fin de programme. On a donc pris soin de ne pas mettre d’indentation avant chacune de ces deux instructions afin que ces instructions soient exclues de la boucle for précédente.
Niveau 5. Conditionnelle à trois branches | |
---|---|
-
Le nombre
5
indique que les instructions décalées vers la droite (lignes 4 à 12) c’est-à-dire les instructions contenues dans la bouclefor
seront exécutées 5 fois. Cela permet d’économiser 35 lignes de code ! -
Cette instruction est une affectation de variable. Ici, on crée une variable dont le nom est
hauteur
. Cette variable prend comme valeur initiale la hauteur que le personnage doit sauter avec l’instructionmesurer_hauteur()
. Voici un exemple d’exécution qui peut se produire (il faut lire cette ligne de droite à gauche) :- Tout d’abord l’expression
mesurer_hauteur()
est évaluée à0
,1
ou2
selon la situation. Dans cet exemple, supposons que la valeur obtenue est1
. Ainsi l’instruction devient dans cet exemplehauteur = 1
. - Ensuite, l’affectation de variable a lieu : le nom
hauteur
est stocké en mémoire et est associé à la valeur1
.
- Tout d’abord l’expression
-
1er cas. Si la variable
hauteur
est égale à2
(condition), on saute d’une hauteur de 2 avec l’instructionsauter_haut()
. Remarque. Attention, le test d’égalitéhauteur == 2
utilise l’opérateur double égal ! -
2nd cas. Sinon si la variable
hauteur
est égale à1
, on saute d’une hauteur de 1 avec l’instructionsauter()
. Remarquez que le mot cléelif
est suivi d’une condition ! -
3ème cas. Sinon (si
hauteur
vaut0
), on avance simplement ave l’instructionavancer()
. -
Après avoir passé l’obstacle, on doit dans les trois cas avancer deux fois. Il faut donc penser à décaler vers la gauche les instructions
avancer()
. Si on conserve l’alignement avec l’instruction précédente, le personnage n’avancera que dans le 3ième cas c’est-à-dire lorsquehauteur
vaut0
. -
L’instruction
ouvrir()
ne doit être exécutées qu’une seule fois en fin de programme. On a donc pris soin de ne pas mettre d’indentation avant cette dernière instruction afin qu’elle soit exclue de la boucle for précédente.
Séance 6. Boucle for
avec variable compteur
Dans cette séance nous avons approfondi la boucle for
en utilisant une
variable compteur :
-
qui commence à zéro. Exemple :
-
qui commence à une autre valeur. Exemple :
Voici la correction des niveaux 6 et 7 de Py-Rates.
Niveau 6. Variable compteur partant de zéro | |
---|---|
La variable compteur
hauteur
va varier de0
à5
c’est-à-dire quehauteur
prendra comme valeurs successives :0
,1
,2
,3
,4
et5
. Remarque. Ainsi, il y aura six répétitions. Donc puisque ‘on part de zéro, le5
est ommis.
Niveau 7. Variable compteur ne partant pas de zéro | |
---|---|
La variable compteur
distance
va varier de2
à8
c’est-à-dire quedistance
prendra comme valeurs successives s:2
,3
,4
,5
,6
,7
et8
.