CHAPITRE 1 : NOTIONS D'ALGORITHMIQUEblog2maths.l.b.f.unblog.fr/files/2011/10/chapitre1_livre... ·...

27
CHAPITRE 1 : NOTIONS D'ALGORITHMIQUE OBJECTIFS ET MISE EN OEUVRE Le présent chapitre se compose de deux fiches élèves et autant de fiches professeur, contenant les corrigés des exercices proposés, ainsi que des commentaires pédagogiques liés aux séances. Les objectifs au cours de ces séances formelles, mais néanmoins instructives, pour ne pas dire indispensables pour la suite sont : Définir ce qu'est un algorithme et la démarche algorithmique à travers quelques exemples géométriques et calculatoires. Introduire les notions de variables, de boucle et d'instruction conditionnelle. Savoir interpréter quelques algorithmes simples. Créer des algorithmes en langage naturel, prêts à être interprétés en langage machine. Une fiche de synthèse clôt ce chapitre. Les séquences sont supposées durer entre deux et trois heures chacune. Dans une progression annuelle, on peut commencer par la fiche n°1 suivie de TP informatiques travaillant les notions de variables informatiques et la notion de boucle ; la fiche n°2 servira de support de cours à la notion d'instructions conditionnelles, rapidement suivie d'une séance de mise en œuvre via l'ordinateur.

Transcript of CHAPITRE 1 : NOTIONS D'ALGORITHMIQUEblog2maths.l.b.f.unblog.fr/files/2011/10/chapitre1_livre... ·...

CHAPITRE 1 : NOTIONS D'ALGORITHMIQUE

OBJECTIFS ET MISE EN OEUVRE

Le présent chapitre se compose de deux fiches élèves et autant de fiches professeur, contenant les corrigés des exercices proposés, ainsi que des commentaires pédagogiques liés aux séances. Les objectifs au cours de ces séances formelles, mais néanmoins instructives, pour ne pas dire indispensables pour la suite sont :– Définir ce qu'est un algorithme et la démarche algorithmique à travers quelques exemples géométriques et calculatoires.– Introduire les notions de variables, de boucle et d'instruction conditionnelle.– Savoir interpréter quelques algorithmes simples.– Créer des algorithmes en langage naturel, prêts à être interprétés en langage machine.

Une fiche de synthèse clôt ce chapitre.

Les séquences sont supposées durer entre deux et trois heures chacune.

Dans une progression annuelle, on peut commencer par la fiche n°1 suivie de TP informatiques travaillant les notions de variables informatiques et la notion de boucle ; la fiche n°2 servira de support de cours à la notion d'instructions conditionnelles, rapidement suivie d'une séance de mise en œuvre via l'ordinateur.

2 Chapitre 2

FICHE ÉLÈVE N°1

1. Introduction

Avant de définir précisément ce qu'est l'algorithmique et quels en sont les buts, intéressons-nous de suite à un premier exemple graphique : la construction d'un objet fractal appelé flocon de Von Koch.

On donne ici les deux premières étapes. À vous d'en déterminer la troisième ainsi que le processus général qui permet de passer de l'étape n à l'étape n+1.

Flocon à l'étape 0 Flocon à l'étape 1 Flocon à l'étape 2

Récapitulons ce processus ; il comprend deux instructions à effectuer qui sont :

Définitions : On peut définir un algorithme comme une suite d'instructions précises, à appliquer dans un ordre précis, pour arriver en un nombre fini d'étapes à un certain résultat. L'algorithmique est la science des algorithmes (création, amélioration...)

Chapitre 2 3

2. Premiers exercices

Dans les deux exercices qui suivent, vous pouvez utiliser les instructions suivantes :

1. Avancer (d'une longueur donnée)2. Tourner à gauche ou à droite (d'un angle donné en degré)

On suppose que le « crayon » se déplace par défaut horizontalement et vers la droite au départ.

Exercice 1 : Écrire un programme permettant de construire un carré de côté 50 tout en revenant à la position de départ.

Exercice 2 : Écrire un programme permettant de construire un triangle équilatéral de côté 100 tout en revenant à la position de départ.

