Chap1 Intro Algo
Chap1 Intro Algo
Chap1 Intro Algo
&
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
Dr T. Mesmin DANDJINOU 3
Objectifs pédagogiques du cours
Objectifs spécifiques (1/2)
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
Dr T. Mesmin DANDJINOU 10
Objectifs pédagogiques du chapitre
Objectifs spécifiques
Dr T. Mesmin DANDJINOU 11
Contenu
Dr T. Mesmin DANDJINOU 12
Introduction à l’algorithmique
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
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)
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
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 ?
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
Pc*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 */
SSr+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
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