Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Chap1 Intro Algo

Télécharger au format ppt, pdf ou txt
Télécharger au format ppt, pdf ou txt
Vous êtes sur la page 1sur 52

Algorithmique

&
structures de données statiques
(Algo1111)

Dr T. Mesmin DANDJINOU 1
Conditions générales de travail
 Volume (Cours = 24 h ; TD = 24 h ; TPE = 32 h)
 Assiduité et ponctualité, travail de groupe recommandé
 Consignes sur les téléphones portables
 Etat de veille/somnolence
 Disponibilité du support de cours
 Réalisation des devoirs (au moins 2 devoirs, après chaque
vingtaine d’heures)
 Devoir sur table (questions de cours, exercices)
 Fraudes et tentatives de fraudes
Dr T. Mesmin DANDJINOU 2
Objectifs pédagogiques du cours
Objectif général

A la fin du cours, l’étudiant est capable d’écrire un


algorithme simple

Dr T. Mesmin DANDJINOU 3
Objectifs pédagogiques du cours
Objectifs spécifiques (1/2)

A la fin du cours, l’étudiant est capable :


• de comprendre ce qu’est un algorithme
• de comprendre ce qu’est un programme
• de comprendre le processus de réalisation d’un
programme (cycle de développement du logiciel)
• d’utiliser des variables simples dans des
expressions de calcul et de mouvement de valeurs
Dr T. Mesmin DANDJINOU 4
Objectifs pédagogiques du cours
Objectifs spécifiques (2/2)

A la fin du cours, l’étudiant est capable :


• d’utiliser des structures de contrôle
• d’utiliser des structures de données de base
• d'utiliser des modes de passage de paramètres
• d’écrire et d’utiliser des procédures et des fonctions
• d’utiliser la récursivité lors de l’écriture de fonctions
Dr T. Mesmin DANDJINOU 5
Contenu du cours
• Chapitre 1 – Introduction à l’algorithmique
• Chapitre 2 – Variables, constantes et instructions de
base en algorithmique
• Chapitre 3 – Structures de contrôle en algorithmique
• Chapitre 4 – Structures de données de base en
algorithmique
• Chapitre 5 – Procédures, fonctions et modes de
passage de paramètres
• Chapitre 6 – Fonctions récursives
Dr T. Mesmin DANDJINOU 6
Bibliographie
• Introduction à l’algorithmique, 2004, Thomas H.
Cormen, Charles E. Leiserson, Ronald L. Rivest
et Clifford Stein, Dunod, Paris ;
• Wirth N., Algorithmes et structures de données,
Eyrolles, Paris, 1989 ;
• Biondi J., Clavel G., Introduction à la
programmation, algorithmique et langage ,
Masson, Paris, 1987.

Dr T. Mesmin DANDJINOU 7
Questions ?

Dr T. Mesmin DANDJINOU 8
Chapitre 1
Introduction à l’algorithmique

Dr T. Mesmin DANDJINOU 9
Objectifs pédagogiques du chapitre
Objectif général

A la fin du chapitre, l’étudiant est capable de


comprendre ce qu’est un algorithme et de
dérouler la démarche de sa réalisation

Dr T. Mesmin DANDJINOU 10
Objectifs pédagogiques du chapitre
Objectifs spécifiques

A la fin du chapitre, l’étudiant est capable :


• de comprendre ce qu’est un algorithme
• de dérouler le processus d’écriture d’un algorithme
• de comprendre ce qu’est un programme
• de comprendre le processus de réalisation d’un
programme (cycle de développement du logiciel)

Dr T. Mesmin DANDJINOU 11
Contenu

• Notions d’algorithmique et d’algorithme


• Notions de données dans l’énoncé d’un problème
• Processus de description d’un algorithme
• Notion de programme
• Processus de réalisation/développement d’un
programme

Dr T. Mesmin DANDJINOU 12
Introduction à l’algorithmique

Partie 1 - De l’algorithme au programme