RemarqueDans l'exercice 1 comme dans le suivant, un même bloc d'instructions a été répété plusieurs fois. Repérer lequel dans chacun des deux cas.

Cette répétition des mêmes instructions un certain nombre de fois peut être « résumée » en introduisant une notion très importante en programmation, et très économique au niveau du nombre de lignes à écrire.

Les instructions répétitives : notion de boucle

Il existe essentiellement deux méthodes pour écrire une boucle, c'est-à-dire un procédé qui permet la répétition un certain nombre de fois d'un même processus (addition, multiplication, etc.). Afin de les mettre en pratique, nous allons résoudre l'exercice 1 de cette manière.

MÉTHODE 1

Analysons le programme en langage naturel suivant :

i ← 0Tant que i<4 (ou i<=3) faire avancer de 50 tourner à gauche de 90° i ← i + 1

Fin Tant que

J'affecte à i la valeur 0Tant que la condition annoncée est vraie, on effectue les deux instructions qui suivent

On réaffecte à i sa valeur précédente augmentée de 1

Quel est le résultat obtenu ?

4 Chapitre 2

On peut alors résumer la structure de boucle décrite ici de la manière suivante :

Remarques Si la condition n'est pas vérifiée au début, alors le bloc d'instructions ne sera pas exécuté du tout.ATTENTION ! Pour que l'algorithme soit correct, il est nécessaire que la condition cesse d'être vérifiée au bout d'un nombre fini de répétitions. Sinon, le programme « boucle indéfiniment ».

Exercice 3 : Que fait le programme suivant ?

S ← 80Tant que S>20 faire

S ← S + 10Fin Tant que

MÉTHODE 2

Une autre manière courante d'écrire une boucle est :

Pour i variant de 0 à 3 (ou de 1 à 4) faire avancer de 50 tourner à gauche de 90°Fin Pour

La variable i évolue comme indiqué, par défaut de 1 en 1.Les deux instructions suivantes sont alors effectuées

Le résultat obtenu est exactement le même : le dessin d'un carré de côté 50.On peut alors résumer la structure de boucle décrite ici de la manière suivante :

Tant que condition vérifiée faire

Bloc d'instructions

Fin Tant que

Pour i variant de 0 à N (ou de 1 à N) faire

Bloc d'instructions

Fin Pour

Chapitre 2 5

Exercice 4 : Écrire deux programmes utilisant chaque type de boucle pour résoudre l'exercice 2.

Problème type : on veut calculer la somme S=123…99100

Analyse : Bien évidemment, on ne va pas saisir à la machine cette longue opération ! Il nous faut donc trouver un moyen pour que cette dernière l'exécute, mais en écrivant le moins de lignes possible. On commence par remarquer que l'opération qui est sans cesse utilisée est l'addition. D'où l'idée d'utiliser une boucle : on répète plusieurs fois le même procédé : ici additionner. Additionner oui, mais quoi ? 1 d'abord, puis 2, puis 3, … , jusqu'à 100. Autrement dit on additionne une suite de nombres qui « varient », dans le cas présent de 1 en 1. L'idée essentielle est de calculer S petit à petit, comme on le ferait à la main en ajoutant peu à peu tous les termes contenus dans l'addition. Comme S va évoluer et les termes qui la composent aussi, on a l'idée d'introduire deux variables : S elle-même et un « compteur » i, qui devra prendre successivement les valeurs 1, 2, 3, …, 100.

Nous allons résoudre ce problème en créant un algorithme efficace, utilisant (mais ce n'est pas une obligation), le premier type de boucle.

Mise en œuvre :

Instructions Signification

S ← 0i ← 1Tant que i ≤ 100 faire S ← S + i i ← i + 1Fin Tant que

Afficher S

On affecte à S la valeur 0 On affecte à i la valeur 1 La condition est : i varie jusqu'à 100On réaffecte à S sa valeur précédente plus la valeur actuelle de i On réaffecte à i sa valeur augmentée de 1Une fois sorti de la boucle, on affiche S

Vous allez à présent « faire tourner l'algorithme à la main », c'est-à-dire regarder, étape par étape l'évolution des variables i et S, et enfin le résultat final. Pour cela, compléter le tableau suivant. Vous ne donnerez pas le résultat du calcul de S à chaque étape, mais seulement l'écriture de S sous la forme d'une somme.

6 Chapitre 2

Après l'itération i S

0 1 0

1

2

3

...

99

100

Quelle est la dernière valeur prise par la variable S ? Quel est le résultat affiché par le programme ?

Exercice 5 : Écrire un programme utilisant une boucle Tant que calculant et affichant le résultat de :

1. S = 369…2012. P = 2×4×6×8×…×40

3. S = 1 12

13

... 110

Exercice 6 : Construire la figure suivante en utilisant l'instruction Tant que (longueur d'un côté du quadrillage 50).On partira du point A.

