SlideShare une entreprise Scribd logo
1  sur  59
Télécharger pour lire hors ligne
ALGORITHMIQUE ET
PROGRAMMATION
Année universitaire 2022-2023
sninehmohamed@gmail.com
CRMEF - MARRAKECH
Snineh
Mohamed
 Introduction
 Définitions
 Analyse et résolution d’un problème
 Composants d’un algorithme
◦ Données
◦ Instructions entrées/sorties
◦ Affectation
◦ Structure séquentielle
◦ Structures conditionnelles ou alternatives
◦ Structures répétitives
 Sous-algorithmes
 Récursivité
 Algorithmes de tri
2
INTRODUCTION
Snineh
Mohamed
 Les algorithmes.
 Les langages machines.
 Les langages évolués : pascal, C, C++, Basic, Java,
Python…
 Un compilateur ou interpréteur est nécessaire pour traduire
un programme écrit en un langage évolué en langage
machine.
INTRODUCTION
3
Snineh
Mohamed
 Algorithme :
◦ mot dérivé du nom du mathématicien « AL KHWARIZMI » qui a
vécu au 9ème siècle, était membre d’un académie des sciences à
Bagdad .
◦ Entrée : instance du problème.
◦ Sortie : résultat(s)
Entrée Sortie
DÉFINITIONS
4
Snineh
Mohamed
 Définition 1:
◦ Un algorithme représente une séquence d’instructions (Actions), logiquement
ordonnées, qui permet de résoudre un problème donné.
◦ Un algorithme est lié à un problème.
Algorithme
 d’actions Résoudre Problème à Résoudre
DÉFINITIONS
5
Snineh
Mohamed
 Définition 2:
◦ Séquence d’étapes de calcul qui transforment les entrées en sortie. La
sortie représente la solution d’un problème donné.
◦ Étude de la résolution de problèmes par la mise en œuvre de suites
d'opérations élémentaires selon un processus défini aboutissant à une
solution.
Problème
Algorithme
Données +  d’actions
Données
Modélise
6
DÉFINITIONS
Snineh
Mohamed
DÉFINITIONS
ALGORITHMIQUE :
 L’algorithmique est la science des algorithmes.
 L’algorithmique s’intéresse à l’art de construire des algorithmes ainsi
qu’à caractériser leur validité, leur robustesse, leur réutilisabilité, leur
complexité ou leur efficacité.
VALIDITÉ D’UN ALGORITHME
 La validité d’un algorithme est son aptitude à réaliser exactement la
tâche pour laquelle il a été conçu.
ROBUSTESSE D’UN ALGORITHME
 La robustesse d’un algorithme est son aptitude à se protéger de
conditions anormales d’utilisation.
7
Snineh
Mohamed
DÉFINITIONS
RÉUTILISABILITÉ D’UN ALGORITHME
 La réutilisabilité d’un algorithme est son aptitude à être réutilisé pour
résoudre des tâches équivalentes à celle pour laquelle il a été conçu.
COMPLEXITÉ D’UN ALGORITHME
 La complexité d’un algorithme est le nombre d’instructions
élémentaires à exécuter pour réaliser la tâche pour laquelle il a été
conçu.
EFFICACITÉ D’UN ALGORITHME
 L’efficacité d’un algorithme est son aptitude à utiliser de manière
optimale les ressources du matériel qui l’exécute.
8
Snineh
Mohamed
ANALYSE ET RÉSOLUTION D’UN PROBLÈME
Analyser et étudier le problème à résoudre
Spécifier le modèle de Résolution :
données et les formules mathématiques
Écrire l’algorithme
Traduire l’algorithme à un programme
Exécuter le programme par un ordinateur
afin d’obtenir des résultats
Problème
Modèle
Algorithme
Programme
Résultats
9
Snineh
Mohamed
 Un algorithme peut être représenté :
◦ Langage humain.
◦ Le pseudo-code:
 Le pseudo-code est une représentation textuelle avec une série
de conventions ressemblant à un langage de programmation
(sans les problèmes de syntaxe)
 plus pratique pour écrire un algorithme.
 représentation largement utilisée.
◦ Langage informatique.
REPRÉSENTATION D’UN ALGORITHME
10
Snineh
Mohamed
Symbole Instruction
DEBUT et FIN
LIRE et ECRIRE
TRAITEMENT ou
CALCUL
DECISON ou TEST
RENVOIE
◦ Organigramme :
 Un organigramme est la représentation graphique d'un
algorithme. Les instructions sont représentées par des symboles
graphiques normalisés qui sont:
REPRÉSENTATION D’UN ALGORITHME
11
Snineh
Mohamed
VUE GLOBALE D’UN ALGORITHME
Entrée (Inputs)
Sortie (Outputs)
Algorithme
Données +  d’instruction
Traitements
(instructions)
Instructions
des entrées
Données
intermédiaires
Instructions
des sorties
12
Snineh
Mohamed
 Un algorithme est composé d'un certains nombre d'instructions qui
manipulent des données :
- Données d'un algorithme :
◦ Une donnée représente une information liée à un élément du
problème traité par l’algorithme. Elle est caractérisée par 3 attributs:
 Identificateur
 Valeur
 Type
COMPOSANTS D'UN ALGORITHME
13
Snineh
Mohamed
COMPOSANTS D'UN ALGORITHME
• C’est un objet content une valeur
fixe.
• C’est un objet content une valeur
pouvant être modifiée.
• Dans un programme, ça représente
une zone mémoire dans la RAM.
Données
Variable
Constante
- Données : Variables et constantes:
14
Snineh
Mohamed
COMPOSANTS D'UN ALGORITHME
- Données : Identificateur
 Chaque donnée (Variable ou constante) manipulée par un
algorithme est désignées par un nom unique : IDENTIFICATEUR.
 Identificateur : c’est une chaîne de caractères alphanumérique
(contenant uniquement des caractères alphabétiques [a-z, A-Z] et
numériques [0-9]) en plus du caractère « _ » (Trait souligné) et qui
ne commence pas par un caractère numérique.
15
Snineh
Mohamed
- Données : Entrées et Sorties
Données
• Les données que
l’utilisateur doit fournir à
l’algorithme.
Entrées (Inputs)
• Les données que l’algorithme doit afficher à
l’utilisateur. C’est les résultats de l’algorithme
(Solution du Problème)
Sortie(Outputs)
• Données utilisées par l’algorithme
pour le traitement lié au problème.
Données Intermédiaires
COMPOSANTS D'UN ALGORITHME
16
Snineh
Mohamed
 Les types numériques :
17
TYPES DE DONNÉES
Snineh
Mohamed
 Type date : (jour/mois/année)
 Type booléen
◦ Le type booléen stocke uniquement les valeurs logiques VRAI et FAUX.
◦ On peut représenter ces notions abstraites de VRAI et de FAUX par tout ce
qu'on veut : de l'anglais (TRUE et FALSE) ou des nombres (0 et 1).
 Chaînes de caractères
◦ Les caractères sont notés entre apostrophes ou guillemets.
◦ Il contient tous les caractères utilisables (lettres, chiffres, ponctuation).
◦ Le type chaîne permet de décrire des objets.
◦ Les langages de programmation manipulent les chaînes de caractères :
 Concaténation
 Sous-chaînes
 …
18
TYPES DE DONNÉES
Snineh
Mohamed
- Les opérateurs arithmétiques :
Opérateur Fonction Exemple
+ Addition X+Y
- Soustraction X-Y
* Multiplication X*Y
/ Division X/Y
^ Puissance 2^3
Mod Reste division 17 mod 5 (=2)
19
COMPOSANTS D'UN ALGORITHME
Snineh
Mohamed
- Les opérateurs relationnels (de comparaison) :
Opérateur signification
= Egal
<> ou  Différent
< Strictement inférieur
> Strictement supérieur
<= Inférieur ou égal
>= Supérieur ou égal
- Les opérateurs relationnels (de comparaison) :
Opérateur signification
NON Non logique
OU Ou inclusif
ET Et logique
20
COMPOSANTS D'UN ALGORITHME
Snineh
Mohamed
 LES INSTRUCTIONS
 Définition
 Les actions élémentaires qui composent un algorithme sont