Dr T. Mesmin DANDJINOU 13
Introduction à l’algorithmique
• Algorithmique : domaine de
l’informatique consacré à l’étude des
algorithmes
• Un algorithme : description d’un
cheminement (succession de traitements)
conduisant à la résolution d’un problème
donné

Dr T. Mesmin DANDJINOU 14
Introduction à l’algorithmique
• Poser un problème à résoudre suppose l’expression,
l’énoncé, la formulation de ce problème
• A partir de l’énoncé du problème on peut repérer :
les données en entrée : ce sont généralement des
valeurs connues au départ
les données en sortie/résultat : ce sont des valeurs
calculées obtenues à la fin de la résolution du problème
les données intermédiaires/temporaires : elles sont à
mi-chemin entre les deux précédentes catégories de
valeurs car produites par des traitements intermédiaires
Dr T. Mesmin DANDJINOU 15
Introduction à l’algorithmique
Algorithme
Données en entrée

Données en sortie
Succession
d‘étapes de
traitement pouvant
produire et utiliser
des données
intermédiaires

NB : le nombre de données varie selon le problème à résoudre

Dr T. Mesmin DANDJINOU 16
Introduction à l’algorithmique
• Donnée en entrée = valeur fournie par l’utilisateur à
l’algorithme qui le stocke dans une variable en entrée
(input), ou bien une variable supposée déjà initialisée

Entrées Sorties
(à l’extérieur (à l’extérieur
de l’algo) de l’algo)

•Donnée en sortie/résultat = valeur calculée par


l’algorithme et rangée dans une variable en sortie/résultat
(output) attendue comme un résultat pour l’utilisateur
Dr T. Mesmin DANDJINOU 17
Introduction à l’algorithmique
Une variable : est comparable à un récipient dans lequel il
est possible de ranger une valeur donnée à un instant
donné.

Au fil du temps, une variable peut être amenée


à conserver de nombreuses valeurs, mais
jamais deux à la fois.
Dr T. Mesmin DANDJINOU 18
Introduction à l’algorithmique
• La variable en entrée
- est généralement employée au sein de l’algorithme
pour calculer des valeurs intermédiaires ou des valeurs
en sortie/résultat
- n’est pas modifiée lors d’opérations réalisées au sein
de l’algorithme

C’est comme si l’on ne faisait qu’y « lire » une donnée : on


parle de « variable en lecture seule ».
Dr T. Mesmin DANDJINOU 19
Introduction à l’algorithmique
• La variable en sortie/résultat
- est généralement employée pour communiquer en
dehors de l’algorithme un résultat calculé dans
l’algorithme à partir des variables en entrée et des
variables intermédiaires
- a son contenu modifié lors d’opérations réalisées au
sein de l’algorithme
C’est comme si l’on y « écrivait » le résultat : on parle de
« variable en écriture seule ».

Dr T. Mesmin DANDJINOU 20
Introduction à l’algorithmique
• La variable en entrée/sortie
- est généralement employée pour servir successivement
à communiquer une valeur à l’algorithme et un résultat
calculé renvoyé à l’extérieur de l’algorithme
- a son contenu initial utilisé pour faire des calculs et qui
sera à la fin modifié afin de servir de résultat transmis
en dehors de l’algorithme
C’est comme si l’on y « lisait » et y « écrivait » : on parle
de « variable en lecture/écriture ».

Dr T. Mesmin DANDJINOU 21
Introduction à l’algorithmique
• Parfois l’énoncé du problème (cahier des charges)
est incomplet et mérite qu’on y ajoute des précisions
(compléments d’informations) avant qu’une solution ne
puisse être apportée
• Le problème posé par un utilisateur ou un client dans
ses termes à lui doit être traduit dans des termes
compréhensibles par les informaticiens : c’est la phase
de spécification du problème conduisant à la phase de
spécification de l’algorithme où l’on dit ce que fait
l’algorithme sans détailler comment il le fait