Chapitre 2 7

3. Exercices supplémentaires

Ces exercices sont destinés à vous entraîner à utiliser la notion de boucle. Ils sont classés par ordre progressif de difficulté. Reportez-vous à ceux déjà faits lors de cette séance. Travaillez en profondeur votre compréhension du cours. Il suffit de quelques modifications pour trouver la solution.

Exercice 7 : Vous pouvez utiliser les instructions suivantes :Avancer (d'une longueur donnée)Tourner à gauche ou à droite (d'un angle donné en degré)

1. Construire la figure suivante en utilisant une boucle (longueur du côté du quadrillage égale à 30). On partira du point central.

2. En utilisant toujours une boucle, construire la figure de la page suivante (longueur du côté du quadrillage égale à 30). Le repère n'a aucune importance.

8 Chapitre 2

Exercice 8 : En utilisant une boucle Tant que, écrivez un programme permettant de calculer puis d'afficher le résultat de la somme suivante :

T = 1 12 1

2×3 1

2×3×4… 1

2×3×4×…×10Indication : bien analyser de combien de variables vous avez besoin.

Exercice 9 : En utilisant une boucle Tant que, soit une fois soit deux fois dans le même programme, obtenir le dessin suivant :

Carré de côté 10 et intervalle entre les carrés 10.