appelées Instructions, car elles représentent des ordres à
exécuter dans l'algorithme.
 Instruction d'entrée : Lire
 L'instruction Lire permet d'introduire une donnée
 Instruction de Sortie: Ecrire
 L'instruction Ecrire permet de restituer (sortir) une donnée
 EXEMPLES :
◦ Prix  Lire ("Donner le prix: ")
◦ Ecrire ("Net à payer :" , Net)
21
COMPOSANTS D'UN ALGORITHME
Snineh
Mohamed
 Affectation:
Une affectation est l'opération qui permet de ranger la valeur d'une
expression dans une variable.
Dans un algorithme l'affectation est symbolisée par: ←
 Exemples:
X←20 : La valeur 20 est affectée à la variable X
S←n1+n2 : La somme (n1+n2) est affectée à la variable S
X←Y : La valeur de la variable Y est affectée à la variable X
 Exercice :
Ecrire un algorithme permettant de saisir 2 nombres et de permuter
leurs valeurs.
22
COMPOSANTS D'UN ALGORITHME
Snineh
Mohamed
 Ordre de priorité des opérateurs
Pour les opérateurs arithmétiques, l'ordre de priorité est le suivant
(du plus prioritaire au moins prioritaire) :
◦ ^ : (élévation à la puissance)
◦ * , / (multiplication, division)
◦ mod (modulo)
◦ + , - (addition, soustraction)
En cas de besoin on utilise les parenthèses pour indiquer les
opérations à effectuer en priorité.
23
COMPOSANTS D'UN ALGORITHME
Snineh
Mohamed
 STRUCTURES DE CONTRÔLE
Un algorithme décrit une suite d'instructions dont l'exécution ne se
fait pas toujours dans l'ordre de leur écriture. Il peut y avoir dans
certains cas des sauts de blocs d'instructions. Ces sauts sont
contrôlés par une structure appelée structure de contrôle.
 Un algorithme peut avoir trois structures:
◦ Structure séquentielle
◦ Structures conditionnelles ou alternatives
◦ Structure répétitive
24
COMPOSANTS D'UN ALGORITHME
Snineh
Mohamed
STRUCTURE SÉQUENTIELLE
On dit qu'un algorithme a une structure séquentielle lorsque les
instructions s'exécutent d'une manière linéaire une après une du
début jusqu'à la fin.
 Exemple
Variables NT1, NT2, NT3, MOY : Réel;
Début
LIRE (NT1);
LIRE (NT2);
LIRE (NT3);
MOY← (NT1+ NT2+ NT3)/3;
ECRIRE (MOY);
Fin
25
COMPOSANTS D'UN ALGORITHME
Snineh
Mohamed
 Structures conditionnelles
Dans un algorithme ayant une structure alternative les instructions
s'exécutent selon la réalisation d'une condition ou non.
La condition est une expression logique, elle peut être simple ou composée.
 Instruction Si … Alors … Sinon …Finsi
Elle exprime le choix entre deux séquences d'actions en fonction de la valeur
de la condition
Syntaxes :
Si condition alors
Séquence1
Finsi
Si Condition Alors
Séquence1
Sinon
Séquence2
Finsi
Si Condition Alors
Séquence1
SinonSi Condition alors
Séquence2
SinonSi Condition alors
Séquence3
…
Sinon
Séquence_n
Finsi
26
COMPOSANTS D'UN ALGORITHME
Snineh
Mohamed
 Condition composée
◦ Une condition composée est une condition formée de plusieurs conditions simples
reliées par des opérateurs logiques: ET, OU, OU exclusif (XOR) et NON
Exemples
 x compris entre 2 et 6 : (x > 2) ET (x < 6)
 n divisible par 3 ou par 2 : (n mod 3=0) OU (n mod 2=0)
 deux valeurs et deux seulement sont identiques parmi a, b et c :
(a=b) XOR (a=c) XOR (b=c)
◦ L'évaluation d'une condition composée se fait selon des règles présentées
généralement dans ce qu'on appelle tables de vérité
27
C1 C2 C1 ET C2 C1 C2 C1 OU C2 C1 C2 C1 XOR C2
V V V V V V V V F
V F F V F V V F V
F V F F V V F V V
F F F F F F F F F
C1 NON C1
V F
F V
COMPOSANTS D'UN ALGORITHME
Snineh
Mohamed
 Structures alternatives imbriquées
 Exemple :
Si condition_1 alors
Si condition_2 alors
instructionsA
Sinon
instructionsB
Finsi
Sinon
Si condition_3 alors
instructionsC
Finsi
Finsi
28
COMPOSANTS D'UN ALGORITHME
Snineh
Mohamed
 Structure répétitive ou itérative (boucles)
◦ La structure répétitive permet de répéter une action ou une
séquence d’actions tant qu’une condition est vraie.
◦ Une structure répétitive est aussi appelée boucle
 La boucle tantQue …faire
 Exemple
Ecrire un algorithme qui demande à l’utilisateur une note comprise
entre 0 et 20 jusqu’à ce que la réponse convienne.
Tant que Condition(s) faire
Instruction(s)
Fin Tantque
29
COMPOSANTS D'UN ALGORITHME
Snineh
Mohamed
 Structure répétitive
La boucle Répéter … Jusqu’à
 Exemple
Ecrire un algorithme qui permet de vérifier le mot de passe saisi au
clavier. L’utilisateur a droit à trois tentatives.
Répéter
Instruction(s)
Jusqu’á Condition(s)
30
COMPOSANTS D'UN ALGORITHME
Snineh
Mohamed
Notion du compteur
 Initialisation d’un compteur :
Compteur  Vi
 Incrémentation d’un compteur
Compteur  Compteur + incrément
 Décrémentation d’un compteur
Compteur  Compteur - incrément
 Exemple :
Ecrire un algorithme qui calcule pour un nombre entier N (N>=0)
saisi au clavier, la somme : S=1+2+3+4+5+6+…..+N
31
COMPOSANTS D'UN ALGORITHME
Snineh
Mohamed
 La boucle Pour ……FinPour
Cette instruction permet la répétition d'un traitement un
nombre déterminé de fois. Le nombre de fois est contrôlé par
un compteur allant de la valeur initiale à la valeur finale. La
progression se fait dans l’ordre croissant ou décroissant.
 Exemple
Ecrire un algorithme qui affiche les dix premiers nombres pairs.
POUR Compteur  Vi A Vf [PAS DE Incrément] FAIRE
Instruction(s);
FinPour
32
COMPOSANTS D'UN ALGORITHME
Snineh
Mohamed
 Imbrication des boucles:
33
COMPOSANTS D'UN ALGORITHME
Pour | Répéter | Tant que | …
FinPour | Jusqu’à Condition(s)| FinTantque | …
Snineh
Mohamed
 Tableaux à une seule dimension :
◦ Structure de données qui permet de regrouper un ensemble de valeurs de
même type sous un même nom de variable en les différenciant par un
indice ou un index.
 Syntaxes :
◦ nom_tableau : type_des_éléments [borne_inférieure .. borne_supérieure]
◦ nom_tableau : type_des_éléments [Taille_Maximale]
◦ La première case commence souvent par l’indice : 0
◦ Par exemple, pour un tableau t de 5 entiers , on pourra écrire :
 t : entier [0..4] ou bien t : entier [5]
