Académique Documents
Professionnel Documents
Culture Documents
1 Introduction
1
1.1 Notion d’un algorithme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2 Les caractéristiques d’un algorithme . . . . . . . . . . . . . . . . . . . . . . . 2
1.3 De l’algorithme au programme . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.4 Structure générale d’un algorithme . . . . . . . . . . . . . . . . . . . . . . . . 4
1.4.1 Les différentes méthodes de représentation d’un algorithme . . . . . . 4
1.4.1.1 Le pseudo-langage . . . . . . . . . . . . . . . . . . . . . . . 4
1.4.1.2 L’organigramme . . . . . . . . . . . . . . . . . . . . . . . . 4
1.4.1.3 Le Structogramme . . . . . . . . . . . . . . . . . . . . . . . 4
1.4.2 Structure d’un algorithme . . . . . . . . . . . . . . . . . . . . . . . . 5
i
TABLE DES MATIÈRES
5 Les tableaux 30
5.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
5.2 Les vecteurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
5.2.1 Déclaration d’un tableau de type Vecteur . . . . . . . . . . . . . . . . 31
5.2.2 L’accès à un élément du vecteur . . . . . . . . . . . . . . . . . . . . . 32
5.2.3 Le saisie et l’affichage d’un vecteur . . . . . . . . . . . . . . . . . . . 32
5.2.4 La recherche d’un élément dans un vecteur . . . . . . . . . . . . . . . 33
5.2.4.1 La recherche séquentielle . . . . . . . . . . . . . . . . . . . 34
5.2.4.2 La recherche dichotomique . . . . . . . . . . . . . . . . . . 34
5.2.5 Le trie d’un vecteur . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
5.3 Les matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
5.3.1 Déclaration d’une matrice . . . . . . . . . . . . . . . . . . . . . . . . 39
5.3.2 L’accès à un élément d’une matrice . . . . . . . . . . . . . . . . . . . 39
5.3.3 Le saisie et l’affichage d’une matrice . . . . . . . . . . . . . . . . . . 40
5.4 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
7 Les enregistrements 47
7.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
7.2 Déclaration d’une variable de type enregistrement . . . . . . . . . . . . . . . . 48
7.3 Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
7.4 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
iv
Liste des algorithmes
v
Chapitre 1
Introduction
Plan
1. Introduction
2. Notion d’un algorithme
3. Les caractèristiques d’un algorithme
4. De l’algorithme au programme
5. Structure générale d’un algorithme
6. Conclustion
1
CHAPITRE 1. INTRODUCTION
Définition 1.1
Un algorithme est un ensemble d’instructions écrites suivant une syntaxe bien définie qui une
fois exécutées correctement conduit à un résultat donné. Si l’algorithme est juste, le résultat est
dit correct, sinon, il est dit aléatoire.
On peut modéliser l’algorithme comme étant une entité qui prend en entrée un ensemble de
données et qui, selon les valeurs des données entrées, retourne un ou plusieurs résultats en sortie.
Efficacité : L’efficacité d’un algorithme est son aptitude à utiliser de manière optimale les res-
sources du matériel qui l’exécute.
Définition 1.2
Un programme est une suite d’actions que doit effectuer une machine pour obtenir un ensemble
de résultats à partir de données initiales.
Définition 1.3
Un Langage de programmation est un ensemble de vocabulaires et de règles syntaxiques servant
à exprimer des algorithmes.
1.4.1.1 Le pseudo-langage
Un pseudo langage est un langage constitué de vocabulaires et de règles syntaxiques permet-
tant l’écriture d’un algorithme sous une forme standardisée.
Dans notre cas, on utilise des termes de la langue française permettant d’exprimer d’une
manière directe et souple les actions élémentaires de l’algorithme afin de faciliter l’écriture et
l’apprentissage.
1.4.1.2 L’organigramme
Un organigramme est un moyen graphique permettant de visualiser les opérations et les
traitements contenus dans le corps de l’algorithme.
Un organigramme est constitué d’un nombre réduit de symboles simples qui décrivent des
opérations typiques.
exemple :
1.4.1.3 Le Structogramme
Les instructions élémentaires du langage sont schématisées à l’image du fonctionnement du
programme.
d/KEϭ
d/KEϮ
d/KEE
1. EN TÊTE DE L’ALGORITHME
Elle est formée d’un mot clé (Algorithme) suivi du nom de l’algorithme.
2. LES DÉCLARATIONS
Cette partie définie les structures de données sur les quelles travaillera un algorithme. Ces
données sont définies au moyen de trois catégories :
– Les constantes
– Les types
– Les variables
3. CORPS DE L’ALGORITHME
C’est la partie délimitée par les mots clés DEBUT et FIN et contenant les actions à effectuer
par l’algorithme.
La syntaxe générale d’écriture d’un algorithme est alors le suivant :
ALGORITHME <nom_de_algorithme>
VAR
<Déclaration des variables>
DÉBUT
<instructions>
FIN
On peut ajouter deux parties optionnelles qui sont : CONST (déclaration des constantes) et
TYPE (définition de nouvelles types de données).
ALGORITHME <nom_de_algorithme>
CONST
<déclaration des constantes>
TYPE
<définition de nouvelles types de données>
VAR
<Déclaration des variables>
DÉBUT
<instructions>
FIN
Plan
1. Introduction
2. Les variables et les constantes
3. Les types simples
4. Les expressions arithmétiques et logiques
5. Les instruction élémentaires
6. Conclustion
7
CHAPITRE 2. LES TYPES DE DONNÉES SIMPLES ET LES ACTIONS ÉLÉMENTAIRES
2.1 Introduction
Une donnée peut être :
– Une constante : si sa valeur ne change jamais durant les exécutions de l’algorithme.
– Une variable : si sa valeur peut changer durant les exécutions de l’algorithme.
Définition 2.1
Une variable est un nom symbolique attaché à un emplacement mémoire.
il est définit par :
nom l’identificateur de la variable. Il doit être unique dans un même algorithme et il est
conseillé qu’il soit significatif de telle sorte qu’il donne une idée sur le contenu de la
variable (prénom, prixUnitaire, moyenne...).
type la nature de la variable. Il détermine les types de données qu’on peut stocker dans la
variable (entier, réel, booléen...).
valeur indique le contenu de lavariable, c’est à dire la valeur stockée dans la variable (5.7, vrai,
faux, ’A’...).
Les constantes
Définition 2.2
Les constantes sont des données dont la valeur ne change jamais au cours de l’exécution de
l’algorithme (PI=3.14).
Remarques
– Dans l’ensemble des entiers, on distingue :
Le type Réel :
Le type Booléen :
Il y a quatre types d’opérations qu’on peut appliquer sur les Booléens :
ET opération de multiplication logique.
OU opération d’addition logique.
XOR opérateur OU-exclusif.
NEGATION opérateur unaire qui, une fois appliqué sur une variable booléenne, retourne son
opposé (la NEGATION est souvent représentée par le symbole .
Le type Caractère :
exemple
soient a et b deux entiers, x et y deux réels
x+y*5
6+a*5 DIV 3
(3-y)*b
sont des expressions arithmétiques.
exemple
soient a et b deux entiers, x et y deux réels
(a<b) ET (x>y)
(a+b<c)OU(a+y>x)
sont des expressions logiques.
Priorité Opérateurs
1 -, (unaires)
2 Les opérateurs multiplicatifs : * ; / ; DIV ; MOD ; AND
3 Les opérateurs additifs : + ; - ; OR ; XOR
4 Les opérateurs relationnels : = ; <> ; < ; <= ; > ; >=
NB :
les expressions entre parenthèses sont entièrement évaluées avant d’intervenir dans la suite des
calculs. En cas de conflit entre opérateurs de même priorité, l’évaluation se fait de gauche à
droite.
exercice 1 Ecrire un algorithme qui lit trois entiers, calcule leur moyenne et l’affiche.
exercice 2
Ecrire un algorithme qui lit :
– Le montant lors taxe d’un article,
– Le taux de tva,
– Le nombre d’articles,
Et qui affiche le total tout taxes compris.
Note : Total_TTC = nbrArticle * mont_HT*(1 + taux_Tva)
CHAPITRE 2. LES TYPES DE DONNÉES SIMPLES ET LES ACTIONS ÉLÉMENTAIRES
2.6 Conclusion
Un algorithme est une suite d’instructions élémentaires telle que l’affectation, la lecture,
l’écriture...etc
Plan
1. Introduction
2. La struture si..alors
(a) Le conditionnelle simple
(b) Le conditionnelle généralisée
(c) Le conditionnelle imbriquée
3. La structure selon
4. Conclustion
16
CHAPITRE 3. LES STRUCTURES CONDITIONNELLES
3.1 Introduction
Dans un algorithme, les instructions s’exécutent séquentiellement les unes après les autres,
dans l’ordre où elle apparaissent. Or dans la vie réelle, pour résoudre un problème, on peut se
trouver dans un cas ou on doit choisir d’éffectuer un traitement ou un autre.
Un algorithme doit donc donner la possibilité d’effectuer des choix, autrement dit d’avoir
des comportements qui puissent dépendre des résultats intermédiaires. On parle dans ce cas de
structure de conditionnelles.
syntaxe
SI <condition> ALORS
<traitement>
FSI
NB <condition> est une expression logique dont le résultat est un booléen.
exercice 3 Ecrire un algorithme qui affiche la valeur absolue de la différence entre 2 nombres
saisis au clavier.
syntaxe
SI <condition> ALORS
<traitement1>
SINON
<traitement2>
FSI
exercice 4 écrire un algorithme qui vérifi si une note est comprise entre 0 et 20.
exemple Un rebot conduit une voiture il peut exécuter 3 actions « s’arrêter », « ralentir », «
passer » en fonction de la couleur des feux qui sera une variable saisie. Supposons que la couleur
des feux qui sera une variable saisie. Supposons que la couleur des feux est représenté par une
variable de type caractère qui reçoit l’un des 3 valeurs ‘R’, ‘V’ ou ‘O’.
3.4 Conclusion
Les structures conditionnelles permettent d’enrichir le traitement séquentielle d’un algo-
rithme en donnant la possibilité d’exécuter un ensemble d’instructions relatif à une certaine
condition.
Plan
1. Introduction
2. La boucle Pour
3. La boucle Tant que
4. La boucle Répéter
5. Conclustion
22
CHAPITRE 4. LES STRUCTURES ITÉRATIVES
4.1 Introduction
Supposons qu’on veuille afficher les 10 premiers entiers positifs. Si on utilise le traitement
séquentie on aura l’algorithme suivant :
ALGORITHME affiche
VAR
DébUT
Ecrire(0) ;
Ecrire(1) ;
Ecrire(2) ;
...
Ecrire(9) ;
FIN
Cette méthode reste raisonnable pour un petit nombre mais si on veut afficher les n premiers
entiers avec n = 1000, l’algorithme devient alors absurde et impossible à écrire. Pour pouvoir
écrire un tel algorithme, on aura besoin d’une structure qui permet de répéter auotomatiquement
une instruction ou un groupe d’instructions. On doit alors utiliser des structures répétitives.
Une structure répétitive est une structure qui répète un même traitement autant de fois que
l’on veut pour vue que la condition d’exécution soit satisfaite. Cette boucle s’arrête lorsque cette
condition n’est plus vérifiée. Il existe trois schémas (boucles) de représentation d’une structure
répétitive à savoir :
– la boucle Pour
– la boucle Tant que
– la boucle Répéter
syntaxe
POUR <compteur> DE <borne_inférieure> À <borne_supérieure> PAS <incrément> FAIRE
<traitement>
FPOUR
avec
<compteur> variable de type entier.
<borne_inférieure> valeur de type entier.
<borne_supérieure> valeur de type entier.
<incrément> valeur de type entier.
NB : ne modifier jamais la valeur du compteur dans une insruction Pour.
si on ne spécifie pas la valeur du PAS dans l’instruction POUR il prends par défaut la valeur :
– 1 si <borne_inférieure> < <borne_supérieure>
– -1 si <borne_inférieure> > <borne_supérieure>
Algorithme 4.2 Algorithme affichage des N premiers entiers (boucle Tant que)
ALGORITHME afficher
VAR
i : entier
N : entier
DÉBUT
Lire (N)
i 0;
TANT QUE i <=N FAIRE
Ecrire(i) ;
i i+1 ;
FTANTQUE
FIN
syntaxe
Répéter
<traitement>
jqà (<condition>)
exercice 5 Ecrire un algorithme qui calcule la moyenne de N notes saisies en entrée. Utiliser
les 3 shémas itératifs.
– Solution à l’aide de la boucle Pour
4.5 Conclusion
On ne peut utiliser la boucle Pour que si on connait à prioris le nombre d’itérations contraire-
ment aux boucles Tant que et Répéter qui peuvent être utilisées même si on connait pas combien
d’itérations seront nécessaires pour obtenir le résultat.
la boucle " REPETER" est utilisée s’il est nécessaire d’exécuter au moins une fois le bloc
d’instructions.
Les tableaux
Plan
1. Introduction
2. Les vecteurs
(a) Déclaration d’un tableau de type vecteur
(b) L’accès à un élément d’un vecteur
(c) La saisie et l’affichage d’un vecteur
(d) La recherche d’un élément dans un vecteur
– Recherche séquentielle
– Recherche dichotomique
3. Les matrices
(a) Déclaration d’une matrice
(b) L’accès à un élément d’une matrice
(c) La saisie et l’affichage d’une matrice
4. Conclustion
30
CHAPITRE 5. LES TABLEAUX
5.1 Introduction
Le tableau est une struture de données (un type) utilisée pour représenter un ensemble d’élé-
ments ayant tous le même type et dont le nombre d’éléments est connu à priori. Le type des
éléments est le type de base. il peut être simple ou complexe.
on distingue deux types de tableaux selon la nature des éléments :
– Les tableaux unidimensionnels ou vecteurs : ce sont des tableaux dont le type de base est
simple.
– Les tableaux multidimensionnels : ce sont des tableaux dont le type de base est un tableau.
Le type de base qui est un tableau peut lui même avoir des éléments de type Tableau ! On
aura donc un tableau à plusieur dimensions. Dans ce cours, on va étudier les tableaux à
deux dimensions ou matrices.
Chaque élément du tableau possède un indice avec lequel on peut accèder à l’élément. Par
exemple la case qui contient la valeur 5.0 est accessible grâce à son indice 3.
Le Tri à bulles
Chaque élément de la matrice est repéré par deux indices : son indice de ligne et son indice de
colonne. Par exemple, la case dont la valeur est 5 est repérée par l’indice de ligne 2 et l’indice de
colonne 1. Ainsi, chaque case est identifiée uniquement à l’aide du couple (i, j) avec i représente
le numéro de ligne et j représente le numéro de colonne.
exercice 6 écrire un algorithme qui lit une valeur entière X saisie au clavier et cherche si elle
existe dans une matrice d’entiers de taille N*M.
5.4 Conclusion
Un tableau est une structure de données qui permet de repérer simultanément un ensemble
de valeurs de même types. Il existe plusieurs types de tableaux et le choix se fait selon le la
nature du problème à résoudre.
Plan
1. Introduction
2. Opérations sur les chaines de caractères
(a) La lecture et l’affichage d’une chaine
(b) Les fonctions prédéfinies sur les chaines
3. Conclustion
42
CHAPITRE 6. LES CHAÎNES DE CARACTÈRES
6.1 Introduction
Une chaîne de caractères est une suite finie de caractères. On peut utiliser la structure de
données Tableau (qui aura comme type de base le type caractère) pour modéliser une chaîne de
caractères. On peut alors définir une chaîne de caractères comme suit :
syntaxe
TYPE
Chaine : Tableau[<Taille_Maxi>] de caractère ;
VAR
<Nom_Variable> : Nom_Chaine ;
exemple TYPE
Chaine : Tableau[30] de caractère ;
VAR
prénom : Chaine ;
La fonction init_chaine
Elle retourne une chaine dont la taille est zéro.
syntaxe
init_chaine()
exemple
ch1 init_chaine() ;
La fonction ajout_car
La condition pour appliquer cette fonction est que la chaine ne soit pas pleine. Le nouveau
caractère est ajouté en fin de la chaine et le résultat est une nouvelle chaine de taille augmentée
de 1.
syntaxe
ajout_car(<chaine>, <caractère>) ;
exemple
ajout_car(ch, ’.’) ;
Dans cette exemple, on veut ajouter le caractère ’.’ en fin de la chaîne, on aura ch = “bonjour
tunisie.”
La fonction supp_car
La condition pour appliquer cette fonction est que la chaine ne soit pas vide. Le caractère qui
sera supprimé est celui dont la position est passée en paramétre et le résultat est une nouvelle
chaine de taille diminuée de 1.
syntaxe
supp_car(<chaine>, <entier>) ;
exemple
supp_car(ch, 1) ;
on aura ch = “onjour tunisie”
La fonction pos_car
Cette fonction retourne la position de la première occurrence du caractère passé en paramètre
syntaxe
pos_car(<chaine>, <caractère>) ;
exemple
p pos_car(ch, ’o’) ;
On aura p = 2
La fonction longueur
Cette fonction retourne la longueur d’une chaîne, soit le nombre de caractères qui la forment.
syntaxe
longueur(<chaine>) ;
exemple
n longueur(ch) ;
On aura n = 15
La fonction longueur
Cette fonction retourne la longueur d’une chaîne, soit le nombre de caractères qui la forment.
syntaxe
longueur(<chaine>) ;
exemple
n longueur(ch) ;
On aura n = 15
La fonction chaine_vide
Cette fonction retourne vrai si la chaine a une longueur nulle sinon elle retourne faux.
syntaxe
chaine_vide(<chaine>) ;
exemple
b chaine_vide(ch) ;
On aura b = faux
La fonction chaine_pleine
Cette fonction retourne vrai si la chaine a atteint sa longueur maximale sinon elle retourne
faux.
syntaxe
chaine_pleine(<chaine>) ;
exemple
b chaine_pleine(ch) ;
exercice 7
Écrire un algorithme qui calcule et affiche la longueur de la plus longue suite croissante
d’une chaîne données de taille maximale max.
6.3 Conclusion
Le type chaîne de caractere permet le regroupement et la manipulation d’une suite de valeurs
aphanumériques(lettres, de signes de ponctuation, d’espaces ou des chiffres). On peut représen-
ter une chaîne à l’aide d’un vecteur dont le type de base est le caractère.
Les enregistrements
Plan
1. Introduction
2. Déclaration et accès à une variable de type enregistrement.
3. Conclustion
47
CHAPITRE 7. LES ENREGISTREMENTS
7.1 Introduction
L’enregistrement est une structure de données qui permet de représenter un ensemble d’in-
formations qui n’ont pas forcément toutes le même type. Les informations contenues dans un
enregistrement s’appellent les composantes de l’enregistrement. Le nombre et les types des com-
posants d’un enregistrement devraient être fixés au départ.
exemple
etudiant = enreg
num : entier
nom : chaine de caractères
jour : entier
mois : entier
ans entier
fenreg
on peut écrire l’enregistrement etudiant d’une autre façon en définissant un nouveau enre-
gistrement date :
date = enreg
jour : entier
mois : entier
ans entier
fenreg
on aura donc :
etudiant = enreg
num : entier
nom : chaine de caractères
date_naissance : date
fenreg
exemple
Soit e une variable de type etudiant. Pour accèder au nom de l’ étudiant on tape e.nom
Pour accèder à l’année de sa naissance on tape e.date.an
7.3 Application
Soit un ensemble de personnes (max = 1000 personnes) et un ensemble de voitures (max =
5000 voitures). Chaque personne est caractérisée par son numéro(entier) et son nom. Une voiture
est caractérisée par son numéro de matriculation, sa marque et sa date de fabrication sous forme
de jour, mois et année.
Chaque personne possède au maximum 5 voitures.
1. Définir la structure de données adéquate pour représenter une voiture.
2. Définir la structure de données pour la représentation d’une personne.
3. Quelle structure de données peut on utiliser pour représenter un ensemble de n personnes
et un ensemble de m voitures ? Définir ces structures.
4. Écrire un algorithme qui saisit m voitures et n personnes. On suppose que les personnes
ne possèdent pas de voitures lors de la saisie.
Solution
1. date = enreg
jour : entier
mois : entier
ans entier
fenreg
voiture = enreg
immat : chaine de caractères
marque : chaine de caractères
date_fabrication : date
fenreg
2. personne = enreg
num : entier
nom : chaine de caractères
nbe_voitures : entier
tab_voitures : tableau[1..5] de voiture
fenreg
3. Pour définir un ensemble de variables tous de même type, on utilise la structure tableau. On
peut définir les types suivants :
tab_personnes : tableau[1..1000] de personne
tab_voitures : tableau[1..5000] de voiture
4.
voiture = enreg
immat : chaine de caractères
marque : chaine de caractères
date_fabrication : date
fenreg
personne = enreg
num : entier
nom : chaine de caractères
nbe_voitures : entier
tab_voitures : tableau[1..5] de voiture
fenreg
tab_personnes : tableau[1..1000] de personne
tab_voitures : tableau[1..5000] de voiture
VAR
p : personne ;
v : voiture ;
t_pers : tab_personnes ;
t_voit : tab_voitures ;
i, p, n : entier ;
DÉBUT
répéter
écrire(“donner le nombre de voitures :”) ;
lire(n) ;
jqà(n>=1 et n<=5000)
répéter
écrire(“donner le nombre de personnes :”) ;
lire(p) ;
jqà(p>=1 et p<=1000)
7.4 Conclusion
Contrairement aux tableaux qui sont des structures de données dont tous les éléments sont
de même type, les enregistrements sont des structures de données dont les éléments peuvent être
de type différent et qui se rapportent à la même entité.
Plan
1. Introduction
2. Analyse et décomposition des problèmes
3. Les procédures
(a) Structure d’une procédure
(b) Utilisation d’une procédure
4. Les fonctions
(a) Structure d’une fonction
(b) Utilisation d’une fonction
5. La Portée des Variables
6. Comparaison entre les procédures et les fonctions
7. Conclustion
53
CHAPITRE 8. LES PROCÉDURES ET LES FONCTIONS
8.1 Introduction
Les problèmes jusque là traités peuvent être classés dans la catégorie des problèmes faciles ;
c’est à dire que leur résolution se ramène à une suite finie d’actions simples, qui, si elles sont
correctement exécutées, fourniront le(s) résultat(s) souhaité(s). En réalité, les problèmes rencon-
trés sont plus complexes et leur solution n’est pas immédiate : pour obtenir le résultat final, on
doit passer par des résultats intermédiaires solutions de sous problèmes inclus dans le problème
principal. C’est pour cette raison , que pour résoudre un problème, on doit le décomposer en
sous problèmes. Si la complexité persiste, on continuera la décomposition jusqu’à arriver à un
niveau de décomposition où tous les sous problèmes trouvés seront faciles à résoudre.
exemple
PROCÉDURE aff_somme(a :entier, b :entier)
VAR
S : entier
DÉBUT
S := a + b
écrire(S)
FIN
exemple
FONCTION calcul_somme(a :entier, b :entier) :entier
VAR
S : entier
DÉBUT
S := a + b
retourner(S) ;
FIN
8.7 La récursivité
Un problème récusrsif est un problème qui fait appel à lui même pour résoudre un problème.
Ce phénomène est souvent rencontrer dans les objets, les mathématiques, les programmes, les
structures de données...
exemple une liste est composée d’un élément et d’une autre liste.
le successeur d’un entier naturel est un entier naturel.
Si le prblème a une structure récursive, on utilise pour sa résolution des algorithmes récursifs.
exercice 8 calcul de X y
8.8 Conclusion
La méthode d’analyse descendante consiste en un raffinement successifs en partant d’un
problème complexe que l’on décompose en sous-problemes moins compliqués. On décompose
alors ces problèmes en sous-problèmes de plus en plus simples, jusqu’à parvenir à des pro-
blèmes tellement élémentaires que la solution en est évidente. En algorithmique, on utilise les
procédures et les fonctions pour aboutir à ce but.
[1] Sophie Boutin, Sylvie Tormento. “Algorithmes Cours et Exercices”, Edition Bréal, 1994
[2] Mossaab BOUKHCHIM (2006), notes de cours “Algorithmique –Niveau 1”, ISET de Kef
[3] Jacques Courtin, Irène Kowarski “Initiation à l’algorithmique et aux structures de données”,
Collection : Sciences Sup, Dunod 1998 - 2ème édition -Tome 1- 368 pages
60