Vous êtes sur la page 1sur 12

Algorithmique avancée : listes, tris et arbres

I. Contextes scientifiques et définitions des concepts


1. Informatique
Le terme informatique est un néologisme proposé en 1962 par Philippe Dreyfus pour caractériser le
traitement automatique de l’information : il est construit sur la contraction de l’expression « infor-
mation automatique ». Ce terme a été accepté par l’Académie française en avril 1966.
Définition 1 : informatique
L’informatique est la science du traitement automatique et rationnel de l’information à l’aide d’un
ordinateur.
Définition 2 : ordinateur
Un ordinateur est une machine de traitement automatique de l’information. Il est capable d’acquérir
de l’information, de la stocker, de la transformer en effectuant des traitements quelconques, puis de
la restituer sous une autre forme.

L’informatique traite de deux aspects complémentaires : les programmes immatériels (logi-


ciel, software) qui décrivent un traitement à réaliser et les machines (matériel, hardware) qui exécu-
tent ce traitement.

Définition 3 : matériel informatique


Le matériel informatique est un ensemble de dispositifs physiques utilisés pour traiter automatique-
ment des informations.

Définition 4 : logiciel
Un logiciel est un programme ou ensemble de programme informatique conçu pour la résolution
d’un problème précis à partir d’un ordinateur.
Dans ce cours, nous ne nous intéresserons qu’aux aspects logiciels de l’informatique. Avant
l’écriture d’un programme, il faut avoir mis au point un algorithme de résolution du problème.

2. Algorithmique
Chacun de nous a déjà été confronté un jour à un mode d’emploi pour faire fonctionner un appareil
plus ou moins réticent et donc, consciemment ou non, a déjà exécuté un algorithme.
Définition 5 : algorithme
Un algorithme est une suite finie et ordonnée d’instructions décrivant de façon exhaustive le pro-
cessus de résolution d’un problème donnée dans un intervalle de temps donné. En d’autres termes,
PROPOSE PAR DIFFOUO TAZO EVARISTE 6
Algorithmique avancée : listes, tris et arbres

un algorithme est une suite finie d’opérations élémentaires constituant un schéma de calcul ou de
résolution d’un problème.
Définition 6 : algorithmique
L’algorithmique est la science qui a pour objectif la conception des algorithmes. En d’autres termes,
c’est l’ensemble des règles et techniques utilisées pour la définition et la conception 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é.

Définition 7 : 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.
Définition 8 : robustesse d’un algorithme
La robustesse d’un algorithme est son aptitude à se protéger de conditions anormales d’utilisation.
Définition 9 : réutilisabilité d’un algorithme
La réutilisabilité d’un algorithme est son aptitude à être réutilisé pour résoudre des tâches équiva-
lentes à celle pour laquelle il a été conçu.
Définition 10 : 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.
Définition 11 : 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.
Quand on définit un algorithme, celui-ci ne doit contenir que des instructions compréhen-
sibles par celui qui devra l’exécuter. La programmation a alors pour rôle de traduire cet algorithme
dans un langage « compréhensible » par l’ordinateur afin qu’il puisse exécuter l’algorithme auto-
matiquement

3. Programmation
Un algorithme exprime la structure logique d’un programme informatique et de ce fait est indépen-
dant du langage de programmation utilisé. Par contre, la traduction de l’algorithme dans un langage
particulier dépend du langage choisi et sa mise en œuvre dépend également de la plateforme d’exé-
cution.
Un programme n’est rien d’autre qu’une suite d’instructions, encodées en respectant de manière très
stricte un ensemble de conventions fixées à l’avance par un langage informatique. Le seul « langage
» que l’ordinateur puisse véritablement « comprendre » est donc très éloigné de ce que nous utilisons
nous-mêmes. C’est une suite de 0 et de 1 (les « bits », binary digit) traités par groupes de 8 (les «

PROPOSE PAR DIFFOUO TAZO EVARISTE 7


Algorithmique avancée : listes, tris et arbres

octets », byte), 16, 32, ou même 64. Pour « parler » à un ordinateur, il nous faudra donc utiliser des
systèmes de traduction automatiques, capables de convertir en nombres binaires des suites de ca-
ractères formant des mots-clés qui seront plus significatifs pour nous. Le système de traduction
proprement dit s’appellera interpréteur ou bien compilateur, suivant la méthode utilisée pour effec-
tuer la traduction.
Définition 12 : compilateur
Un compilateur est un programme informatique qui traduit un langage, le langage source, en un
autre, appelé le langage cible.
Définition 13 : interpréteur
Un interpréteur est un outil informatique (logiciel ou matériel) ayant pour tâche d’analyser et d’exé-
cuter un programme écrit dans un langage source.
Définition 14 : langage de programmation
Un langage de programmation est un langage informatique, permettant à un humain d’écrire un code
source qui sera analysé par un ordinateur.
Définition 15 : programmation
La programmation est l’activité de rédaction du code source d’un programme.

