Vous êtes sur la page 1sur 31

Algorithmique et structure des

données
Elaboré par Mme Elkamel Hager
Jamoussi.hager@gmail.com

FSM de Monastir 2020-2021


1ière année Licence en Sciences d’Informatique
Semestre 1
H. Jamoussi Elkamel , FSM 1
ASD1 – 2020 – S1
Introduction
Vous savez calculer. Un ordinateur aussi ! Mais
 connaissez-vous les mécanismes de calcul utilisés ?
 Etes-vous vraiment sûr que le résultat affiché, à la fin
du calcul, soit juste ?
 Combien de temps devrez-vous attendre la fin du
calcul ?
 N’y a t-il pas un moyen d’obtenir plus vite le résultat?

Etudier l’algorithmique, c’est d’apporter des


réponses à ces questions.
L’objet de ce cours est d’étudier l’algorithmique pour pouvoir
répondre aux questions déjà posées.
H. Jamoussi Elkamel , FSM 2
ASD1 – 2020 – S1
Plan du cours
• Chapitre 1 : Introduction à l’algorithmique
• Chapitre 2 : Types de données, constantes, Variables
• Chapitre 3 : Structures conditionnelles
• Chapitre 4 : Structures itératives
• Chapitre 5 : Les tableaux
• Chapitre 6 : Procédures et fonctions
• Chapitre 7 : La Récursivité
• Chapitre 8 : Les algorithmes de recherche
• Chapitre 9 : Les algorithmes de Tri
• Chapitre 10 : Les enregistrements
• Chapitre 11 : Les pointeurs

H. Jamoussi Elkamel , FSM 3


ASD1 – 2020 – S1
Introduction
D’où vient le mot algorithme et algorithmique?
Muhammad Ibn Mûsâ al-Khuwârizmî (780-850)
mathématicien, géographe, astrologue et astronome perse

H. Jamoussi Elkamel , FSM 4


ASD1 – 2020 – S1
Chapitre 1: Introduction à
l’algorithmique

ASD1 – 2020 – S1 H. Jamoussi Elkamel , FSM


Qu'est ce qu'un algorithme?
• On part toujours d’un problème à résoudre
 Comment faire un gâteau au chocolat ?
 Comment trier dans l’ordre croissant une suite de nombres
entiers ?
 Comment additionner 2 nombres ?
• Un problème possède
• Des données en entrées
• et une sortie qui est le résultat à atteindre
• On veut qu’une machine résout le problème à notre place,
c’est pourquoi on doit expliquer à la «machine» comment
elle doit s'y prendre on écrit un algorithme
H. Jamoussi Elkamel , FSM 6
ASD1 – 2020 – S1
Définitions : Algorithme
• Algorithme : Un algorithme est une suite finie
d’opérations élémentaires (instructions) qui transforment
un ensemble des objets en entrées (données) en objets en
sorties(résultat) et obéissant à un enchainement déterminé
constituant un schéma de calcul ou schéma de résolution
d’un problème.

• Un algorithme doit vérifier les 2 critères :


 La terminaison
 et l’exactitude.
H. Jamoussi Elkamel , FSM 7
ASD1 – 2020 – S1
Définitions : Algorithme

H. Jamoussi Elkamel , FSM 8


ASD1 – 2020 – S1
Définitions : Algorithme

H. Jamoussi Elkamel , FSM 9


ASD1 – 2020 – S1
Définitions : Algorithme

H. Jamoussi Elkamel , FSM 10


ASD1 – 2020 – S1
Définitions : Algorithme
une séquence une permutation de
de n nombres la séquence de départ
(a1, a2, . . . , an) ( a’1 , a’2 , . . . , a’n)
telle que
a’1 ≤ a’2 ≤ . . . ≤ a’n

On parcourt la séquence de gauche à


droite.
Pour chaque élément aj :
On l’insère à sa position dans une
nouvelle séquence ordonnée contenant
les éléments le précédant dans la
séquence.
On s’arrête dés que le dernier élément a
été inséré à sa place dans la séquence.

Suite finie d’instructions


H. Jamoussi Elkamel , FSM 11
ASD1 – 2020 – S1
Définitions : Algorithme
• Si les opérations d’un algorithme s’exécutent
en séquence, on parle d’algorithme
séquentiel;
• Si les opérations d’un algorithme s’exécutent
en parallèle, on parle d’algorithme parallèle;
• Si les tâches s’exécutent sur un réseau de
processeurs, on parle d’algorithme réparti
ou distribué.

H. Jamoussi Elkamel , FSM 12


ASD1 – 2020 – S1
Définitions : Algorithme
• Un algorithme est exécuté par une machine
abstraite (aucune limite physique). Il est
indépendant de la machine physique.
• Lors d’écriture d’un algorithme, il n’est pas
nécessaire de choisir un langage de
programmation.
• Un algorithme est écrit dans un pseudo-code.

H. Jamoussi Elkamel , FSM 13


ASD1 – 2020 – S1
Définitions : Programme

• Un Programme est la traduction