Vous disposez en plus de deux instructions :lever le crayon (permet d'avancer sans que ceci dessine quoi que ce soit)baisser le crayon (permet de redessiner à nouveau)

Chapitre 2 9

FICHE PROFESSEUR N°1

1. Construction du flocon

On donne ici les deux premières étapes. A vous d'en déterminer la troisième ainsi que le processus général qui permet de passer de l'étape n à l'étape

n1 .

Flocon à l'étape 0 Flocon à l'étape 1 Flocon à l'étape 2

Récapitulons ce processus ; il comprend deux instructions à effectuer qui sont :

• On partage chacun des segments en trois segments de longueurs égales.

• On construit extérieurement un triangle équilatéral de base le segment du milieu.

2. Corrigé des exercices

Corrigé de l'exercice 1 :

Avec les instructions dont on dispose, on peut construire un carré de côté 50 de la manière suivante : Avancer de 50Tourner à gauche de 90°Avancer de 50Tourner à gauche de 90°Avancer de 50Tourner à gauche de 90°Avancer de 50Tourner à gauche de 90°

10 Chapitre 2

Remarque : on aurait tout aussi bien pu écrire : Tourner à droite de 90° à chaque fois.

Le bloc d'instructions qui se répète est :

Commentaire pédagogique : Beaucoup d'élèves disent : pourquoi ne pas multiplier ça par 4 ? L'idée de boucle est déjà sous-jacente.

Corrigé de l'exercice 2 :

Avancer de 100Tourner à gauche de 120°Avancer de 100Tourner à gauche de 120°Avancer de 100Tourner à gauche de 120°Le bloc d'instructions qui se répète est :

Commentaire pédagogique : Le « piège » est de penser immédiatement : Tourner de 60°. Le professeur démontre rapidement par un petit dessin au tableau que c'est erroné et laisse trouver aux élèves la bonne mesure d'angle.

Corrigé de l'exercice 3 :

La variable S est initialisée à 80. Par conséquent la condition S>20 est vérifiée. Or le bloc d'instructions de la boucle est composée d'une seule ligne : réaffecter à S sa valeur augmentée de 10. Il s'ensuit que la variable S va prendre des valeurs de plus en plus grandes et la condition de la boucle sera toujours vérifiée. Le programme boucle indéfiniment !

Commentaire pédagogique : Cet exercice permet de mettre en garde les élèves sur la condition choisie. On veut arriver à un certain résultat en un nombre fini d'étapes.

Avancer de 100Tourner à gauche de 120°

Avancer de 50Tourner à gauche de 90°

Chapitre 2 11

Corrigé de l'exercice 4 :

Avec une boucle Tant que Avec une boucle Pouri ← 0Tant que i<3 faire avancer de 100 tourner à gauche de 120° i ← i + 1Fin Tant que

Pour i variant de 0 à 2 (ou de 1 à 3) faire avancer de 100 tourner à gauche de 120°Fin Pour

Commentaire pédagogique : La boucle Tant que, universelle quel que soit le langage de programmation choisie me semble préférable à celle de Pour, dont la syntaxe est très variable. Par ailleurs, on y voit mieux l'évolution du « compteur » i.

Analyse du problème résolu : Ceci permet de compléter pas à pas le tableau donné aux élèves.

Situation initiale

Comme i est égal à 1 et que 1100 , la condition de la boucle est bien vérifiée, donc cette dernière exécute la suite d'instructions précédente :

• S est remplacé par sa valeur précédente : 0 à laquelle on rajoute la valeur actuelle de i : 1. Ainsi, S = 0 + 1 soit S = 1.

• i est remplacé par sa valeur actuelle : 1 à laquelle on rajoute 1. Ainsi i = 1 + 1 soit i = 2.

Situation après une itération

Comme i est égal à 2 et que 2100 , la condition de la boucle est bien vérifiée, donc cette dernière exécute la suite d'instructions précédente :

• S est remplacé par sa valeur précédente : 1 à laquelle on rajoute la valeur actuelle de i : 2. Ainsi, S = 1 + 2

• i est remplacé par sa valeur actuelle : 2 à laquelle on rajoute 1. Ainsi i = 2 + 1 soit i = 3.

i S1 0

i S2 1

12 Chapitre 2

Situation après deux itérations

Et ainsi de suite... Tant que la condition de la boucle est valide, le bloc d'instruction est exécuté.

Situation après 99 itérations

Comme i est égal à 100 et que 100100 , la condition de la boucle est bien vérifiée, donc cette dernière exécute la suite d'instructions précédente :

• S est remplacé par sa valeur précédente : 1+2+...+99 à laquelle on rajoute la valeur actuelle de i : 100. Ainsi, S = 1 + 2 + … + 100

• i est remplacé par sa valeur actuelle : 100 à laquelle on rajoute 1. Ainsi i = 101

Situation après 100 itérations

Cette fois-ci, i est égal à 101, donc la condition de la boucle n'est plus valide. La boucle s'arrête. Le programme effectue alors la dernière instruction (qui n'était pas dans la boucle) : afficher la valeur de S, c'est-à-dire le résultat de

12…100 .

On remarque, puisque S évolue en premier dans le bloc d'instructions, qu'il y aura toujours 1 d'écart entre i et la dernière valeur apparaissant dans la somme constituant S. Ceci permet de compléter le tableau après 99 itérations.

i S3 1+2

i S100 1+2+...+99

i S101 1+2+...+100

Chapitre 2 13

Après l'itération i S0 1 0

1 2 1

2 3 1 + 2

3 4 1 + 2 + 3

...

99 100 1 + 2 + 3 + … + 99

100 101 1 + 2 + … + 99 + 100

Corrigé de l'exercice 5 :

Question 1 : Il s'agit de sommer tous les multiples de 3 compris entre 3 et 201. L'idée est la même que dans le problème résolu : utiliser une boucle (car on répète l'opération « addition ») et utiliser deux variables : i, variable qui va énumérer touts les termes à additionner et S (la somme recherchée qui va évoluer à chaque itération de i). Un algorithme possible est :

Question 2 : Cette fois-ci, on multiplie tous les entiers pairs de 2 à 40.

On initialise le produit P à 1 (préciser pourquoi pas à 0)On initialise i à 2On remplace P par sa valeur précédente multipliée par la valeur actuelle de ii est incrémenté de 2 à chaque itération

S ← 0i ← 3Tant que i ≤ 201 faire

S ← S + ii ← i + 3

Fin Tant que

Afficher S

P ← 1i ← 2Tant que i ≤ 40 faire

P ← P*i i ← i + 2

Fin Tant que

Afficher P

14 Chapitre 2

Question 3 : Remarquons que l'on peut réécrire la somme cherchée sous la

forme S = 11 1

21

31

4… 1

10 .

L'idée est la même que dans le problème résolu : utiliser une boucle (car on répète l'opération « addition »). Cette fois encore, on aura besoin de deux variables : i qui prendra successivement les valeurs des dénominateurs successifs 1, 2, 3, … jusqu'à 10, et S qui évoluera à chaque itération de i.

Corrigé de l'exercice 6 :

Il s'agit de tracer un hexagone régulier.

Il y a 6 côtés...de longueur 150

3. Corrigé des exercices supplémentaires :

Corrigé de l'exercice 7 :

Question 1 : Dessin d'une spirale dont la mesure des segments varie. L'idée est d'utiliser une boucle car on répète plusieurs fois le même processus : avancer, puis tourner à gauche de 90°. La différence par rapport à la question précédente est qu'à chaque itération, on avance de 30 unités supplémentaires. D'où l'idée d'utiliser deux variables : i qui va compter le nombre de segments de la spirale et l la longueur du premier segment, qui va s'accroître de 30 à chaque itération.

S ← 0i ← 1Tant que i ≤ 10 faire

S ← S + 1/ii ← i + 1

Fin Tant que

Afficher S

i← 0Tant que i<6 faire

avancer de150tourner à gauche de 60°i ← i + 1

Fin Tant que

Chapitre 2 15

Il y a neuf segments.On avance de l

l est incrémenté de 30

Commentaire pédagogique : on peut très bien n'utiliser qu'une seule variable, ce qu'un certain nombre d'élèves font.

Question 2 : Dessin d'une spirale dont la mesure des segments varie mais pas consécutivement. L'idée est d'utiliser une boucle car on répète plusieurs fois le même processus : avancer, puis tourner à gauche de 90°. La différence par rapport à la question précédente est que deux segments consécutifs ont la même longueur. D'où l'idée d'utiliser deux variables : i qui va compter le nombre de segments de la spirale et l la longueur du premier segment, qui va s'accroître de 30 à chaque itération. Le bloc d'instructions « avancer, tourner » sera répété deux fois par rapport à la question 1.

Corrigé de l'exercice 8 :

Remarquons que l'on peut réécrire la somme cherchée sous la forme

T = 11 1

1×2 1

1×2×3 1

1×2×3×4… 1

1×2×3×4×…×10 .

Cette fois-ci, on aura besoin de trois variables : i qui prendra successivement les valeurs 1, 2, 3, … jusqu'à 10, P qui prendra successivement les valeurs 1,

1×2 , 1×2×3 , …, jusqu'à 1×2×…×10 et T qui évoluera en même temps que les deux autres variables.

i ← 0l ← 30Tant que i<9 faire

avancer de ltourner à gauche de 90°l ← l + 30i ← i + 1

Fin Tant que

i ← 0l ← 30Tant que i<6 faire

avancer de ltourner à gauche de 90°avancer de ltourner à gauche de 90°l ← l + 30i ← i + 1

Fin Tant que

16 Chapitre 2

Le script suivant répond alors au problème posé.

Tableau des 2 premières itérations en partant des conditions initiales.

Corrigé de l'exercice 9 :

Cet exercice va nécessiter deux boucles, donc la nécessité de créer deux compteurs i et j par exemple ; l'un servira pour dessiner un carré, l'autre servira pour le nombre de carrés à dessiner. Attention de ne pas oublier les espaces entre les carrés ! Cette fois-ci, les boucles seront imbriquées. Il est important d'insister sur ce fait et de l'expliquer en détail.

i ← 1

P ← 1

T ← 0

Tant que i ≤ 10 faire

P ← P*i

T ← T + 1/P

i ← i+1

Fin Tant que

Afficher T

i P T

1 1 0

2 1 1

3 2 1 + 1 / 2

valeurs initialesAprès

itération 1Après

itération 2

Chapitre 2 17

j est le compteur qui sert à dessiner les 10 carrés

i est le compteur qui sert à dessiner les 4 côtés d'un carréBien analyser pourquoi il est placé ici !

on avance de 10+10 = 20 comme demandé dans l'énoncé

Remarque : Les blocs d'instructions sont indentés. On verra plus loin que cette écriture est essentielle lorsque l'on écrit un programme en langage Python.

Commentaire pédagogique : Il est intéressant de faire apparaître bien précisément les blocs d'instructions en précisant à quelle boucle ils sont rattachés.

j ← 0Tant que j<10 faire

i ← 0Tant que i<4 faire

avancer de 10tourner à gauche de 90°i ← i + 1

Fin Tant que lever le crayonavancer de 20baisser le crayonj ← j+1

Fin Tant que

18 Chapitre 2

FICHE ÉLÈVE N°2

1. Instructions conditionnelles

Nous avons vu à la séance précédente la notion de boucle, utilisée dans le cas où une même suite d'opérations est répétée un certain nombre de fois. Nous allons nous intéresser ici au cas des instructions conditionnelles. Cette notion permet à un algorithme d'effectuer certaines instructions seulement si une certaine condition est remplie. Ceci prend la forme suivante en pseudo-langage :

Dans le cas où la condition de départ n'est pas vérifiée, il est également possible d'indiquer à l'algorithme une alternative qu'il doit effectuer. On obtient alors la structure suivante :

Exercice 1 :Écrire dans la zone de texte adjacente le résultat affiché à l'écran par l'ordinateur pour chacun des programmes suivants :

Question 1N ← 4a ← 7Si N<a faire

écrire « Eh »Sinon

écrire « Oh »

Si (condition vérifiée) faire

Bloc d'instructions

Fin Si

Si (condition vérifiée) faire

Bloc d'instructions n°1

Sinon faire

Bloc d'instruction n°2

Fin Si

Chapitre 2 19

Question 2i ← 1Tant que i<5 faire

Si i est divisible par 2 faireécrire 3*i

Sinonécrire i

i ← i + 1Fin Si

Fin Tant que

Exercice 2 : Écrire un programme qui demande à l'utilisateur d'écrire son sexe à l'écran : M pour masculin ; F pour féminin. a)Si l'utilisateur saisit M, l'ordinateur affichera : Bonjour monsieur !b)Si l'utilisateur saisit F, l'ordinateur affichera : Bonjour mademoiselle !Le symbole de comparaison égalité se note =Vous avez le droit aux instructions suivantes : Si … Sinon ; écrire (un texte apparaissant à l'écran) ; lire (un texte sur l'écran de l'ordinateur)

Notons le cas où la condition de départ peut être constituée de plusieurs autres conditions qui doivent être vérifiées simultanément. Nous obtenons alors une suite d'instructions conditionnelles imbriquées. Il y a essentiellement deux structures pour décrire ceci.

Méthode n°1 Méthode n°2Si (condition 1 vérifiée) faire Si (condition 2 vérifiée) faire … Si (condition k vérifiée) faire

Bloc d'instructionsFin Si

Si (condition 1 vérifiée ET condition 2 vérifiée ET… ET condition k vérifiée) faire

Bloc d'instructions

Fin Si

Exercice 3 : Un automobiliste veut louer une grosse cylindrée dans une agence. Ceci n'est possible que s'il a 25 ans ou plus et au minimum 5 ans de permis. Écrire un programme qui demande à l'utilisateur son âge, puis le nombre d'années qu'il possède son permis et renvoie le résultat « Location acceptée » ou « Location refusée » selon les réponses saisies. Vous avez le droit aux instructions suivantes : Si … Sinon ; écrire (un texte apparaissant à l'écran) ; lire (une valeur sur l'écran de l'ordinateur)

