Notions de base

publicité
Notions de base
1. Qu’est-ce qu’un algorithme ?
■ Définition ■
Un algorithme est une succession d’instructions à enchaîner dans un ordre bien précis,
permettant de résoudre un problème de façon systématique. Il est écrit dans un langage
compréhensible par tous.
Remarque : Un algorithme peut prendre en entrée une ou plusieurs valeurs, et donner en sortie une ou plusieurs valeurs,
en réponse au problème.
■ Construction d’un algorithme ■
Un problème posé est décomposé en une succession de problèmes plus simples, jusqu’à obtenir
une succession d’instructions élémentaires, par exemple de type suivant :
– affecter une valeur ; entrer une valeur ; afficher une valeur ;
– additionner, soustraire, multiplier, diviser deux valeurs ;
– comparer deux valeurs.
Pour relier les différentes instructions élémentaires, on peut utiliser :
– une condition : Si … alors, Si … alors … sinon.
– une boucle, c’est-à-dire une répétition d’un certain nombre d’actions : Pour … faire, Tant que … faire.
Remarque : La lisibilité d’un algorithme est très importante : lorsqu’on rédige un algorithme, il faut toujours avoir à l’idée
que toute personne ne l’ayant pas conçu doit être capable de comprendre comment il s’exécute, et à quel problème il répond.
2. Instructions élémentaires
■ Affectation ■
Il s’agit d’affecter une valeur à une variable, valeur qui peut être de plusieurs types : numérique
(entier ou réel), alphanumérique (texte), booléen (vrai ou faux).
Syntaxe : var ← val ; on affecte la valeur val à la variable var .
■ Exemple :
a ← 2 ; on affecte la valeur 2 à la variable a.
b ← a + 3 ; on affecte à la variable b le contenu de la variable a auquel on ajoute 3, c’est-à-dire 5.
■ Entrée d’une valeur ■
Au moment de l’exécution de l’algorithme, l’utilisateur affecte une valeur à une variable. Lors du
fonctionnement de l’algorithme, celui-ci s’arrête à cette instruction et ne se poursuit que lorsque
l’utilisateur a entré une valeur.
Syntaxe : Entrer ( var ) ; lorsque l’utilisateur a entré une valeur, celle-ci est stockée dans la
variable var .
Remarque : Lorsqu’on souhaite entrer plusieurs variables, on les sépare par des virgules.
■ Exemple : Entrer (a , b) . À l’exécution de l’algorithme, l’utilisateur saisira deux valeurs. La première sera stockée dans
la variable a, la deuxième dans la variable b.
■ Affichage d’une valeur ■
Il s’agit d’afficher la valeur d’une variable. Syntaxe : Afficher ( var ) .
Remarque : Lorsqu’on souhaite afficher plusieurs variables, on les sépare par des virgules.
Lorsqu’on souhaite afficher du texte, on le place entre des guillemets « … ».
■ Exemple : Afficher ( « La valeur de x est » , x ) .
10
Méthode
Rédaction d’un algorithme
Afin qu’un algorithme puisse être compréhensible pour tout lecteur qui le découvre, il doit être rédigé de
façon claire et selon quelques règles.
Un algorithme comporte deux parties : la déclaration des variables et le corps de l’algorithme.
■ Quelques règles pour rédiger la déclaration des variables ■
• La déclaration des variables est introduite par le terme « Variables ».
• Les variables utilisées dans l’algorithme sont accompagnées par leur type (entier (relatif), réel, texte ou booléen (vrai ou
faux). Le nom des variables est séparé de leur type par deux points.
• Si plusieurs variables sont de même type, on les déclare sur la même ligne en les séparant par une virgule.
• Chaque déclaration se termine par un point-virgule et un passage à la ligne.
Remarques :
1. Cette partie est facultative, mais rend l’algorithme plus compréhensible.
2. Lorsque l’algorithme a été exécuté, les valeurs des variables ne sont pas conservées pour les exécutions suivantes.
Conseils :
1. Cette partie s’écrit une fois l’algorithme mis en place pour être sûr de n’avoir oublié aucune variable.
2. On essayera le plus possible de choisir des noms « adaptés » pour les variables.
■ Quelques règles pour rédiger le corps de l’algorithme ■
Le corps de l’algorithme comprend la suite des instructions à exécuter. Celui-ci débute par « Début » et se termine par
« Fin ».
Chaque instruction se termine par un point-virgule et un passage à la ligne.
Pour plus de lisibilité, on utilise des retraits gauches en alignant les instructions de même niveau.
Conseils :
Une fois l’algorithme écrit, on le teste à la main en le faisant fonctionner avec quelques valeurs pour éventuellement le
corriger. On doit se poser les deux questions suivantes :
– Le résultat est-il bien celui que l’on attend ?
– L’algorithme s’arrête-t-il ? (on dit : l’algorithme se termine-t-il ?).
Si la réponse est positive à ces deux questions, on dit que l’algorithme est correct.
■ Applications ■
1. Calculer l’image d’un réel par la fonction f définie sur R
par : f ( x ) = x 2 + 5 .
2. Calculer la moyenne arithmétique des notes
de deux devoirs.
Voici un algorithme possible :
Voici un algorithme possible :
Algorithme CalculImage
Variables :
x , y : réels ;
Début
Afficher ( « Entrer la valeur de x » ) ;
Entrer ( x ) ;
y ← x2 + 5 ;
Afficher ( « L’image de x est » , y ) ;
Fin.
Algorithme Moyenne
Variables :
note1, note2, m : réels ;
Début
Entrer ( note1 , note2 ) ;
m ← ( note1 + note2 ) ⁄ 2 ;
Afficher ( « La moyenne est » , m ) ;
Fin.
Notions de base
3. Instructions conditionnelles
■ Condition Si … alors ■
• Syntaxe : Si proposition alors ActionsSi ; FinSi ;
– proposition est de type booléen (vrai ou faux) ;
– ActionsSi est une instruction élémentaire ou une succession d’instructions élémentaires.
• Si la proposition est vraie, l’algorithme effectue ActionsSi puis passe à la suite de l'algorithme.
Dans le cas contraire, il passe directement à la suite de l’algorithme.
■ Condition Si … alors … sinon ■
• Syntaxe : Si proposition alors ActionsSi ; sinon ActionsSinon ; FinSi ;
– proposition est de type booléen (vrai ou faux) ;
– ActionsSi et ActionsSinon sont des instructions ou des successions d’instructions élémentaires.
• Si la proposition est vraie, l’algorithme effectue ActionsSi. Dans le cas contraire, il effectue
ActionsSinon. Ensuite, il passe à la suite de l’algorithme.
■ Exemple : L’algorithme ci-contre renvoie le signe du nombre entré.
Quelques compléments
• On peut demander que deux ou plusieurs conditions soient réalisées simultanément en utilisant la syntaxe et .
Exemple : Si ( x > 0 ) et ( x < 3 ) alors
Afficher (« x appartient à ]0 ; 3[ ») ; FinSi ;
• On peut demander qu’une condition (au moins) parmi plusieurs soit
réalisée en utilisant la syntaxe ou .
Algorithme Signe
Variables : x : réels ;
Début
Entrer ( x ) ;
0 ) alors
Si ( x
Afficher ( x , « est positif ») ;
sinon Afficher ( x , « est négatif ») ;
FinSi ;
Fin.
• Les tests peuvent être imbriqués les uns dans les autres.
4. Boucles et itérations
■ Boucle Pour … faire ■
• Syntaxe : Pour i allant de début à fin faire
Actionsi ;
FinPour ;
– début et fin sont deux entiers.
– i est une variable entière.
– Actionsi est une instruction ou une succession d’instructions élémentaires, pouvant dépendre
de i (ou non).
• Déroulement de la boucle
i prend la valeur début. On effectue Actionsdébut .
i augmente de 1 (on dit « s’incrémente de 1 »), on effectue donc Actionsi .
Puis i augmente encore de 1, on effectue alors de nouveau Actionsi .
Et ainsi de suite jusqu’à ce que i prenne la valeur fin, où l’on effectue pour la dernière fois
Actionsi . On passe alors à la suite de l’algorithme.
Vocabulaire : i s’appelle le compteur, la suite d’instructions Actionsi s’appelle suite d’itérations.
12
Notions de base
Commentaires
– Si début > fin, aucune itération n’est réalisée.
– L’incrémentation du compteur se fait de façon automatique dans une boucle Pour … faire.
– Le nombre d’itérations est : fin – début + 1.
– L’utilisation de cette boucle présuppose que l’on connaisse le nombre d’itérations à faire.
Remarque
Une variante de la boucle Pour … faire consiste à décrémenter (c’est-à-dire à diminuer de 1) le compteur i. La syntaxe est
alors : Pour i descendant de début à fin faire … FinPour .
■ Exemple : Faire la somme des n premiers entiers non nuls.
L’algorithme suivant calcule la somme des premiers entiers non nuls :
Phase d’initialisation
L’algorithme calcule de proche en proche
cette somme et l’affecte à S
Voir l’exercice résolu 1 pour le fonctionnement pas à pas.
Algorithme SommeEntiers
Variables : n , i , S : entiers ;
Début
Entrer ( n ) ;
S←0 ;
Pour i allant de 1 à n faire
S←S+i ;
FinPour ;
Afficher (S)
Fin.
■ Boucle Tant que … faire ■
• Syntaxe : Tant que proposition faire
ActionsTantQue ;
FinTantQue ;
– proposition est de type booléen (vrai ou faux),
– ActionsTantQue est une instruction élémentaire ou une succession d’instructions élémentaires.
• Déroulement de la boucle
On teste la proposition. Si elle est vraie, on effectue ActionsTantQue. Puis on teste de nouveau
la proposition. Si elle est encore vraie, on effectue de nouveau ActionsTantQue. Et ainsi de
suite jusqu’à ce que la proposition soit fausse, auquel cas on passe à la suite de l’algorithme.
Vocabulaire : la suite d’instructions ActionsTantQue s’appelle suite d’itérations.
Commentaires
– Le nombre d’itérations est a priori inconnu.
– Il est indispensable qu’à un moment donné, l’une des instructions de ActionsTantQue rende proposition fausse, sinon l’algorithme ne s’arrête jamais. On dit
alors que l’algorithme effectue une boucle infinie.
■ Exemple : Faire la somme des n premiers entiers non nuls.
(2e construction possible)
L’algorithme suivant calcule la somme des premiers entiers non nuls :
L’instruction i ← i + 1 incrémente le compteur i.
L’oubli de cette instruction serait dramatique : i serait bloqué à
la valeur 1, et la proposition « i ⱕ n » serait toujours vraie :
l’algorithme tournerait indéfiniment !
Algorithme SommeEntiersBis
Variables : n , i , S : entiers ;
Début
Entrer ( n ) ;
S←0 ;
i←1 ;
TantQue i ⱕ n faire
S←S+i ;
i←i+1 ;
FinTantQue ;
Afficher (S)
Fin.
Commentaire
Une boucle « TantQue » dans laquelle on connaît le nombre d’itérations peut remplacer une boucle « Pour », comme dans
l’exemple ci-dessus : il suffit d’introduire un compteur. En revanche la réciproque est fausse ! (voir l’exercice résolu 2)
13
Téléchargement