II. Résolution d’un problème en informatique ; Etape de production d’un algo-


rithme et structure générale d’un algorithme

1. Résolution d’un problème en informatique


Résoudre un problème en utilisant un ordinateur comporte plusieurs étapes : la spécification des
besoins, l’algorithme (l’analyse, la conception), le codage (dans un langage de programmation
donné), les tests et la maintenance.

PROPOSE PAR DIFFOUO TAZO EVARISTE 8


Algorithmique avancée : listes, tris et arbres

2. Les étapes de production d’un algorithme

La démarche à suivre pour produire un algorithme comporte plusieurs étapes.


i. Définition des objectifs
Pour produire un algorithme, il est important de répondre aux questions suivantes :
Qu’est-ce qu’on me demande de faire ?
Quelle est le travail à fournir ?
En général, l’énoncé fait ressortir les objectifs à atteindre.

ii. Spécification d’une méthode de résolution


Il s’agit ici de dire sans entrer dans les détails comment le problème sera résolu ? (Méthode de
résolution). La spécification peut se faire par des courtes phrases en langage naturel (français, an-
glais…). Elle peut aussi se faire à l’aide des symboles mathématiques et dans ce cas on parle de
spécification formelle.
En général, il est important ici de répondre aux questions suivantes :
Comment dois-je procéder pour résoudre ce problème ?
Quelle est la méthode à utiliser pour obtenir la solution à ce problème ?

iii. Mise en œuvre de la méthode retenue


Elle consiste à donner les structures de données appropriées. Une structure de données est un objet
qui renferme les informations nécessaires au déroulement de l’algorithme avant, pendant et après la
réalisation de cet algorithme.
Le choix d’une structure de données dépend généralement de l’ordre des valeurs des données
à manipuler et de la structuration des informations recueillies sur le problème. Il est possible de
résoudre le même problème avec des structures de données complètement différentes. Le problème
est alors de savoir quelle est l’avantage de la structure de données utilisée par rapport aux autres.
Cette phase se termine par l’écriture d’un algorithme à l’aide d’un pseudo-langage de programma-
tion. Il ne s’agit bien sûr pas d’un langage de programmation de haut niveau tel que le Pascal, le C
ou le Java mais plutôt d’un langage visuel.

iv. Le test de l’algorithme


Il a pour objectif de vérifier que cet algorithme marche et qu’il fournit des bons résultats. Il faut
toujours vérifier à l’aide de quelques données choisies au hasard. Le test se fait en déroulant l’algo-
rithme à la main avec un stylo et un papier. Cette démarche est appelée trace de l’algorithme. La
trace de l’algorithme représente les différentes valeurs des différents objets d’un programme durant
son exécution.
Il faut cependant noter que le fait qu’un algorithme fonctionne correctement avec quelques données
ne suffit pas pour confirmer sa validité.
PROPOSE PAR DIFFOUO TAZO EVARISTE 9
Algorithmique avancée : listes, tris et arbres

La démarche de la conception d’un algorithm e est généralement résumée dans un dossier


appelé dossier algorithmique.

3. La structure générale d’un algorithme


Un algorithme est caractérisé par :
Une partie entête : Définie par le terme réservé ALGORITME suivi du nom de l’algo-
rithme.
Une partie déclarative : qui permet à l’ordinateur de réserver un espace mémoire à chaque
nom d’objet. Les objets peuvent être des constantes, des variables ou des types prédéfinis.
Une partie du corps de l’algorithme : qui comporte la suite des instructions contenu entre
deux termes DEBUT et FIN.
La structure générale d’un algorithme est la suivante :
Algorithme Nom_algorithme
Déclarations (constantes; variables ; type)
Début
Instruction 1;