20 Chapitre 2

Analyse : L'utilisateur doit vérifier deux conditions pour que sa location soit acceptée : « Avoir un âge au moins égal à 25 ans » ET « posséder le permis depuis au moins 5 ans ».

On dispose aussi de l'opérateur logique OU au sens mathématique du terme (ce n'est pas un OU exclusif).

Exercice 4 : Déterminer si une année (dont le millésime est introduit par l'utilisateur) est bissextile ou non. (Une année A est bissextile si A est divisible par 4. Elle ne l'est cependant pas si A est un multiple de 100, à moins que A ne soit multiple de 400). Vous disposez des mêmes instructions qu'à l'exercice précédent ainsi que de l'instruction : « est divisible par » et de son contraire.

Dans certains cas, il se peut que plusieurs alternatives soient possibles si la condition initiale n'est pas vérifiée. On obtient alors la structure suivante :

Remarque : L'écriture « Sinon si » signifie que les conditions 1, 2,..., N-1 ne sont jamais vérifiées simultanément deux à deux. On a une partition des cas possibles.

Exemple : le fait que la condition 3 soit vérifiée implique nécessairement que les conditions 1 et 2 ne l'aient pas été.

Si (condition 1 vérifiée) faire

Bloc d'instructions n°1

Sinon si (condition 2 vérifiée) faire