(l’implémentation) d’un algorithme au moyen
d’un langage de programmation donné (sur une
architecture donnée). Il s’agit de la mise en œuvre
du principe.
• Par exemple lors des la programmation on s’occupe
parfois de la gestion de la mémoire (allocation
dynamique en c) qui est un problème d’implémentation
ignoré au niveau algorithmique.

H. Jamoussi Elkamel , FSM 14


ASD1 – 2020 – S1
Définitions : Algorithmique
o L’algorithmique est la science des algorithmes.
o L’algorithmique s’intéresse à l’art de construire des
algorithmes ainsi qu’à caractériser leur
 validité : l’aptitude à réaliser exactement la tâche pour laquelle il a
été conçu.
 Robustesse : l’aptitude à se protéger de conditions anormales
d’utilisation.
 réutilisabilité : l’aptitude à être réutilisé pour résoudre des tâches
équivalentes à celle pour laquelle il a été conçu.
 Complexité: le nombre d’instructions élémentaires à exécuter pour
réaliser la tâche pour laquelle il a été conçu.
 Efficacité: son aptitude à utiliser de manière optimale les ressources
du matériel qui l’exécute.
H. Jamoussi Elkamel , FSM 15
ASD1 – 2020 – S1
Définitions : problème de calcul
• Un problème de calcul est un problème qui peut être
résolu en utilisant un algorithme

• Un Problème est une relation binaire liant des


d’objets (objets en entrées et objets en sortie).

• L’énoncé du problème spécifie la relation désirée entre


les objets à l’entrée et ceux à la sortie.

H. Jamoussi Elkamel , FSM 16


ASD1 – 2020 – S1
Processus de résolution d’un problème de calcul
1. Comprendre l’énoncé informel : reconnaître
l’entrée et la sortie du problème.
2. Décrire l’énoncé formel : spécifier le problème.
3. Etablir un algorithme : mettre en équation le
problème pour transformer l’entrée en sortie.
4. Traduire l’algorithme en un programme.
5. Exécuter le programme : calcul effectif et
obtention des résultats.

H. Jamoussi Elkamel , FSM 17


ASD1 – 2020 – S1
Exemple d’énoncer d’un problème
Enoncé informel
On souhaite calculer et afficher , à partir d’un prix
hors taxe saisi, le montant de TVA ainsi que le prix
TTC
Le prix TTC dépend de :
• Du prix HT
• Du taux de TVA de 20,6

H. Jamoussi Elkamel , FSM 18


ASD1 – 2020 – S1
Exemple d’énoncer d’un problème
Enoncé informel
On souhaite calculer et afficher, à partir d’un prix
hors taxe saisi, le montant TVA ainsi que le prix
TTC
Le prix TTC dépend de :
• Du prix HT
• Du taux de TVA de 20,6

Traitement à réaliser
H. Jamoussi Elkamel , FSM 19
ASD1 – 2020 – S1
Exemple d’énoncer d’un problème
Enoncé informel
On souhaite calculer et afficher, à partir d’un prix
hors taxe saisi, le montant TVA ainsi que le prix
TTC
Le prix TTC dépend de :
• Du prix HT
• Du taux de TVA de 20,6

Données en entrée
H. Jamoussi Elkamel , FSM 20
ASD1 – 2020 – S1
Exemple d’énoncer d’un problème
Enoncé informel
On souhaite calculer et afficher , à partir d’un prix
hors taxe saisi, le montant TVA ainsi que le prix
TTC
Le prix TTC dépend de :
• Du prix HT
• Du taux de TVA de 20,6

Données en sortie
H. Jamoussi Elkamel , FSM 21
ASD1 – 2020 – S1
Spécification d’un problème
• Spécifier un problème de calcul consiste à :
 Définir son entrée avec les préconditions :
les noms et le type de données des objets en entrée et les
préconditions que l’on exige d’eux.
 Définir sa sortie avec les postconditions:
les noms et le type de données des objets en sortie et les
postconditions résumant le résultat auquel on doit
aboutir.
 Et la relation entre la sortie et les entrées.
• La spécification d’un problème doit être
générique 22
ASD1 – 2020 – S1 H. Jamoussi Elkamel , FSM
Spécification d’un problème
Enoncé informel
On souhaite calculer et afficher , à partir d’un prix hors taxe saisi, la
valeur de TVA ainsi que le prix TTC. Le montant TTC dépend de :
• Du prix HT et • Du taux de TVA de 20,6
Enoncé formel = spécification
Problème calculTVA
Entrée : PrixHT un réel et TVA une constante = 20,6
précondition: (PrixHT > 0)
Sortie : le réel MontantTVA= PrixHT * TVA/100
et le réel PrixTTC = PrixHC + MontantTVA
postcondition (MontantTVA > 0) et (PrixTTC >0)
• La sortie est exprimée en fonction des entrées
H. Jamoussi Elkamel , FSM 23
ASD1 – 2020 – S1
Spécification d’un problème
Exemples de Spécification d’un problème :