34
TYPES DE DONNÉES : TABLEAUX
10 5 8 4 7
0 1 2 3 4
valeurs
indices
t
Snineh
Mohamed
 Accès aux éléments du tableau t :
◦ Pour accéder à un élément du tableau, il suffit de préciser entre
crochets l’indice de la case contenant cet élément : t[2]
 Affectation d’un élément du tableau t à une variable:
◦ A ← t[3]
 Modification d’un élément du tableau t :
◦ t[3] ← 99
 Parcours des éléments d’un tableau :
◦ Les algorithmes utilisent des itérations permettant de faire un
parcours complet ou partiel des différents éléments du tableau.
35
TYPES DE DONNÉES : TABLEAUX
Snineh
Mohamed
 Tableaux à deux dimensions :
 Syntaxes :
◦ nom_tableau : type_des_éléments [0..nb_lignes-1, 0 .. nb_colonnes-1]
◦ Par exemple : Un tableau t de 3 lignes et 4 colonnes.
 t : entier [0..2,0..3]
36
TYPES DE DONNÉES : TABLEAUX
0 1 2 3
0 18 89 9 2
1 67 77 85 6
2 55 66 88 9
Snineh
Mohamed
 Accès aux éléments d’un tableau à 2D :
◦ Nom_tableau[indice_ligne,indice_colonne ]
◦ t[1,2]
 Affectation d’un élément du tableau t à une variable:
◦ a ← t[1,2]
 Modification d’un élément du tableau t :
◦ t[1,2] ← 100
 Parcours des éléments d’un tableau à 2D :
◦ Les algorithmes utilisent l’imbrication des boucles pour
parcourir le tableau à 2D.
37
TYPES DE DONNÉES : TABLEAUX
Snineh
Mohamed
 Utilité:
◦ Découper l’algorithme en sous-algorithmes pour les raisons
suivantes:
 Structuration;
 Réutilisation et partage;
 Pas de duplication du code
 Offert une meilleure lisibilité car le lecteur peut comprendre
ce que fait un sous-algorithme, uniquement à la lecture de
son nom.
 Construction des bibliothèques des sous-algorithmes.
 …
38
SOUS-ALGORITHMES
Snineh
Mohamed
 Définition :
◦ Un sous-algorithme est un bloc d’actions. Souvent il est déclaré
dans la partie entête de l’algorithme principal puis appelé dans
le corps de l’algorithme.
 Syntaxe :
◦ Le sous-algorithme se compose :
 nom du sous-algorithme;
 liste éventuelle des paramètres et de leur type;
 éventuellement le type de la valeur qu'elle renvoie
 les déclarations locales (constantes ou variables);
 les instructions qui calculent le résultat à retourner;
 éventuellement au moins une instruction retourner qui
renvoie la valeur résultat.
39
SOUS-ALGORITHMES
Snineh
Mohamed
◦ Syntaxe (suite):
40
SOUS-ALGORITHMES
Sous-algorithme nom_sous_algo ([par1, par2, …]) :
[type de retour du résultat]
[Variables locales]
Début
Actions
[retourner résultat]
Fin
Snineh
Mohamed
 Variables globales et variables locales:
◦ La portée d’une variable est l’ensemble des sous-algorithme où cette
variable est connue.
◦ Une variable définie au niveau du programme principal est appelée
variable globale.
◦ Une variable définie au sein d’un sous-algorithme est appelée variable
locale.
◦ Lorsque le nom d’une variable locale est identique à une variable
globale, la variable globale est localement masquée.
41
SOUS-ALGORITHMES
Snineh
Mohamed
 Types des sous-algorithmes:
◦ Un sous-algorithme peut se présenter sous forme de fonction ou de
procédure.
◦ Une fonction est un sous-algorithme qui, à partir de donnée(s), calcul
et rend à l’algorithme un et un seul résultat.
◦ Une procédure est un sous-algorithme qui affiche le(s) résultat(s)
demandé(s).
42
SOUS-ALGORITHMES
Snineh
Mohamed
 Types des sous-algorithmes:
◦ Un sous-algorithme peut se présenter sous forme de fonction ou de
procédure.
 Fonctions:
◦ Une fonction est un sous-algorithme qui, à partir de données, calcul et
retourne à l’algorithme un et un seul résultat.
 Fonctions Prédéfinies:
◦ Textes : Majuscule, Minuscule, Gauche, Droite, Sous-Chaine, Longueur,
Concact, …
◦ Date : Année, Mois, Jour,….
◦ Math : Sin, Cos, Ent, Sqrt, Abs, Alea, Mod, …
◦ …
43
SOUS-ALGORITHMES
Snineh
Mohamed
 Fonctions définies par l’utilisateur :
◦ Une fonction est un sous-algorithme qui, à partir de données, calcul et
retourne à l’algorithme un et un seul résultat.
 Déclaration d’une Fonction:
44
SOUS-ALGORITHMES
Fonction nom_fonction ([par1, par2, …]) : type de retour du résultat
Variables
nom_var : Typevar
Début
…
Actions
…
Retourner Resultat
Fin
Corps de la fonction
Variables locales
Snineh
Mohamed
 Procédures:
◦ Une procédure est un bloc d’actions nommé et déclaré dans l’entête
de l’algorithme et appelé dans son corps.
 Déclaration d’une procédure :
45
SOUS-ALGORITHMES
Procedure nom_procedure ([par1, par2, …]) :
Variables
nom_var : Typevar
Début
…
Actions
…
Fin
Corps de la procédure
Variables locales
Snineh
Mohamed
 Appel d’une fonction :
◦ Par affectation : F  Factorielle(5)
◦ Dans une instruction d’écriture : Ecrire (Factorielle(5))
◦ Dans l’instruction Si … Alors
 Appel d’une procédure:
◦ L’appel d’une procédure s’effectue en spécifiant son nom et
éventuellement ses paramètres
 Appel des sous-algorithmes:
◦ Une procédure ou une fonction peut appeler d’autres sous-
algorithmes.
46
SOUS-ALGORITHMES
Snineh
Mohamed
 Nature des paramètres :
◦ … nom_sous_algorithme (valeur | reference p1: type_donnée, …) …
◦ Le mot clé valeur indique une modalité de passage des paramètres
 Exemple : Passage par valeur
◦ fonction max_value(valeur p1: reel, valeur p2: reel) : reel …
◦ Appel : Ecrire(max_value(x, y))
◦ L’expression max_value(x,y) est évaluée de la façon suivante:
 Les valeurs de x et y sont calculées
 Les paramètres p1 et p2 de max_value sont initialisés en utilisant ces valeurs.
 Le corps de la fonction max_value est exécuté utilisant p1 et p2 comme des
variables.
 Le résultat de la fonction est enfin retourné
 Quelques soient les opérations effectuées sur p1 et p2 dans le corps de
max_value, les valeurs des paramètres actuels x et y restent inchangés.
47
SOUS-ALGORITHMES
Snineh
Mohamed
 Exemple : Passage par référence
procédure echange (reference a: entier, reference b: entier)
variable p: un entier
debut
p  a
a  b
b  p
fin
◦ L’expression echange (x,y) est évaluée de la façon suivante:
 on ne fait pas une copie des valeurs de x et y dans a et b
 au contraire, on transforme a et b en « alias » de x et y en le faisant pointer
sur les mêmes cases mémoire de x et y.
 toute opération effectuée sur les paramètres a et b dans le corps de la
procédure ou fonction et aussi effectué sur les arguments x et y.
48
SOUS-ALGORITHMES
Snineh
Mohamed
 Définition et principe:
◦ En informatique la récursivité consiste à remplacer une boucle par un appel à la
fonction elle-même.
◦ Exemple : N ! = 1 x 2 x … x (N-2) x (N-1) x N
◦ On commence par le nombre jusqu’à 1 pour pouvoir calculer la factorielle.
◦ Les différents appels récursifs sont empilés en mémoire jusqu’à ce que la
condition d’arrêt soit validée. Ils sont ensuite dépilés jusqu’à l’appel initial.
49
RÉCURSIVITÉ
Variables N : Entier, Fact :
Entier
Debut
Fact ←1
Pour i←1 à N
Fact ← Fact * i
i suivant
Ecrire (Fact)
Fin
Fonction Fact (N : Entier) : Entier
Debut
Si N = 1 Alors
Retourner 1
Sinon
Retourner N * Fact (N-1)
FinSi
Fin
Snineh
Mohamed
50
Fact(4)
4 * Fact(3)
3 * Fact(2)
2 * Fact(1)
1
= 2 * 1
= 3 * 2
= 4 * 6
= 24
RÉCURSIVITÉ
Exemple : N ! = 1 x 2 x … x (N-2) x (N-1) x N
Snineh
Mohamed
 Les types d’algorithmes de tri :
◦ Les algorithmes itératifs
◦ Les algorithmes récursifs, basés sur le paradigme « diviser pour
régner », dans lesquels le tri d’une liste s’effectuera en la divisant
plusieurs fois par deux jusqu’à obtention de sous-listes ne comportant
qu’une seule valeur.
51
ALGORITHMES DE TRI
Snineh
Mohamed
52
ALGORITHMES DE TRI
 Les algorithmes itératifs :
◦ Tri par sélection
 Le tri par sélection consiste dans un premier temps à mettre à la première place
le plus petit élément de la liste, puis à la seconde place le deuxième plus petit
élément …
Snineh
Mohamed
54
ALGORITHMES DE TRI
 Les algorithmes itératifs :
◦ Tri à bulles:
 Le tri à bulles consiste à parcourir toute la liste en comparant chaque élément avec son
successeur, puis en les remettant dans l’ordre si nécessaire. Puis recommencer si besoin est.
 Si lors du parcours de la liste aucune permutation n’a pas été effectuée l’algorithme s’arrête.
Snineh
Mohamed
 Les algorithmes itératifs :
◦ Tri par insertion
 Le tri par insertion consiste à insérer les éléments un par un en s'assurant
que lorsque l'on rajoute un nouvel élément, les éléments déjà insérés
restent triés.
56
ALGORITHMES DE TRI
Snineh
Mohamed
 Tri par insertion : Exemple
57
ALGORITHMES DE TRI
12 5 2 7
12 2 7
12 2 7
5 12 2 7
5 12 7
5 12 7
2 5 12 7
2 5 12
2 5 12
2 5 7 12
RETIRER LE 2ÈME ELT
DÉCALER LES ELTS
INSÉRER LE 2ÈME ELT
RETIRER LE 3ÈME ELT
DÉCALER LES ELTS
INSÉRER LE 3ÈME ELT
RETIRER LE 4ÈME ELT
DÉCALER LES ELTS
INSÉRER LE 4ÈME ELT
Snineh
Mohamed
 Les algorithmes récursifs:
◦ Ils utilisent le paradigme « diviser pour régner ».
◦ Tri par fusion
 Le tri par fusion consiste à trier récursivement les deux moitiés de la liste,
puis à fusionner ces deux sous-listes triées en une seule. La condition
d’arrêt à la récursivité sera l’obtention d'une liste à un seul élément, car
une telle liste est déjà triée.
 Description de l’algorithme :
 Diviser la liste en deux sous-listes en la "coupant" par la moitié.
 Trier récursivement chacune de ces deux sous-listes. Arrêter la récursivité
lorsque les listes n'ont plus qu'un seul élément.
 Fusionner les deux sous-listes triées en une seule.
58
ALGORITHMES DE TRI
Snineh
Mohamed
 Tri par Fusion :
59
ALGORITHMES DE TRI
10 4 5 7
10 4
10 4
5 7
7
5
4 5 10
7
4 10 7
5
Snineh
Mohamed
 Les algorithmes récursifs:
◦ Tri rapide
 Le tri rapide consiste à positionner un par un par les éléments à leur place
définitive en ne laissant à leur gauche que des éléments plus petits et à
leur droite que des éléments plus grands. Les deux sous-listes obtenues
par ce positionnement sont ensuite traitées de la même façon par
récursivité. La condition d’arrêt à la récursivité sera l’obtention d'une liste
à un seul élément, car cet unique élément est nécessairement au "bon"
endroit.
60
ALGORITHMES DE TRI
Snineh
Mohamed
2 3 5 7 12
61
ALGORITHMES DE TRI
1ère itération
2ème itération
3ème itération
12 5 2 7 3
2 5 12 7 3
2 5 12 7 3
2 3 12 7 5
2 3 12 7 5
4ème itération 2 3 5 7 12
 Les algorithmes récursifs:
◦ Tri rapide
 Le tri rapide consiste à positionner un par un par les éléments à leur place définitive
en ne laissant à leur gauche que des éléments plus petits et à leur droite que des
éléments plus grands. Les deux sous-listes obtenues par ce positionnement sont
ensuite traitées de la même façon par récursivité. La condition d’arrêt à la récursivité
sera l’obtention d'une liste à un seul élément, car cet unique élément est
nécessairement au "bon" endroit.

Contenu connexe

Similaire à COURS_ALGORITHME_SNINEH.pptx

Algorithmique et Programmation - informatique - débutant
Algorithmique et Programmation - informatique - débutantAlgorithmique et Programmation - informatique - débutant
Algorithmique et Programmation - informatique - débutantRidoinBahadi
 
INF120 - Algo DUT SRC1 - Cours 3
INF120 - Algo DUT SRC1 - Cours 3INF120 - Algo DUT SRC1 - Cours 3
INF120 - Algo DUT SRC1 - Cours 3PGambette
 
Java1_BasesLangage.pdf
Java1_BasesLangage.pdfJava1_BasesLangage.pdf
Java1_BasesLangage.pdfLarbaSAWADOGO2
 
Java1_BasesLangage.pdf
Java1_BasesLangage.pdfJava1_BasesLangage.pdf
Java1_BasesLangage.pdfLarbaSAWADOGO2
 
Chapitre 1 Introduction à l'algorithmique.pdf
Chapitre 1 Introduction à l'algorithmique.pdfChapitre 1 Introduction à l'algorithmique.pdf
Chapitre 1 Introduction à l'algorithmique.pdfMohamed Anis Mejri
 
Formation Langage c.pptx
Formation Langage c.pptxFormation Langage c.pptx
Formation Langage c.pptxValdy Ngouabira
 
resume-theorique-m106-2004-6261bb9556a66.pdf
resume-theorique-m106-2004-6261bb9556a66.pdfresume-theorique-m106-2004-6261bb9556a66.pdf
resume-theorique-m106-2004-6261bb9556a66.pdfFootballLovers9
 
Test de logiciels
Test de logiciels Test de logiciels
Test de logiciels Bilel Abed
 
Algorithme & structures de données Chap I
Algorithme & structures de données Chap IAlgorithme & structures de données Chap I
Algorithme & structures de données Chap IInes Ouaz
 
algo et complexité .pptx
algo et complexité  .pptxalgo et complexité  .pptx
algo et complexité .pptxtarekjedidi
 
cours fortran.pptx
cours fortran.pptxcours fortran.pptx
cours fortran.pptxMED B
 
Algorithme & structures de données Chap II
Algorithme & structures de données Chap IIAlgorithme & structures de données Chap II
Algorithme & structures de données Chap IIInes Ouaz
 