Bloc d'instruction n°2

…etc...

Sinon si (condition N-1 vérifiée) faire

Bloc d'instructions n° N-1

Sinon faire

Bloc d'instruction n° N

Fin Si

Chapitre 2 21

Exercice 5 : Convertir une note scolaire N quelconque (sur 20), entrée par l'utilisateur sous forme de points (par exemple 12,75), en une note sous forme de lettre standardisée suivant le code suivant :

Note AppréciationN >= 16 A16 > N >=12 B12 > N >= 10 C10 > N >= 8 DN < 8 E

Vous avez le droit aux instructions suivantes :Si … Sinon si … Sinonécrire (un texte apparaissant à l'écran)lire (une valeur sur l'écran de l'ordinateur)

22 Chapitre 2

FICHE PROFESSEUR N°2

1. Corrigé des exercices

Corrigé de l'exercice 1

Question 1 : Il va s'afficher Eh

Question 2 : Il va s'afficher la suite de nombres : 16312

Commentaire pédagogique : La dernière question de cet exercice fait travailler simultanément les notions de boucle et d'instruction conditionnelle, ce qui présente une difficulté. Certains élèves peuvent confondre l'instruction écrire 3*i avec réaffecter à i la valeur 3*i.

Corrigé de l'exercice 2

écrire "Quel est votre sexe ? M ou F ?"lire texteSi texte="M" faire

écrire "Bonjour Monsieur !"Sinon faire

écrire "Bonjour Mademoiselle !"Fin Si

Corrigé de l'exercice 3

écrire "Quel est votre âge ? "lire ageécrire "Depuis combien de temps avez-vous le permis ? "lire NSi (age>=25) ET (N>=5) faire

écrire "Location acceptée"Sinon faire

écrire "Location refusée"Fin Si

Chapitre 2 23

Corrigé de l'exercice 4

Analyse : Le texte ne semble pas si évident a priori. On peut néanmoins le modéliser à l'aide d'un diagramme de Venn ("patatoïde") qui va donner tout le squelette de l'algorithme. Remarquons que :Tout multiple de 400 est un multiple de 100 (Réciproque fausse)Tout multiple de 100 est un multiple de 4 (Réciproque fausse)

L'algorithme s'écrit alors :

écrire "Entrez une année "lire ASi (A est divisible par 4 ET A n'est pas divisible par 100) OU (A est divisible par 400) faire

écrire "Cette année est bissextile"Sinon faire

écrire "Cette année n'est pas bissextile"Fin Si

A divisible par 4

A divisible par 100

A divisible par 400

24 Chapitre 2

Corrigé de l'exercice 5

Analyse : Les différentes conditions sont liées à la valeur de la note N. On peut les résumer dans le programme en pseudo-langage suivant.

Algorithme CommentairesSi N>=16 faire

écrire "A"

Sinon si N>=12 faire

écrire "B"

Sinon si N>=10 faire

écrire "C"

Sinon si N>=8 faire

écrire "D"

Sinon faire

écrire "E"Fin Si

La première condition est N>=16

Pas besoin d'écrire 16>N>=12. En effet si la première condition n'est pas vérifiée, on a nécessairement N<16. La seconde condition ne porte plus que sur la comparaison de N à 12.

Pas besoin d'écrire Sinon si N<8. En effet, lorsque toutes les conditions précédentes ne sont pas vérifiées, il n'y a plus qu'une alternative.

Commentaire pédagogique : Ces exercices sont difficiles de premier abord. Il convient d'avoir travaillé auparavant en classe les notions de logique standard. Bien que ne figurant pas explicitement au programme, les tables de vérité sont un bon outil pour manipuler ET, OU. On peut les travailler à partir d'exemples mathématiques ou non...

Un exemple pour comprendre... Une table de vérité. A, B sont des propositions, C'est-à-dire des « phrases logiques » qui ne peuvent avoir que deux valeurs de vérité : VRAI ou FAUX. Un des principes fondamentaux est celui du « tiers-exclus », à savoir qu'une proposition ne peut pas être vraie et fausse à la fois, alors que toute proposition est vraie ou bien fausse. On peut résumer ceci dans un tableau illustrant les « connecteurs » logiques ET – OU.

Chapitre 2 25

A B A et B A ou BF F

F V

V F

V V

Ainsi, pour N entier, la proposition « N est pair » et « N est impair » sera toujours fausse, tandis que la proposition « N est pair » ou « N est impair » est toujours vraie : on parle de tautologie.

Ces opérateurs logiques ET ; OU peuvent être aisément combinés avec les instructions conditionnelles : SI...alors ; Tant que (condition) faire... pour créer des algorithmes plus complexes.

Exercice possible : Vous avez droit aux instructions suivantes :a) Les opérateurs logiques ET ; OUb) L'instruction conditionnelle SIc) L'instruction « être divisible par » (un entier)d) lire (un entier)e) écrire (une phrase)