Dr T. Mesmin DANDJINOU 22
Introduction à l’algorithmique
Enoncé d’un problème (cahier des charges)
Précisions apportées à l’énoncé du problème
Spécification du problème
Repérage des données en entrée
Repérage des données en sortie
Repérage des données en entrée/sortie
Repérage des données intermédiaires
Description de la méthode

Dr T. Mesmin DANDJINOU 23
Introduction à l’algorithmique

• Écriture/rédaction de l’algorithme : usage d’un


langage de description très proche de celui que
nous avons l’habitude d’employer (français +
expressions mathématiques, graphiques)

• Indépendance d’un algorithme de tout langage


de programmation

Dr T. Mesmin DANDJINOU 24
Introduction à l’algorithmique
• Pour résoudre un problème, généralement
plusieurs algorithmes peuvent être proposés
• Le meilleur algorithme est celui qui utilise au
mieux les ressources (temps de calcul, nombre de
lignes décrivant l’algorithme, taille des objets
requis, efforts de compréhension à faire, etc.)
• Il existe des problèmes pour lesquels on ne
connaît pas d’algorithme

Dr T. Mesmin DANDJINOU 25
Introduction à l’algorithmique
• Pour résoudre un problème, généralement on
va le découper/décomposer en problèmes plus
petits à résoudre : c’est la politique du « diviser
pour régner » qui est employée
• Deux approches de réalisation de la solution :
 approche descendante (top-down)
 approche ascendante (bottom-up)

Dr T. Mesmin DANDJINOU 26
Introduction à l’algorithmique
• Dans l’approche descendante (la plus souvent
employée) on part d’une solution globale qui va
au fur et à mesure être détaillée : on dit qu’on
procède par raffinements successifs
• Dans l’approche ascendante, c’est à partir du
niveau le plus fin des solutions existantes qu’on
démarre, et puis par des assemblages successifs
on réalise la solution globale

Dr T. Mesmin DANDJINOU 27
Introduction à l’algorithmique
• Exemple 1 : Alice et Bob ont chacun une parcelle. La
parcelle de Bob est carrée tandis que celle d’Alice est
circulaire. Connaissant la taille du côté de la parcelle de
Bob, quel doit être le rayon de celle d’Alice pour qu’on
puisse parler d’égalité des pourtours ?

a) Spécification : Soit c la longueur du côté de la


parcelle de Bob et soit r le rayon de la parcelle d’Alice.
Il faut calculer la valeur que devrait avoir le rayon de la
parcelle d’Alice pour qu’on puisse parler d’égalité des
pourtours.
Dr T. Mesmin DANDJINOU 28
Introduction à l’algorithmique
b) Données/variables en entrée :
• c est de type réel, correspond à la longueur du côté
de la parcelle carrée de Bob ;
c) Données/variables en sortie : néant

d) Données/variables en entrée-sortie :
• r est de type réel, correspond à la longueur du rayon
que devrait avoir la parcelle d’Alice pour qu’il y ait
égalité des pourtours ;
e) Données/variables intermédiaires
• P est de type réel, correspond au pourtour de la
parcelle carrée de Bob ;
Dr T. Mesmin DANDJINOU 29
Introduction à l’algorithmique
f) Description de l’enchaînement logique
Début
Pc*4 /* calcul du périmètre du carré */
r  P/(2*) /* calcul du rayon du cercle dont la
circonférence correspond au périmètre du carré */
Fin
ATTENTION !!!
Les instructions sont exécutées du début à la fin les unes après les
autres sauf lors de la rencontre des instructions de rupture de séquence.
Dr T. Mesmin DANDJINOU 30
Introduction à l’algorithmique
• Exemple 2 : On demande de calculer la
superficie de la figure géométrique dont le
schéma est donné ci-après :
Demi cercle de
diamètre c

c Triangle
équilatéral
b

d
a
Dr T. Mesmin DANDJINOU 31
Introduction à l’algorithmique
a) Spécification : Soit S la superficie recherchée
de la figure polyforme donnée. Elle est
constituée :
• d’un demi-cercle de diamètre c,
• d’un rectangle de longueur b et de largeur c,
• d’un trapèze de grande base b, de petite base a
et de hauteur d,
• d’un triangle équilatéral de côté c.

