LES COMPOSANTS ÉLÉMENTAIRES DES ALGORITHMES

publicité
Chapitre 1
LES COMPOSANTS ÉLÉMENTAIRES DES ALGORITHMES
1.1. La notion d’algorithme
L’algorithmique est une matière indispensable pour la formation en informatique. Elle sert à apprendre à communiquer
avec l’ordinateur dans le but de réaliser des programmes. Concevoir un algorithme performant pour la resolution d’un problème donné est une étape essentielle qui doit précéder la programmation. Une fois l’algorithme est mis en øeuvre, un étape
de vérification est réalisée. Cette étape sert à tester si le programme est correct, valide et robuste aux erreurs. Ensuite la
traduction de cet algorithme en programme est réalisée. Cette étape est appelée implémentation.
Notons bien qu’il existe plusieurs approche de programmation, nous citons :
L’approche fonctionnelle le programme est exprimé par des appels de fonctions mathématiques. Un exemple de cette
approche est le langage LISP.
L’approche procédurale la notion de fonctions mathématiques existe toujours, le programme est composé d’une suite
d’instructions. L’execution de ce programme implique un changement dans l’état de la mémoire de l’ordinateur. C’est
pour cela qu’on parlera d’un automate. Le C est un exemple de ce type de langage.
L’approche logique le programme est représenté ici en utilisant des formules logiques. Cette approche est adaptée à
la resolution d’une classe donnée de problèmes en liaison avec l’intelligence artificielle. Prolog est un langage de
programmation logique.
L’approche objet le programmes est vu comme un ensemble d’objets qui se communiquent entre eux et a appartiennent à des classes hiérarchisée. C++ et Java sont des langages objet.
Essayons maintenant de définir le mot algorithme, Nous citons ici quelque définition de l’algorithme :
Selon Courtin et Kowarski, 1989 Un algorithme est une suite d’actions que devra effectuer un automate pour arriver,en un temps fini, à un résultat déterminé (qui sera appelé postcondition) à partir d’une situation donnée (appelé
precondition.
Selon Aho et Ullman, 1993 Un algorithme est une spécification précise et non ambiguë d’une séquence d’étapes pouvant être exécutées d’une façon automatique.
Selon l’encyclopedia universalis, paris édition 1984 Un algorithme est la spécification d’un schéma de calcul, sous
forme d’un suite d’opérations élémentaires obéissant à un enchaînement déterminé.
Nous remarquons que ces définitions supposent plus une approche procedurale de programmation.
1.2. L’action écrire
Cette action signifie que l’automate effectue un affichage sur un écran.
PRECONDITIONS
POSTCONDITIONS Affichage de 1 2 puis de 4 5
écrire(’1’,’2’)
écrire(’4’,’5’)
Les paramètres sont toujours séparés par des virgules.
A la fin du déroulement de cette action on voit afficher sur l’écran :
1
1.4. L’ITÉRATION
CHAPITRE 1. LES COMPOSANTS ÉLÉMENTAIRES DES ALGORITHMES
12
45
1.3. Les entiers
1.3.1. Les opérations
Cinq opérations de base sont définies sur les entiers. Soit n et p deux entiers :
l’addition représentée par n + p
la soustraction représentée par n − p
La multiplication représentée par n ∗ p
La partie entière du quotient représentée par n div p
Le reste de la division représentée par n mod p
Par exemple nous pouvons écrire l’algorithme suivant :
PRECONDITIONS
POSTCONDITIONS tableaux des carrées de 1 à 3
écrire(’1’,1 ∗ 1)
écrire(’4’,2 ∗ 2)
écrire(’3’,3 ∗ 3)
1.3.2. Les variables entières
Une variable entière correspond à la déclaration d’un identificateur qui comprendra un entier lors du déclenchement de
l’automate. La déclaration est une étape nécessaire pour déclarer cette variable avant son utilisation dans les actions d’un
algorithme. Pour déclarer une variable nous utilisons le mot VAR. Les déclarations seront toujours placées avant les actions
d’un algorithme donné.
Ensuite on peut affecter une valeur à une variable en utilisant l’action affectation et ceci en utilisant le mot ←. Par
exemple, l’algorithme suivant affecte à z la valeur 8 :
VAR x,y,z : ENTIER
x←3
y←3
z ←x+y
1.4. l’itération
Si nous fixons comme objectif la réalisation d’un algorithme qui affiche les carrées des nombres de 1 à 10, nous remarquons que l’algorithme devient très long. De plus, nous remarquons la répétition de la même action plusieurs fois, en
changeant son contenu. Nous pouvons écrire ce même algorithme d’une façon plus condensée en utilisant la notion de l’invariant.
Par exemple l’algorithme qui affiche des nombres entiers de 1 à 10 utilise la notion d’itération.
Nous pouvons utiliser d’autre types d’opérations de comparaisons comme :≤, <, ≥, >, 6=, =.
Maria Malek - EISTI - CPI1
2
CHAPITRE 1. LES COMPOSANTS ÉLÉMENTAIRES DES ALGORITHMES
1.5. LA NOTION DE PROCÉDURE
TANTQUE CONDITIONS FAIRE
ACTIONS
FIN TANTQUE
VAR nb : ENTIER
nb ← 1
TANTQUE nb ≤ 10 FAIRE
ecrire (nb, nb ∗ nb)
nb ← nb + 1
FIN TANTQUE
1.5. La notion de procédure
La procedure est une suite d’actions, à laquelle on donne un nom pour qu’on puisse l’appeler ultérieurement.
1.5.1. Déclaration
On déclare une procédure en lui affectant un nom, et en donnant la liste des paramètres. Ensuite le corps de la procédure
est composée d’une partie déclarative contenant les variables locales, et une partie actions contenant la liste des instructions.
Par exemple, on peut ainsi écrire la procédure qui calcule les carrées des nombres de debut jusqu’à f in :
PROCEDURE NOM (PARMETRES)
VARIABLES LOCALES
ACTIONS
PROCEDURE CalculCarrés (debut,fin : ENTIER)
VAR nb : ENTIER
nb ← debut
TANTQUE nb ≤ f in FAIRE
ecrire (nb, nb ∗ nb)
nb ← nb + 1
FIN TANTQUE
1.5.2. Appel
L’appel de la procédure est une action contenant le nom de la procédure avec les listes de paramètres effectifs. De cette
façon nous pouvons appeler la procedure CalculCarrés plusieurs fois avec différents paramètres.
1.5.3. Paramètres d’entrées et de sortie
Nous avons vu que nous pouvons passer des paramètres en entrée dans l’appel de la procédure. Autrement dit, Ces
paramètres doivent être associés à une valeur au moment de l’appel de la procédure. De même nous pouvons spécifier dans
Maria Malek - EISTI - CPI1
3
1.8. LES CARACTÈRES
CHAPITRE 1. LES COMPOSANTS ÉLÉMENTAIRES DES ALGORITHMES
CalculCarrés(1,10) {Affiche les carrées entre 1 et 10 }
CalculCarrés(20,25) {Affiche les carrées entre 20 et 25 }
la partie PARAMÈTRES d’une procédure des paramètres de sortie, autrement dit des paramètres dont la valeur sera calculée
après l’execution de la procédure. Pour faire la différence entre les paramètres d’entrée et de sortie d’une procédure nous
utilisons les deux lettres E et S avant l’identification des paramètre. Par exemple si on veut stocker le carré d’un nombre
donné, nous devons déclarer une variable de sortie dans la partie PARAMÈTRES de la procédure.
PROCEDURE CalculCarré( E nb : ENTIER, S res : ENTIER)
VAR nb : ENTIER
res ← nb ∗ nb
Au moment de l’appel nous pouvons récupérer la valeur calculée pour l’afficher :
VAR X : entier
CalculCarré(3,X)
ecrire(X)
1.6. La notion de fonction
La fonction peut être vue comme une procédure qui prend une valeur qui sera la valeur de sortie. La valeur que prend
une fonction correspond à une valeur de sortie. Par exemple, nous pouvons écrire une fonction pour le calcul du carré.
FONCTION carré(nb : ENTIER) : ENTIER
RETOURNER nb ∗ nb
Une nouvelle version de la procédure CalculCarré peut être écrite en utilisant des appels de successifs de la fonction
carré.
1.7. L’action conditionnelle
L’action conditionnelle permet d’effectuer une suite d’actions selon la valeur booléene de certaines conditions. Deux
syntaxes sont possibles : La première utilise le mot clé SI et la deuxième utilise les deux mots clés SI et SINON. Nous
pouvons écrire par exemple une fonction max qui retourne la valeur maximale de deux entiers. A noter que l’action RETOURNER permet d’arrêter l’execution de la fonction par l’automate.
1.8. Les caractères
On dit qu’une variable est de type car si elle prend comme valeur un caractère qui peut être une lettre, une ponctuation,
un chiffre ou un espace.
Nous pouvons appliquer aux caractères les opérations de comparaisons sachant qu’il existe un ordre prédéfini sur les caractères : < ponctuations <0 00 < .. <0 90 <0 A0 < .. <0 Z 0 <0 a0 < .. <0 z 0 .
De même on dira qu’une variable est de types Chaîne de caractères si elle prend une valeur qui correspond à une
suite de caractères. L’ordre défini sur les chaînes de caractères est le même ordre utilisé dans le dictionnaire (exemple
’Maria’<’Marie’).
Maria Malek - EISTI - CPI1
4
CHAPITRE 1. LES COMPOSANTS ÉLÉMENTAIRES DES ALGORITHMES
1.10. LA NOTION D’INVARIANT
PROCEDURE CalculCarrés (debut,fin : ENTIER)
VAR nb : ENTIER
nb ← debut
TANTQUE nb ≤ f in FAIRE
ecrire (nb, carré(nb))
nb ← nb + 1
FIN TANTQUE
SI CONDITIONS ALORS
ACTIONS
FIN SI
SI CONDITIONS ALORS
ACTIONS1
SINON
ACTIONS2
FIN SI
FONCTION max(a,b : ENTIER) : ENTIER
SI a ≤ b ALORS
RETOURNER(b)
SINON
RETOURNER(a)
FIN SI
1.9. Les booléens
Une variable de type booléen est une variable qui ne peut prendre que deux valeurs qui sont vrai ou faux. Les opérations
possibles sont : le et logique, le ou logique et la négation. Par exemple la fonction premier teste si un nombre est premier et
retourne vrai ou faux.
1.10. La notion d’invariant
L’invariant d’une boucle est une assertion (exprimé par une phrase logique) qui est vraie chaque fois que nous atteignons un endroit particulier dans la boucle. Par exemple, soit l’algorithme qui affiche les p premiers nombres premiers.
Remarquons que l’assertion : i nombres premiers sont écrits est vraie tout le temps et on peut le montrer par récurrence.
Maria Malek - EISTI - CPI1
5
1.12. LES PARAMÈTRES
CHAPITRE 1. LES COMPOSANTS ÉLÉMENTAIRES DES ALGORITHMES
FONCTION premier (n : ENTIER) : booléen
VAR i : ENTIER ; prem : booléen
i←2
prem ← vrai
TANTQUE i < n et prem FAIRE
SI nmodi = 0 ALORS
prem ← f aux
SINON
i←i+1
FIN SI
FIN TANTQUE
RETOURNER prem
PROCEDURE tabprem( E p : ENTIER)
VAR i,nb : ENTIER
i←0
nb ← 1
TANTQUE i < p FAIRE
{ Assertion : i nombres premiers sont écrits}
SI premier(nb) ALORS
ecrire(nb)
i←i+1
FIN SI
nb ← nb + 1
FIN TANTQUE
1.11. Construction d’un algorithme itératif
Pour construire un algorithme récursif, nous essayons au départ d’effectuer un raisonnement par récurrence qui permet
dans un premier temps de trouver l’itération et l’invariant. Ensuite, l’algorithme est construit et contient deux parties : la
partie initialisation et l’action itérative. Exemple appliquer cette méthodologie sur la fonction puissance(n,p).
1.12. Les paramètres
Nous avons présenté deux types de paramètre : paramètre d’entrée et paramètre de sortie. Nous présentons dans ce
chapitre un troisième type de paramètres : ce sont les paramètres modifiables qu’on désignera par la suite par ES. Par
exemple nous codons la procédure qui permute deux entiers en utilisant ce type de paramètre.
Maria Malek - EISTI - CPI1
6
CHAPITRE 1. LES COMPOSANTS ÉLÉMENTAIRES DES ALGORITHMES
FONCTION puissance(n,p : ENTIER) : ENTIER
VAR r,i : ENTIER
i←1
r←n
TANTQUE i < p FAIRE
r ←r∗n
i←i+1
FIN TANTQUE
RETOURNER r
PROCEDURE permut( ES a,b : ENTIER)
VAR c : ENTIER
c←a
a←b
b←c
Maria Malek - EISTI - CPI1
7
1.12. LES PARAMÈTRES
Téléchargement