Écrire un programme en pseudo-langage demandant à l'utilisateur d'entrer deux entiers. Si ces deux entiers sont divisibles par 3 et par 5, écrire N est divisible par 15, sinon écrire N n'est pas divisible par 15.

26 Chapitre 2

FICHE DE SYNTHÈSE

1. Les notions de base du cours

Définitions

i. Dans un programme, une variable correspond à un emplacement de la mémoire de la calculatrice ou de l'ordinateur. Elle est repérée par un nom et contient une valeur.

ii. La notion d'affectation (ou d'assignation) désigne l'opération par laquelle on établit un lien entre le nom de la variable et sa valeur (son contenu). On l'a noté ici avec le symbole ←

iii. L'entrée des données (ou lecture des données) est l'opération qui consiste à saisir des valeurs pour qu'elles soient utilisées par le programme. On la note « Saisir valeur » ou « lire valeur ». Remarque : une valeur peut être un nombre entier, un nombre réel, une chaîne de caractères...

iv. La sortie des résultats (ou écriture des résultats) permet d'afficher les valeurs des variables après traitement. On note cette instruction « Afficher valeur » ou « écrire valeur »

2. La notion de boucle

Elle est utilisée lorsqu'une même suite d'instructions doit être répétée un certain nombre de fois. On en rencontre essentiellement deux dans la pratique :

Initialisation des variablesTant que condition faire

Bloc d'instructions

Fin Tant que

Pour i variant de 0 à N (ou de 1 à N) faire

Bloc d'instructions

Fin Pour

3. Les instructions conditionnelles

Selon qu'une condition est vérifiée ou non, on effectuera un bloc d'instruction ou bien un autre. Par exemple, un nombre entier est pair s'il est divisible par 2 et impair dans le cas contraire.

Chapitre 2 27

Dans le cas où l'on dispose de plusieurs alternatives incompatibles les unes avec les autres, la structure précédente est légèrement plus complexe. On aura donc :

Exemple d'application : Simuler le tirage d'une boule dans une urne qui contient 4 boules blanches, 2 boules bleues, 2 boules vertes et 5 boules noires.

Si (condition vérifiée) faire

Bloc d'instructions n°1

Sinon faire

Bloc d'instruction n°2

Fin Si

Si (condition 1 vérifiée) faireBloc d'instructions n°1

Sinon si (condition 2 vérifiée) faireBlocs d'instructions n°2

…Sinon si (condition N-1 vérifiée) faire

Bloc d'instructions n°N-1Sinon faire

Blocs d'instructions n°NFin Si