Enoncé informel
calculer la puissance d’un réel x par un entier.
Enoncé formel = spécification
Problème Puissance
Entrée : un réel x et un entier n
précondition: (x ≠ 0)
Sortie : le réel xn
• La sortie est exprimée en fonction des entrées
H. Jamoussi Elkamel , FSM 24
ASD1 – 2020 – S1
Spécification d’un problème
Exemples de Spécification d’un problème :
Enoncé informel
Décomposer un entier en facteurs premiers
Enoncé formel
Problème FacteurPremier
Entrée : un entier n
précondition: (n > 1)
Sortie : un facteur propre premier de n.

Cette relation, entre les sorties et les entrées, n’est pas


nécessairement fonctionnelle, comme pour ce problème.

H. Jamoussi Elkamel , FSM 25


ASD1 – 2020 – S1
Ecriture d’un algorithme
• Généralement, on utilise une série de conventions appelée « pseudo-
code », qui ressemble à un langage de programmation.
• Un algorithme possède toujours un nom qui est le nom du problème
à résoudre
• Un algorithme possède deux parties
– Une partie déclarative : pour déclarer les variables et définir les
constantes (objets à manipulés)
– Une partie instructive: qui contient les ordres (les instructions) pour
résoudre un problème.
• Le seules instructions de bases d’un algorithme sont :
– l’affectation de variables
– la lecture / écriture
– les tests
– les boucles
H. Jamoussi Elkamel , FSM 26
ASD1 – 2020 – S1
Double problématique de l’algorithmique
1. Trouver une méthode de résolution du problème
exacte (algorithme) ou approchée (heuristique).
 Soient trois nombres réels a, b et c, quelles sont les
solutions de l’équation ax2+bx+c ? (Résultat bien connu.)
 Soient six nombres réels a, b, c, d, e et f, quelles sont les
solutions de l’équation ax5+bx4+cx3+dx2+ex+ f ? (Pas de
méthode générale)
2. Trouver une méthode efficace
en temps d’exécution et en espace mémoire
surtout lorsque le problème est de taille très
grande.
H. Jamoussi Elkamel , FSM 27
ASD1 – 2020 – S1
Double problématique de l’algorithmique
• Savoir résoudre un problème est une chose, le résoudre
efficacement est une autre.
• Exemple : Problème Puissance
Problème Puissance
Entrée : un réel x ≠ 0 et un entier (n ≥ 0)
Sortie : le réel xn

• Méthode 1 : xn = x .x.x…….x
n fois
• Méthode 2 :
Si n=0 xn = 1
Sinon xn = x . x(n-1)

H. Jamoussi Elkamel , FSM 28


ASD1 – 2020 – S1
Qualité d’un algorithme
• Qualité d’écriture :
– Bien structuré
– Indenté
– Modulaire
– Avec des commentaires pertinents
• La simplicité : un algorithme simple est facile à comprendre, à
implémenter et généralement à prouver.
• La terminaison : Le résultat doit être atteint en un nombre fini
d’étapes :
– Pas de boucles infinies
– Il faut étudier tous les cas possibles des données.
• La validité :
– Le résultat doit répondre au problème demandé
– Un jeu d’essais ne prouve jamais qu’un algorithme soit correct, il peut
seulement prouver qu’il est faux.
H. Jamoussi Elkamel , FSM 29
ASD1 – 2020 – S1
Qualité d’un algorithme
• Performance :
• Etude du coût en temps (complexité temporelle) : cette caractéristique
dépend à la fois de l’algorithme et des structures de données retenues. Il
n’est pas matériellement possible de résoudre un problème à l’aide d’un
algorithme nécessitant quelques milliards d’années pour s’exécuter. On peut
aussi préférer un algorithme qui s’exécutera en une seconde plutôt qu’en une
heure.
De plus, la ressource temps d’un ordinateur est souvent précieuse et on
cherche alors à l’économiser. On verra que, d’un algorithme à l’autre, et
d’une structure de données à l’autre, les temps d’exécution peuvent être très
différents.
• Etude du coût en mémoire (complexité spatiale) : La place prise en
mémoire va dépendre à la fois de l’algorithme et des structures de données
retenues; il ne faut pas dépasser les capacités de la mémoire de la machine
sur laquelle l’algorithme s’exécutera et, si la place prise en mémoire est
importante, on peut être conduit à limiter la taille des problèmes considérés.
H. Jamoussi Elkamel , FSM 30
ASD1 – 2020 – S1
Conclusion
• Pour conclure, citons « Un bon algorithme est
comme un couteau tranchant il fait exactement ce
que l’on attend de lui, avec un minimum d’efforts.
L’emploi d’un mauvais algorithme pour résoudre un
problème revient à essayer de couper un steak avec
un tournevis : vous finirez sans doute par obtenir un
résultat digeste, mais vous accomplirez beaucoup
plus d’efforts que nécessaire, et le résultat aura peu
de chances d’être esthétiquement satisfaisant. »

H. Jamoussi Elkamel , FSM 31


ASD1 – 2020 – S1

Vous aimerez peut-être aussi