Dr T. Mesmin DANDJINOU 32
Introduction à l’algorithmique
b) Données/variables en entrée
• a est de type réel, correspond à la petite base du
trapèze constituant la figure polyforme ;
• b est de type réel, correspond à la longueur du
rectangle et à la grande base du trapèze constituant la
figure polyforme ;

Dr T. Mesmin DANDJINOU 33
Introduction à l’algorithmique
b) Données/variables en entrée (suite)
• c est de type réel, correspond au diamètre du demi-
cercle, au côté du triangle équilatéral et à la largeur du
rectangle constituant la figure polyforme ;
• d est de type réel, correspond à la hauteur du trapèze
constituant la figure polyforme ;

Dr T. Mesmin DANDJINOU 34
Introduction à l’algorithmique
c) Données/variables en sortie
Néant
d) Données/variables en entrée-sortie
 S est de type réel, correspond à la superficie de la
figure polyforme ;

Dr T. Mesmin DANDJINOU 35
Introduction à l’algorithmique
e) Données/variables intermédiaires
• Sr est de type réel, correspond à la superficie du
rectangle ;
• Sc est de type réel, correspond à la superficie du demi
cercle ;
• St est de type réel, correspond à la superficie du
trapèze ;
• Ste est de type réel, correspond à la superficie du
triangle équilatéral ;
Dr T. Mesmin DANDJINOU 36
Introduction à l’algorithmique
f) Description de l’enchaînement logique
Début
Sr c*b /* calcul de la superficie du rectangle */
Sc(*c2/4)/2 /* calcul de la superficie du demi cercle */
St(b+a)*d/2 /* calcul de la superficie du trapèze */
Ste ((c2)*(3)1/2)/4 /* calcul de la superficie du triangle
équilatéral */
SSr+Sc+St+Ste /* superficie de la figure polyforme */
Fin Dr T. Mesmin DANDJINOU 37
Introduction à l’algorithmique
Travail à faire
•Trouver des problèmes pour lesquels on n’a aucune
donnée en entrée et aucune donnée en sortie
• Trouver des problèmes pour lesquels on n’a aucune
donnée en entrée et une donnée en sortie
• Trouver des problèmes pour lesquels on a une donnée
en entrée et aucune donnée en sortie

Dr T. Mesmin DANDJINOU 38
Introduction à l’algorithmique
Travail à faire
• Trouver des problèmes pour lesquels on a une donnée
en entrée et une donnée en sortie
• Trouver des problèmes pour lesquels on a deux
données en entrée et une donnée en sortie
• Trouver des problèmes pour lesquels on a une donnée
en entrée et deux données en sortie
• Trouver des problèmes pour lesquels on a deux
données en entrée et deux données en sortie
Dr T. Mesmin DANDJINOU 39
Introduction à l’algorithmique
• PROGRAMME = Résultat de la traduction d’un
algorithme dans un langage de programmation
que comprend un ordinateur
• De nombreux langages de programmation
existent (langages de bas niveau et langages haut
niveau ou évolués, langages de programmation
impérative/procédurale, langages de programmation
fonctionnelle, langages de programmation objet,
langages de programmation événementielle, etc.)

Dr T. Mesmin DANDJINOU 40
Introduction à l’algorithmique

Partie 2 : Du programme aux résultats de l’exécution

Dr T. Mesmin DANDJINOU 41
Compilation & interprétation
 Les programmes écrits par les programmeurs
sont appelés PROGRAMMES SOURCES car rédigés
dans des langages de programmation
 Ces programmes sources sont ensuite :
 soit traduits en PROGRAMMES
EXECUTABLES pour pouvoir être exécutés par
les ordinateurs, après une succession de
traitements
 soit directement fournis à des
INTERPRETEURS
Dr T. Mesmin DANDJINOU 42
Production du code exécutable
 Le processus de production d’un code exécutable
(code binaire) est généralement employé quand :
 les programmes correspondants sont de grande