Généralités sur la notion d’Algorithme
Généralités sur la notion d’AlgorithmeGénéralités sur la notion d’Algorithme
Généralités sur la notion d’AlgorithmeInforMatica34
 

Similaire à COURS_ALGORITHME_SNINEH.pptx (20)

Algorithmique et Programmation - informatique - débutant
Algorithmique et Programmation - informatique - débutantAlgorithmique et Programmation - informatique - débutant
Algorithmique et Programmation - informatique - débutant
 
INF120 - Algo DUT SRC1 - Cours 3
INF120 - Algo DUT SRC1 - Cours 3INF120 - Algo DUT SRC1 - Cours 3
INF120 - Algo DUT SRC1 - Cours 3
 
Java1_BasesLangage.pdf
Java1_BasesLangage.pdfJava1_BasesLangage.pdf
Java1_BasesLangage.pdf
 
Java1_BasesLangage.pdf
Java1_BasesLangage.pdfJava1_BasesLangage.pdf
Java1_BasesLangage.pdf
 
Chapitre 1 Introduction à l'algorithmique.pdf
Chapitre 1 Introduction à l'algorithmique.pdfChapitre 1 Introduction à l'algorithmique.pdf
Chapitre 1 Introduction à l'algorithmique.pdf
 
Algorithmique
AlgorithmiqueAlgorithmique
Algorithmique
 
Algorithmique
AlgorithmiqueAlgorithmique
Algorithmique
 
Formation Langage c.pptx
Formation Langage c.pptxFormation Langage c.pptx
Formation Langage c.pptx
 
resume-theorique-m106-2004-6261bb9556a66.pdf
resume-theorique-m106-2004-6261bb9556a66.pdfresume-theorique-m106-2004-6261bb9556a66.pdf
resume-theorique-m106-2004-6261bb9556a66.pdf
 
Test de logiciels
Test de logiciels Test de logiciels
Test de logiciels
 
Algorithme & structures de données Chap I
Algorithme & structures de données Chap IAlgorithme & structures de données Chap I
Algorithme & structures de données Chap I
 
2-Algo.ppt
2-Algo.ppt2-Algo.ppt
2-Algo.ppt
 
algo et complexité .pptx
algo et complexité  .pptxalgo et complexité  .pptx
algo et complexité .pptx
 
cours fortran.pptx
cours fortran.pptxcours fortran.pptx
cours fortran.pptx
 
Algorithme & structures de données Chap II
Algorithme & structures de données Chap IIAlgorithme & structures de données Chap II
Algorithme & structures de données Chap II
 
Généralités sur la notion d’Algorithme
Généralités sur la notion d’AlgorithmeGénéralités sur la notion d’Algorithme
Généralités sur la notion d’Algorithme
 
TAD (1).pptx
TAD (1).pptxTAD (1).pptx
TAD (1).pptx
 
syntax-matlab.pdf
syntax-matlab.pdfsyntax-matlab.pdf
syntax-matlab.pdf
 
algo-imsi-2.pdf
algo-imsi-2.pdfalgo-imsi-2.pdf
algo-imsi-2.pdf
 
Langage vhdl
Langage vhdlLangage vhdl
Langage vhdl
 