Instruction n;
Fin

III. Les instructions élémentaires et les structures de contrôle


1. Instructions élémentaires
i. Les variables

Une variable est un objet informatique qui associe un nom à une valeur qui peut éventuellement
varier au cours du temps.

Chaque variable est typée et ce type indique l’ensemble dans lequel un objet prend ses valeurs. Il
indique aussi les opérations qui doivent être réalisées sur cet objet. On distingue plusieurs types :

Le type entier
C’est le type qui prend ses valeurs dans l’ensemble Z. Les opérations possibles ici sont : l’addition,
la soustraction, la multiplication et la division. Un entier occupe 4 octets en mémoire.
PROPOSE PAR DIFFOUO TAZO EVARISTE 10
Algorithmique avancée : listes, tris et arbres

Le type réel
C’est le type qui prend ses valeurs dans l’ensemble R. Les opérations possibles ici sont : l’addition,
la soustraction, la multiplication et la division. Un réel occupe 8 octets en mémoire.
Le type caractère
C’est l’ensemble constitué des lettres (’a’, ‘b’ … ’z’, ’A’, ’B’ … ‘Z’), des chiffres (‘0’, ‘1’ … ’9’)
et des caractères spéciaux (’#’, ’*’ … ‘+’). La seule opération possible ici est la concaténation +
(Exemple : ’a’+ ‘b’ = ‘ab’ et ’3’+ ‘4’ = ‘34’). Un caractère occupe 1 octet en mémoire.
Le type chaine de caractère
C’est une combinaison des caractères placés entre côtes ("abc" , "toto2" … "Bonjour","", "PAPA
"). La seule opération possible ici est la concaténation + (Exemple : "Bonjour"+" "+" PAPA"=
"Bonjour PAPA"). Une chaine de caractère occupe 256 octets en mémoire.
Le type booléen
C’est l’ensemble constitué des valeurs {Vrai, Faux} ou {1, 0}. Les opérations possibles ici sont :
ET, OU, NON. Un booléen occupe 1 octet en mémoire

Remarque : Une donnée qui ne change plus de valeur une fois initialisé dans un algorithme est
appelée une constante.

ii. Les Entrées-sorties (lecture ou la saisie - écriture ou l’affichage)

NB : AFFICHER peut-être remplacer par ECRIRE.

NB : SAISIR peut-être remplacer par LIRE.


PROPOSE PAR DIFFOUO TAZO EVARISTE 11
Algorithmique avancée : listes, tris et arbres

2. Les structures de contrôle


i. Les structures conditionnelles
Structure SI … ALORS

Structure SI … ALORS …SINON

Structure SELON

ii. Les structures répétitives

Structure TANTQUE … FAIRE

PROPOSE PAR DIFFOUO TAZO EVARISTE 12


Algorithmique avancée : listes, tris et arbres

Structure FAIRE … TANTQUE ou REPETER … TANTQUE

Structure POUR … FAIRE

IV. Les sous programmes


1. Définition et déclaration sous-programmes (procédures et fonctions)

PROPOSE PAR DIFFOUO TAZO EVARISTE 13


Algorithmique avancée : listes, tris et arbres

2. Représentation détaillée des sous-programmes


i. Les fonctions

ii. Les procédures

PROPOSE PAR DIFFOUO TAZO EVARISTE 14


Algorithmique avancée : listes, tris et arbres

3. Appel et transmission des paramètres d’un sous-programme

PROPOSE PAR DIFFOUO TAZO EVARISTE 15


Algorithmique avancée : listes, tris et arbres

4. Notion de variables locales et de variables globales

5. Récursivité
Une fonction ou une procédure est dite récursive si elle s’appelle elle-même : on parle alors d’appel
récursif de la fonction.

PROPOSE PAR DIFFOUO TAZO EVARISTE 16


Algorithmique avancée : listes, tris et arbres

Explication des exemples précédents

PROPOSE PAR DIFFOUO TAZO EVARISTE 17

Vous aimerez peut-être aussi