taille
 on souhaite que le temps d’exécution soit petit
on ne désire pas mettre le code source du
programme à la disposition de l’utilisateur final
 Les exécutions ne nécessitent plus aucune
traduction car se faisant à partir du code exécutable
Dr T. Mesmin DANDJINOU 43
Interprétation
 Le processus d’interprétation est employée
lorsque
 l’utilisateur souhaite écrire rapidement un petit
programme jetable (maquette)
 le source peut sans aucun problème être
communiqué à l’utilisateur
 A chaque exécution du programme, chacune des
instructions est analysée et traduite avant exécution,
et le résultat de cette traduction n’est pas conservée
dans un fichier exécutable
Dr T. Mesmin DANDJINOU 44
Phases du développement de programmes

Édition de texte

Débogage

Compilation

Chargement et exécution

Édition de liens

Dr T. Mesmin DANDJINOU 45
Édition de texte
 Éditeur de texte = programme de
toto.pas saisie de texte par l’utilisateur sans mise
en forme. Ce texte va correspondre à un
programme écrit dans un langage de
calcul.cpp programmation (respect de la syntaxe
d’écriture du programme et des
instructions)
affiche.asm
 Un fichier source résulte de cette
opération et porte un nom dont
tata.c l’extension rappelle le langage de
programmation employé
Dr T. Mesmin DANDJINOU 46
Compilation
 Compilateur = programme
lisant un programme écrit dans
un premier langage – langage
calcul.cpp source – et le traduisant en un
programme équivalent écrit dans
un autre langage – langage cible
ou objet -
Compilateur  Lors de ce processus les
erreurs rencontrées sont
signalées à l’utilisateur dans un
fichier d’erreurs de syntaxe
 A chaque langage de
calcul.err
programmation est associé un
calcul.obj compilateur.
Dr T. Mesmin DANDJINOU 47
Édition de liens  Tous les liens irrésolus
(variables, étiquettes, fonctions
Biblio1
connues ailleurs que dans le
programme compilé) sont
calcul.obj Biblio2 traités, grâce à l’utilisation des
bibliothèques et autres fichiers
renfermant du code objet
fourni à l’éditeur de liens qui
Éditeur de liens est un programme
 Le fichier exécutable
résultant contient le
Autres fichiers calcul.exe programme traduit en langage
(map, err, …) machine (code binaire)
Dr T. Mesmin DANDJINOU 48
Chargement et exécution
 Chargeur = programme ayant pour rôle d’installer
en mémoire centrale le code exécutable d’un
programme dont on connaît le nom : trouver la place,
copier le code en mémoire centrale avec les
adaptations liées aux translations, préparer le
contexte d’exécution
 Un programme exécutable  un nom de fichier
renfermant du code exécutable
 Lorsque le processeur sera attribué au processus
correspondant au programme chargé, celui-ci
s’exécutera et produira des résultats
Dr T. Mesmin DANDJINOU 49
Débogage
 Débogueur = programme ayant pour rôle d’aider à
la mise au point d’un autre programme en cours de
développement (détection des erreurs de logique
appelés en anglais « bugs »), en fournissant la
possibilité de suivre pas à pas
 le déroulement de chacune des instructions
constituant le programme testé
 l’évolution du contenu des variables, des
structures de données et autres zones en mémoire
centrale employées dans le programme

Dr T. Mesmin DANDJINOU 50
Introduction à l’algorithmique
 Il existe des environnements de développement
intégrés EDI où tous ces outils (éditeurs de texte,
compilateurs, éditeurs de liens, chargeurs,
débogueurs, gestionnaire de dépendances) sont
mis à la disposition des programmeurs pour leur
faciliter le travail
 Exemples : Microsoft Visual C++, Borland
Jbuilder, CodeBlocks, etc.

Dr T. Mesmin DANDJINOU 51
Introduction à l’algorithmique

QUESTIONS ???

Dr T. Mesmin DANDJINOU 52

Vous aimerez peut-être aussi