COURS_ALGORITHME_SNINEH.pptx

  • 1. ALGORITHMIQUE ET PROGRAMMATION Année universitaire 2022-2023 sninehmohamed@gmail.com CRMEF - MARRAKECH
  • 2. Snineh Mohamed  Introduction  Définitions  Analyse et résolution d’un problème  Composants d’un algorithme ◦ Données ◦ Instructions entrées/sorties ◦ Affectation ◦ Structure séquentielle ◦ Structures conditionnelles ou alternatives ◦ Structures répétitives  Sous-algorithmes  Récursivité  Algorithmes de tri 2 INTRODUCTION
  • 3. Snineh Mohamed  Les algorithmes.  Les langages machines.  Les langages évolués : pascal, C, C++, Basic, Java, Python…  Un compilateur ou interpréteur est nécessaire pour traduire un programme écrit en un langage évolué en langage machine. INTRODUCTION 3
  • 4. Snineh Mohamed  Algorithme : ◦ mot dérivé du nom du mathématicien « AL KHWARIZMI » qui a vécu au 9ème siècle, était membre d’un académie des sciences à Bagdad . ◦ Entrée : instance du problème. ◦ Sortie : résultat(s) Entrée Sortie DÉFINITIONS 4
  • 5. Snineh Mohamed  Définition 1: ◦ Un algorithme représente une séquence d’instructions (Actions), logiquement ordonnées, qui permet de résoudre un problème donné. ◦ Un algorithme est lié à un problème. Algorithme  d’actions Résoudre Problème à Résoudre DÉFINITIONS 5
  • 6. Snineh Mohamed  Définition 2: ◦ Séquence d’étapes de calcul qui transforment les entrées en sortie. La sortie représente la solution d’un problème donné. ◦ Étude de la résolution de problèmes par la mise en œuvre de suites d'opérations élémentaires selon un processus défini aboutissant à une solution. Problème Algorithme Données +  d’actions Données Modélise 6 DÉFINITIONS
  • 7. Snineh Mohamed DÉFINITIONS ALGORITHMIQUE :  L’algorithmique est la science des algorithmes.  L’algorithmique s’intéresse à l’art de construire des algorithmes ainsi qu’à caractériser leur validité, leur robustesse, leur réutilisabilité, leur complexité ou leur efficacité. VALIDITÉ D’UN ALGORITHME  La validité d’un algorithme est son aptitude à réaliser exactement la tâche pour laquelle il a été conçu. ROBUSTESSE D’UN ALGORITHME  La robustesse d’un algorithme est son aptitude à se protéger de conditions anormales d’utilisation. 7
  • 8. Snineh Mohamed DÉFINITIONS RÉUTILISABILITÉ D’UN ALGORITHME  La réutilisabilité d’un algorithme est son aptitude à être réutilisé pour résoudre des tâches équivalentes à celle pour laquelle il a été conçu. COMPLEXITÉ D’UN ALGORITHME  La complexité d’un algorithme est le nombre d’instructions élémentaires à exécuter pour réaliser la tâche pour laquelle il a été conçu. EFFICACITÉ D’UN ALGORITHME  L’efficacité d’un algorithme est son aptitude à utiliser de manière optimale les ressources du matériel qui l’exécute. 8
  • 9. Snineh Mohamed ANALYSE ET RÉSOLUTION D’UN PROBLÈME Analyser et étudier le problème à résoudre Spécifier le modèle de Résolution : données et les formules mathématiques Écrire l’algorithme Traduire l’algorithme à un programme Exécuter le programme par un ordinateur afin d’obtenir des résultats Problème Modèle Algorithme Programme Résultats 9
  • 10. Snineh Mohamed  Un algorithme peut être représenté : ◦ Langage humain. ◦ Le pseudo-code:  Le pseudo-code est une représentation textuelle avec une série de conventions ressemblant à un langage de programmation (sans les problèmes de syntaxe)  plus pratique pour écrire un algorithme.  représentation largement utilisée. ◦ Langage informatique. REPRÉSENTATION D’UN ALGORITHME 10
  • 11. Snineh Mohamed Symbole Instruction DEBUT et FIN LIRE et ECRIRE TRAITEMENT ou CALCUL DECISON ou TEST RENVOIE ◦ Organigramme :  Un organigramme est la représentation graphique d'un algorithme. Les instructions sont représentées par des symboles graphiques normalisés qui sont: REPRÉSENTATION D’UN ALGORITHME 11
  • 12. Snineh Mohamed VUE GLOBALE D’UN ALGORITHME Entrée (Inputs) Sortie (Outputs) Algorithme Données +  d’instruction Traitements (instructions) Instructions des entrées Données intermédiaires Instructions des sorties 12
  • 13. Snineh Mohamed  Un algorithme est composé d'un certains nombre d'instructions qui manipulent des données : - Données d'un algorithme : ◦ Une donnée représente une information liée à un élément du problème traité par l’algorithme. Elle est caractérisée par 3 attributs:  Identificateur  Valeur  Type COMPOSANTS D'UN ALGORITHME 13
  • 14. Snineh Mohamed COMPOSANTS D'UN ALGORITHME • C’est un objet content une valeur fixe. • C’est un objet content une valeur pouvant être modifiée. • Dans un programme, ça représente une zone mémoire dans la RAM. Données Variable Constante - Données : Variables et constantes: 14
  • 15. Snineh Mohamed COMPOSANTS D'UN ALGORITHME - Données : Identificateur  Chaque donnée (Variable ou constante) manipulée par un algorithme est désignées par un nom unique : IDENTIFICATEUR.  Identificateur : c’est une chaîne de caractères alphanumérique (contenant uniquement des caractères alphabétiques [a-z, A-Z] et numériques [0-9]) en plus du caractère « _ » (Trait souligné) et qui ne commence pas par un caractère numérique. 15
  • 16. Snineh Mohamed - Données : Entrées et Sorties Données • Les données que l’utilisateur doit fournir à l’algorithme. Entrées (Inputs) • Les données que l’algorithme doit afficher à l’utilisateur. C’est les résultats de l’algorithme (Solution du Problème) Sortie(Outputs) • Données utilisées par l’algorithme pour le traitement lié au problème. Données Intermédiaires COMPOSANTS D'UN ALGORITHME 16
  • 17. Snineh Mohamed  Les types numériques : 17 TYPES DE DONNÉES
  • 18. Snineh Mohamed  Type date : (jour/mois/année)  Type booléen ◦ Le type booléen stocke uniquement les valeurs logiques VRAI et FAUX. ◦ On peut représenter ces notions abstraites de VRAI et de FAUX par tout ce qu'on veut : de l'anglais (TRUE et FALSE) ou des nombres (0 et 1).  Chaînes de caractères ◦ Les caractères sont notés entre apostrophes ou guillemets. ◦ Il contient tous les caractères utilisables (lettres, chiffres, ponctuation). ◦ Le type chaîne permet de décrire des objets. ◦ Les langages de programmation manipulent les chaînes de caractères :  Concaténation  Sous-chaînes  … 18 TYPES DE DONNÉES
  • 19. Snineh Mohamed - Les opérateurs arithmétiques : Opérateur Fonction Exemple + Addition X+Y - Soustraction X-Y * Multiplication X*Y / Division X/Y ^ Puissance 2^3 Mod Reste division 17 mod 5 (=2) 19 COMPOSANTS D'UN ALGORITHME
  • 20. Snineh Mohamed - Les opérateurs relationnels (de comparaison) : Opérateur signification = Egal <> ou  Différent < Strictement inférieur > Strictement supérieur <= Inférieur ou égal >= Supérieur ou égal - Les opérateurs relationnels (de comparaison) : Opérateur signification NON Non logique OU Ou inclusif ET Et logique 20 COMPOSANTS D'UN ALGORITHME
  • 21. Snineh Mohamed  LES INSTRUCTIONS  Définition  Les actions élémentaires qui composent un algorithme sont appelées Instructions, car elles représentent des ordres à exécuter dans l'algorithme.  Instruction d'entrée : Lire  L'instruction Lire permet d'introduire une donnée  Instruction de Sortie: Ecrire  L'instruction Ecrire permet de restituer (sortir) une donnée  EXEMPLES : ◦ Prix  Lire ("Donner le prix: ") ◦ Ecrire ("Net à payer :" , Net) 21 COMPOSANTS D'UN ALGORITHME
  • 22. Snineh Mohamed  Affectation: Une affectation est l'opération qui permet de ranger la valeur d'une expression dans une variable. Dans un algorithme l'affectation est symbolisée par: ←  Exemples: X←20 : La valeur 20 est affectée à la variable X S←n1+n2 : La somme (n1+n2) est affectée à la variable S X←Y : La valeur de la variable Y est affectée à la variable X  Exercice : Ecrire un algorithme permettant de saisir 2 nombres et de permuter leurs valeurs. 22 COMPOSANTS D'UN ALGORITHME
  • 23. Snineh Mohamed  Ordre de priorité des opérateurs Pour les opérateurs arithmétiques, l'ordre de priorité est le suivant (du plus prioritaire au moins prioritaire) : ◦ ^ : (élévation à la puissance) ◦ * , / (multiplication, division) ◦ mod (modulo) ◦ + , - (addition, soustraction) En cas de besoin on utilise les parenthèses pour indiquer les opérations à effectuer en priorité. 23 COMPOSANTS D'UN ALGORITHME
  • 24. Snineh Mohamed  STRUCTURES DE CONTRÔLE Un algorithme décrit une suite d'instructions dont l'exécution ne se fait pas toujours dans l'ordre de leur écriture. Il peut y avoir dans certains cas des sauts de blocs d'instructions. Ces sauts sont contrôlés par une structure appelée structure de contrôle.  Un algorithme peut avoir trois structures: ◦ Structure séquentielle ◦ Structures conditionnelles ou alternatives ◦ Structure répétitive 24 COMPOSANTS D'UN ALGORITHME
  • 25. Snineh Mohamed STRUCTURE SÉQUENTIELLE On dit qu'un algorithme a une structure séquentielle lorsque les instructions s'exécutent d'une manière linéaire une après une du début jusqu'à la fin.  Exemple Variables NT1, NT2, NT3, MOY : Réel; Début LIRE (NT1); LIRE (NT2); LIRE (NT3); MOY← (NT1+ NT2+ NT3)/3; ECRIRE (MOY); Fin 25 COMPOSANTS D'UN ALGORITHME
  • 26. Snineh Mohamed  Structures conditionnelles Dans un algorithme ayant une structure alternative les instructions s'exécutent selon la réalisation d'une condition ou non. La condition est une expression logique, elle peut être simple ou composée.  Instruction Si … Alors … Sinon …Finsi Elle exprime le choix entre deux séquences d'actions en fonction de la valeur de la condition Syntaxes : Si condition alors Séquence1 Finsi Si Condition Alors Séquence1 Sinon Séquence2 Finsi Si Condition Alors Séquence1 SinonSi Condition alors Séquence2 SinonSi Condition alors Séquence3 … Sinon Séquence_n Finsi 26 COMPOSANTS D'UN ALGORITHME
  • 27. Snineh Mohamed  Condition composée ◦ Une condition composée est une condition formée de plusieurs conditions simples reliées par des opérateurs logiques: ET, OU, OU exclusif (XOR) et NON Exemples  x compris entre 2 et 6 : (x > 2) ET (x < 6)  n divisible par 3 ou par 2 : (n mod 3=0) OU (n mod 2=0)  deux valeurs et deux seulement sont identiques parmi a, b et c : (a=b) XOR (a=c) XOR (b=c) ◦ L'évaluation d'une condition composée se fait selon des règles présentées généralement dans ce qu'on appelle tables de vérité 27 C1 C2 C1 ET C2 C1 C2 C1 OU C2 C1 C2 C1 XOR C2 V V V V V V V V F V F F V F V V F V F V F F V V F V V F F F F F F F F F C1 NON C1 V F F V COMPOSANTS D'UN ALGORITHME
  • 28. Snineh Mohamed  Structures alternatives imbriquées  Exemple : Si condition_1 alors Si condition_2 alors instructionsA Sinon instructionsB Finsi Sinon Si condition_3 alors instructionsC Finsi Finsi 28 COMPOSANTS D'UN ALGORITHME
  • 29. Snineh Mohamed  Structure répétitive ou itérative (boucles) ◦ La structure répétitive permet de répéter une action ou une séquence d’actions tant qu’une condition est vraie. ◦ Une structure répétitive est aussi appelée boucle  La boucle tantQue …faire  Exemple Ecrire un algorithme qui demande à l’utilisateur une note comprise entre 0 et 20 jusqu’à ce que la réponse convienne. Tant que Condition(s) faire Instruction(s) Fin Tantque 29 COMPOSANTS D'UN ALGORITHME
  • 30. Snineh Mohamed  Structure répétitive La boucle Répéter … Jusqu’à  Exemple Ecrire un algorithme qui permet de vérifier le mot de passe saisi au clavier. L’utilisateur a droit à trois tentatives. Répéter Instruction(s) Jusqu’á Condition(s) 30 COMPOSANTS D'UN ALGORITHME
  • 31. Snineh Mohamed Notion du compteur  Initialisation d’un compteur : Compteur  Vi  Incrémentation d’un compteur Compteur  Compteur + incrément  Décrémentation d’un compteur Compteur  Compteur - incrément  Exemple : Ecrire un algorithme qui calcule pour un nombre entier N (N>=0) saisi au clavier, la somme : S=1+2+3+4+5+6+…..+N 31 COMPOSANTS D'UN ALGORITHME
  • 32. Snineh Mohamed  La boucle Pour ……FinPour Cette instruction permet la répétition d'un traitement un nombre déterminé de fois. Le nombre de fois est contrôlé par un compteur allant de la valeur initiale à la valeur finale. La progression se fait dans l’ordre croissant ou décroissant.  Exemple Ecrire un algorithme qui affiche les dix premiers nombres pairs. POUR Compteur  Vi A Vf [PAS DE Incrément] FAIRE Instruction(s); FinPour 32 COMPOSANTS D'UN ALGORITHME
  • 33. Snineh Mohamed  Imbrication des boucles: 33 COMPOSANTS D'UN ALGORITHME Pour | Répéter | Tant que | … FinPour | Jusqu’à Condition(s)| FinTantque | …
  • 34. Snineh Mohamed  Tableaux à une seule dimension : ◦ Structure de données qui permet de regrouper un ensemble de valeurs de même type sous un même nom de variable en les différenciant par un indice ou un index.  Syntaxes : ◦ nom_tableau : type_des_éléments [borne_inférieure .. borne_supérieure] ◦ nom_tableau : type_des_éléments [Taille_Maximale] ◦ La première case commence souvent par l’indice : 0 ◦ Par exemple, pour un tableau t de 5 entiers , on pourra écrire :  t : entier [0..4] ou bien t : entier [5] 34 TYPES DE DONNÉES : TABLEAUX 10 5 8 4 7 0 1 2 3 4 valeurs indices t
  • 35. Snineh Mohamed  Accès aux éléments du tableau t : ◦ Pour accéder à un élément du tableau, il suffit de préciser entre crochets l’indice de la case contenant cet élément : t[2]  Affectation d’un élément du tableau t à une variable: ◦ A ← t[3]  Modification d’un élément du tableau t : ◦ t[3] ← 99  Parcours des éléments d’un tableau : ◦ Les algorithmes utilisent des itérations permettant de faire un parcours complet ou partiel des différents éléments du tableau. 35 TYPES DE DONNÉES : TABLEAUX
  • 36. Snineh Mohamed  Tableaux à deux dimensions :  Syntaxes : ◦ nom_tableau : type_des_éléments [0..nb_lignes-1, 0 .. nb_colonnes-1] ◦ Par exemple : Un tableau t de 3 lignes et 4 colonnes.  t : entier [0..2,0..3] 36 TYPES DE DONNÉES : TABLEAUX 0 1 2 3 0 18 89 9 2 1 67 77 85 6 2 55 66 88 9
  • 37. Snineh Mohamed  Accès aux éléments d’un tableau à 2D : ◦ Nom_tableau[indice_ligne,indice_colonne ] ◦ t[1,2]  Affectation d’un élément du tableau t à une variable: ◦ a ← t[1,2]  Modification d’un élément du tableau t : ◦ t[1,2] ← 100  Parcours des éléments d’un tableau à 2D : ◦ Les algorithmes utilisent l’imbrication des boucles pour parcourir le tableau à 2D. 37 TYPES DE DONNÉES : TABLEAUX
  • 38. Snineh Mohamed  Utilité: ◦ Découper l’algorithme en sous-algorithmes pour les raisons suivantes:  Structuration;  Réutilisation et partage;  Pas de duplication du code  Offert une meilleure lisibilité car le lecteur peut comprendre ce que fait un sous-algorithme, uniquement à la lecture de son nom.  Construction des bibliothèques des sous-algorithmes.  … 38 SOUS-ALGORITHMES
  • 39. Snineh Mohamed  Définition : ◦ Un sous-algorithme est un bloc d’actions. Souvent il est déclaré dans la partie entête de l’algorithme principal puis appelé dans le corps de l’algorithme.  Syntaxe : ◦ Le sous-algorithme se compose :  nom du sous-algorithme;  liste éventuelle des paramètres et de leur type;  éventuellement le type de la valeur qu'elle renvoie  les déclarations locales (constantes ou variables);  les instructions qui calculent le résultat à retourner;  éventuellement au moins une instruction retourner qui renvoie la valeur résultat. 39 SOUS-ALGORITHMES
  • 40. Snineh Mohamed ◦ Syntaxe (suite): 40 SOUS-ALGORITHMES Sous-algorithme nom_sous_algo ([par1, par2, …]) : [type de retour du résultat] [Variables locales] Début Actions [retourner résultat] Fin
  • 41. Snineh Mohamed  Variables globales et variables locales: ◦ La portée d’une variable est l’ensemble des sous-algorithme où cette variable est connue. ◦ Une variable définie au niveau du programme principal est appelée variable globale. ◦ Une variable définie au sein d’un sous-algorithme est appelée variable locale. ◦ Lorsque le nom d’une variable locale est identique à une variable globale, la variable globale est localement masquée. 41 SOUS-ALGORITHMES
  • 42. Snineh Mohamed  Types des sous-algorithmes: ◦ Un sous-algorithme peut se présenter sous forme de fonction ou de procédure. ◦ Une fonction est un sous-algorithme qui, à partir de donnée(s), calcul et rend à l’algorithme un et un seul résultat. ◦ Une procédure est un sous-algorithme qui affiche le(s) résultat(s) demandé(s). 42 SOUS-ALGORITHMES
  • 43. Snineh Mohamed  Types des sous-algorithmes: ◦ Un sous-algorithme peut se présenter sous forme de fonction ou de procédure.  Fonctions: ◦ Une fonction est un sous-algorithme qui, à partir de données, calcul et retourne à l’algorithme un et un seul résultat.  Fonctions Prédéfinies: ◦ Textes : Majuscule, Minuscule, Gauche, Droite, Sous-Chaine, Longueur, Concact, … ◦ Date : Année, Mois, Jour,…. ◦ Math : Sin, Cos, Ent, Sqrt, Abs, Alea, Mod, … ◦ … 43 SOUS-ALGORITHMES
  • 44. Snineh Mohamed  Fonctions définies par l’utilisateur : ◦ Une fonction est un sous-algorithme qui, à partir de données, calcul et retourne à l’algorithme un et un seul résultat.  Déclaration d’une Fonction: 44 SOUS-ALGORITHMES Fonction nom_fonction ([par1, par2, …]) : type de retour du résultat Variables nom_var : Typevar Début … Actions … Retourner Resultat Fin Corps de la fonction Variables locales
  • 45. Snineh Mohamed  Procédures: ◦ Une procédure est un bloc d’actions nommé et déclaré dans l’entête de l’algorithme et appelé dans son corps.  Déclaration d’une procédure : 45 SOUS-ALGORITHMES Procedure nom_procedure ([par1, par2, …]) : Variables nom_var : Typevar Début … Actions … Fin Corps de la procédure Variables locales
  • 46. Snineh Mohamed  Appel d’une fonction : ◦ Par affectation : F  Factorielle(5) ◦ Dans une instruction d’écriture : Ecrire (Factorielle(5)) ◦ Dans l’instruction Si … Alors  Appel d’une procédure: ◦ L’appel d’une procédure s’effectue en spécifiant son nom et éventuellement ses paramètres  Appel des sous-algorithmes: ◦ Une procédure ou une fonction peut appeler d’autres sous- algorithmes. 46 SOUS-ALGORITHMES
  • 47. Snineh Mohamed  Nature des paramètres : ◦ … nom_sous_algorithme (valeur | reference p1: type_donnée, …) … ◦ Le mot clé valeur indique une modalité de passage des paramètres  Exemple : Passage par valeur ◦ fonction max_value(valeur p1: reel, valeur p2: reel) : reel … ◦ Appel : Ecrire(max_value(x, y)) ◦ L’expression max_value(x,y) est évaluée de la façon suivante:  Les valeurs de x et y sont calculées  Les paramètres p1 et p2 de max_value sont initialisés en utilisant ces valeurs.  Le corps de la fonction max_value est exécuté utilisant p1 et p2 comme des variables.  Le résultat de la fonction est enfin retourné  Quelques soient les opérations effectuées sur p1 et p2 dans le corps de max_value, les valeurs des paramètres actuels x et y restent inchangés. 47 SOUS-ALGORITHMES
  • 48. Snineh Mohamed  Exemple : Passage par référence procédure echange (reference a: entier, reference b: entier) variable p: un entier debut p  a a  b b  p fin ◦ L’expression echange (x,y) est évaluée de la façon suivante:  on ne fait pas une copie des valeurs de x et y dans a et b  au contraire, on transforme a et b en « alias » de x et y en le faisant pointer sur les mêmes cases mémoire de x et y.  toute opération effectuée sur les paramètres a et b dans le corps de la procédure ou fonction et aussi effectué sur les arguments x et y. 48 SOUS-ALGORITHMES
  • 49. Snineh Mohamed  Définition et principe: ◦ En informatique la récursivité consiste à remplacer une boucle par un appel à la fonction elle-même. ◦ Exemple : N ! = 1 x 2 x … x (N-2) x (N-1) x N ◦ On commence par le nombre jusqu’à 1 pour pouvoir calculer la factorielle. ◦ Les différents appels récursifs sont empilés en mémoire jusqu’à ce que la condition d’arrêt soit validée. Ils sont ensuite dépilés jusqu’à l’appel initial. 49 RÉCURSIVITÉ Variables N : Entier, Fact : Entier Debut Fact ←1 Pour i←1 à N Fact ← Fact * i i suivant Ecrire (Fact) Fin Fonction Fact (N : Entier) : Entier Debut Si N = 1 Alors Retourner 1 Sinon Retourner N * Fact (N-1) FinSi Fin
  • 50. Snineh Mohamed 50 Fact(4) 4 * Fact(3) 3 * Fact(2) 2 * Fact(1) 1 = 2 * 1 = 3 * 2 = 4 * 6 = 24 RÉCURSIVITÉ Exemple : N ! = 1 x 2 x … x (N-2) x (N-1) x N
  • 51. Snineh Mohamed  Les types d’algorithmes de tri : ◦ Les algorithmes itératifs ◦ Les algorithmes récursifs, basés sur le paradigme « diviser pour régner », dans lesquels le tri d’une liste s’effectuera en la divisant plusieurs fois par deux jusqu’à obtention de sous-listes ne comportant qu’une seule valeur. 51 ALGORITHMES DE TRI
  • 52. Snineh Mohamed 52 ALGORITHMES DE TRI  Les algorithmes itératifs : ◦ Tri par sélection  Le tri par sélection consiste dans un premier temps à mettre à la première place le plus petit élément de la liste, puis à la seconde place le deuxième plus petit élément …
  • 53. Snineh Mohamed 54 ALGORITHMES DE TRI  Les algorithmes itératifs : ◦ Tri à bulles:  Le tri à bulles consiste à parcourir toute la liste en comparant chaque élément avec son successeur, puis en les remettant dans l’ordre si nécessaire. Puis recommencer si besoin est.  Si lors du parcours de la liste aucune permutation n’a pas été effectuée l’algorithme s’arrête.
  • 54. Snineh Mohamed  Les algorithmes itératifs : ◦ Tri par insertion  Le tri par insertion consiste à insérer les éléments un par un en s'assurant que lorsque l'on rajoute un nouvel élément, les éléments déjà insérés restent triés. 56 ALGORITHMES DE TRI
  • 55. Snineh Mohamed  Tri par insertion : Exemple 57 ALGORITHMES DE TRI 12 5 2 7 12 2 7 12 2 7 5 12 2 7 5 12 7 5 12 7 2 5 12 7 2 5 12 2 5 12 2 5 7 12 RETIRER LE 2ÈME ELT DÉCALER LES ELTS INSÉRER LE 2ÈME ELT RETIRER LE 3ÈME ELT DÉCALER LES ELTS INSÉRER LE 3ÈME ELT RETIRER LE 4ÈME ELT DÉCALER LES ELTS INSÉRER LE 4ÈME ELT
  • 56. Snineh Mohamed  Les algorithmes récursifs: ◦ Ils utilisent le paradigme « diviser pour régner ». ◦ Tri par fusion  Le tri par fusion consiste à trier récursivement les deux moitiés de la liste, puis à fusionner ces deux sous-listes triées en une seule. La condition d’arrêt à la récursivité sera l’obtention d'une liste à un seul élément, car une telle liste est déjà triée.  Description de l’algorithme :  Diviser la liste en deux sous-listes en la "coupant" par la moitié.  Trier récursivement chacune de ces deux sous-listes. Arrêter la récursivité lorsque les listes n'ont plus qu'un seul élément.  Fusionner les deux sous-listes triées en une seule. 58 ALGORITHMES DE TRI
  • 57. Snineh Mohamed  Tri par Fusion : 59 ALGORITHMES DE TRI 10 4 5 7 10 4 10 4 5 7 7 5 4 5 10 7 4 10 7 5
  • 58. Snineh Mohamed  Les algorithmes récursifs: ◦ Tri rapide  Le tri rapide consiste à positionner un par un par les éléments à leur place définitive en ne laissant à leur gauche que des éléments plus petits et à leur droite que des éléments plus grands. Les deux sous-listes obtenues par ce positionnement sont ensuite traitées de la même façon par récursivité. La condition d’arrêt à la récursivité sera l’obtention d'une liste à un seul élément, car cet unique élément est nécessairement au "bon" endroit. 60 ALGORITHMES DE TRI
  • 59. Snineh Mohamed 2 3 5 7 12 61 ALGORITHMES DE TRI 1ère itération 2ème itération 3ème itération 12 5 2 7 3 2 5 12 7 3 2 5 12 7 3 2 3 12 7 5 2 3 12 7 5 4ème itération 2 3 5 7 12  Les algorithmes récursifs: ◦ Tri rapide  Le tri rapide consiste à positionner un par un par les éléments à leur place définitive en ne laissant à leur gauche que des éléments plus petits et à leur droite que des éléments plus grands. Les deux sous-listes obtenues par ce positionnement sont ensuite traitées de la même façon par récursivité. La condition d’arrêt à la récursivité sera l’obtention d'une liste à un seul élément, car cet unique élément est nécessairement au "bon" endroit.