Vous êtes sur la page 1sur 319

M5 - ALGORITHMES & PROGRAMMATION I

Licence informatique (L1)

Reproduction interdite
Présentation DE L’ENSEIGNANT

M. Olyvier NZIGHOU
Master 2 Gestion de Projets Informatiques de l’Université de
Strasbourg.
Enseignant vacataire à l’IST, EPL, IAI, ESIITECH
Tél. : 066049840 / 077684285
Email : olyvier.nzighou@gmail.com

Reproduction interdite
Objectifs du cours

 Apprendre les concepts de base de l'algorithmique et de la


programmation impérative.

Muhammad Ibn  Être capable de mettre en œuvre ces concepts pour analyser
Musa Al-Khwarizmi
des problèmes simples et écrire les algorithmes
correspondants.

Reproduction interdite 3
Evaluation

 Contrôles (40%) inclus


 Devoirs
Muhammad Ibn
Musa Al-Khwarizmi
 Interrogations
 TP
 Examen final (60%)

Reproduction interdite 4
Enseignement

 Cours Magistral
Muhammad Ibn
Musa Al-Khwarizmi  TD/TP

Reproduction interdite 5
COMPETENCES À ACQUERIR

 Savoir transcrire un problème en algorithmes

Muhammad Ibn  Savoir traduire un algorithme en programme


Musa Al-Khwarizmi

 Savoir manipuler des structures de données

 Etc.

Reproduction interdite 6
Contenu du cours

 Concepts de base

Muhammad Ibn
 Expression et instructions élémentaires
Musa Al-Khwarizmi
 Structures de contrôle
 Tableaux & Chaîne de caractères
 Enregistrements et pointeurs
 Fonctions et procédures

Reproduction interdite 7
ALGORITHMES & PROGRAMMATION I

Muhammad Ibn
Musa Al-Khwarizmi
CHAPITRE I Introduction A
L’INFORMATIQUE

Reproduction interdite 8
QU’EST-CEQUE L’INFORMATIQUE

 L'informatique est un domaine d'activité scientifique,


Muhammad Ibn technique, et industriel concernant le traitement
Musa Al-Khwarizmi
automatique de l'information numérique par l'exécution
de programmes informatiques par des machines
appelées ordinateurs.

Reproduction interdite 9
QU’EST-CEQUE L’INFORMATIQUE

 Les champs d'application de l’informatique peuvent être


Muhammad Ibn
séparés en deux branches :
Musa Al-Khwarizmi

 Théorique : concerne la définition de concepts et


modèles ;
 Pratique : s'intéresse aux techniques concrètes de
mise en œuvre.

Reproduction interdite 10
QU’EST-CEQUE L’INFORMATIQUE

 En Informatique, il y’a deux axes d’études :

Muhammad Ibn 1. Le hardware : Matériels (concrets)


Musa Al-Khwarizmi

2. Le software : Logiciels (abstrait)

Reproduction interdite 11
QU’EST-CEQUE L’INFORMATIQUE

 Informatique : Informa = Information

tique = Automatique
Muhammad Ibn
Musa Al-Khwarizmi
 L'informatique est la science qui permet de traiter
automatiquement et rationnellement les
informations à l'aide d’une machine électronique (par
exemple, un ordinateur.

Reproduction interdite 12
QU’EST-CEQUE L’INFORMATIQUE

 Un ordinateur est un appareil électronique qui traite les


informations dans une unité centrale selon un programme
enregistré en mémoire centrale.

Muhammad Ibn
 L’Informatique est la Science du traitement
Musa Al-Khwarizmi automatique et rationnel de
l'information, considérée comme le support des
connaissances et des communications.
 L’ensemble des applications de cette science, mettent en
œuvre des matériels (ordinateurs) et des
logiciels.

Reproduction interdite 13
DOMAINE D’APPLICATION DE L’INFORMATIQUE

 Pratiquement dans tous les domaine qu’on peut


imaginer :
 Bureautique : traitement de texte, tableur, ...

Muhammad Ibn
 Sciences : prévisions, météo, simulation ...
Musa Al-Khwarizmi

 Contrôle : Commande de voiture, Piloter des


avions, les machines, les robots, …
 Médecine : imagerie médicale, opérations guidées
par ordinateur...
 Communication : Internet, Téléphonie, ...
…
Reproduction interdite 14
QU’EST-CEQUE L’INFORMATION
 L’information est l’élément de connaissance susceptible d'être
codé pour être conservé et traité.
 Codage de l’information :
1. L’ordinateur travaille avec des informations codées en bits.
2. Le bit correspond à un état 0 ou 1.
Muhammad Ibn
Musa Al-Khwarizmi

3. L’association de 8 bits, permet de coder 256 informations


(caractères).
Par exemple :
 01000001  Codification de la lettre A
 01000011  Codification de la lettre C

Reproduction interdite 15
QU’EST-CEQUE L’INFORMATION

 Unité de capacité:  1024 Go  1 To (Téra octets)


 8 bits  1 octet  1024 To  1 Po (Péta octets)
Muhammad Ibn
Musa Al-Khwarizmi
 1024 octets  1 Ko (Kilo octets)  1024 Po  1 Eo (Exa octets)
 1024 Ko  1 Mo (Méga octets)  1024 Eo  1 Zo (Zettaoctets)
 1024 Mo  1 Go (Giga octets)  1024 Zo  1 Yo (Yottaoctets).

Reproduction interdite 16
QUE SIGNIFIE LE « TERME » TRAITEMENT

 Un traitement est l'ensemble de toutes les opérations


que l'on peut effectuer sur les informations (saisie,
modification, mémorisation,
transmission…) afin de les rendre manipulables et
Muhammad Ibn
Musa Al-Khwarizmi
utilisables.
 En général, un traitement peut être schématiser comme suit
:

Reproduction interdite 17
QU’EST-CE QU’UN ORDINATEUR ?

 Un ordinateur est une machine (ensemble de circuits


électronique) qui permet le traitement automatique
de l’information :

Muhammad Ibn 1. Acquisition, stockage : acquérir et conserver


Musa Al-Khwarizmi
de l’information,

2. Traitement : effectuer des calcul et exécuter des


actions,

3. Restitution : restituer les informations stockées.

Reproduction interdite 18
QU’EST-CE QU’UN ORDINATEUR ?

 Permet de lier « information »  « données » (0 ou


1)
 Différents types d’informations : valeurs numériques
Muhammad Ibn
Musa Al-Khwarizmi (entiers non signés, entiers signés, réels,….), textes,
images, sons, vidéo… : codage avec des 0 ou 1.
Le terme « automatique » signifie que l’ordinateur
lui-même va exécuter certaines opérations définies à
l’avance (sans intervention humaine). Par exemple,
Guichet automatique bancaire,…

Reproduction interdite 19
QU’EST-CE QU’UN ORDINATEUR ?

 Types d’ordinateurs :
 Toute machine capable de manipuler des
Muhammad Ibn informations binaires peut être qualifiée d'ordinateur.
Musa Al-Khwarizmi

 Le type d'ordinateur le plus présent sur le marché est


le PC (Ordinateur personnel), toutefois il existe
d'autres types d'ordinateurs (n'étant pas des PC).

Reproduction interdite 20
QU’EST-CE QU’UN ORDINATEUR ?

Muhammad Ibn
Musa Al-Khwarizmi

Reproduction interdite 21
COMPOSANTS DE BASE D’UN ORDINATEUR

Muhammad Ibn
Musa Al-Khwarizmi

Reproduction interdite 22
LE PROCESSEUR (CPU)

 Il faut se rappeler que le cœur de l’ordinateur


c’est le processeur, c’est vraiment lui qui fait
tous les traitements;

Muhammad Ibn  Le processeur n’est pas intelligent (il ne pense


Musa Al-Khwarizmi
pas, il calcule).

Reproduction interdite 23
LE PROCESSEUR

Le processeur exécute un programme qui est


une liste d’instructions, ces dernières sont
exécutées séquentiellement.
Muhammad Ibn
Musa Al-Khwarizmi
Ces instructions du programme qui sont écrites dans un
certain langage de programmation (exemple le C), sont
ensuite codées en binaire qui est le langage machine
(binaire) qui va être exécuté par le processeur.

Reproduction interdite 24
LE FONCTIONNEMENT D’UN ORDINATEUR

Muhammad Ibn
Musa Al-Khwarizmi

Reproduction interdite 25
ALGORITHMES & PROGRAMMATION I

Muhammad Ibn
Musa Al-Khwarizmi CHAPITRE II
LE CONCEPT D’ALGORITHME

Reproduction interdite 26
DEFINITION
 Contexte

1. Au début, on a un problème réel à résoudre informatiquement.


2. On construit un algorithme,
Muhammad Ibn 3. puis un programme pour obtenir les résultats après exécution.
Musa Al-Khwarizmi

Problème réel

Algorithme

Programme

Résultats (solution du
problème)

Reproduction interdite 27
RESOLUTION D’UN PROBLEME REEL AVEC UN PROGRAMME INFORMATIQUE

On utilise un langage de programmation comme le langage C

Muhammad Ibn On utilise un IDE comme Dev-C++


Musa Al-Khwarizmi

Reproduction interdite 28
RESOLUTION D’UN PROBLEME REEL AVEC UN PROGRAMME INFORMATIQUE

 En informatique, pour arriver d'un problème réel à une


solution pouvant être exécutée par un ordinateur, il faut
suivre les étapes suivantes :
 Analyser le problème : définir avec précision les
Muhammad Ibn
informations dont on dispose et les résultats à obtenir.
 Déterminer les méthodes de résolution : il
Musa Al-Khwarizmi

s'agit de déterminer la suite des opérations à effectuer pour


obtenir
à partir des données la solution au problème posé. Cette
suite d'opérations constitue un algorithme.
 Traduire l'algorithme dans un langage de
programmation.
Reproduction interdite 29
QU’Est-ce QU’UN ALGORITHME INFORMATIQUE

 Un algorithme est une suite finie et non ambigüe


d’instructions et d’opérations permettant de résoudre une
classe de problème.
Muhammad Ibn
Musa Al-Khwarizmi
 Le mot algorithme vient d’Al-Khwârizmî

 Le terme algorithme fut inventé par le mathématicien


Mohammed Ibn Musa Al-Khwârizmî, dans le
courant du IXème siècle.

Reproduction interdite 30
QU’Est-ce QU’UN ALGORITHME INFORMATIQUE

 Un algorithme est un ensemble d’opérations


ordonné et fini devant être suivi dans
l’ordre pour résoudre un problème.
Muhammad Ibn
Musa Al-Khwarizmi  Un algorithme a pour but de résoudre un problème et
donc de produire un résultat.

 Un algorithme est une succession d’instructions à


enchaîner dans un ordre bien précis,
permettant de résoudre un problème de façon
systématique. Il est écrit dans un langage compréhensible
par tous.

Reproduction interdite 31
POURQUOI UTILISER UN ALGORITHME

 Pour effectuer une tâche, quelle qu’elle soit, un ordinateur à besoin


d’un programme informatique.

 Or, pour fonctionner, un programme informatique doit indiquer à


Muhammad Ibn l’ordinateur ce qu’il doit faire avec précision étape par étape.
Musa Al-Khwarizmi

 L’ordinateur exécute ensuite le programme, en suivant chaque


étape de façon automatique pour atteindre l’objectif.

 Or, il faut aussi dire à l’ordinateur comment faire ce qu’il doit


faire. C’est le rôle de l’algorithme
informatique.

Reproduction interdite 32
INPUT ET OUTPUT D’UN ALGORITHME

 Les algorithmes informatiques fonctionnent par le biais

D’entrées (input) et
Muhammad Ibn
Musa Al-Khwarizmi

Sortie (output).

Ils reçoivent l’input, et appliquent chaque étape de


l’algorithme à cette information pour générer un
ouput.

Reproduction interdite 33
INPUT ET OUTPUT D’UN ALGORITHME

Muhammad Ibn
Musa Al-Khwarizmi

Input Outpu
t

Traitement

Reproduction interdite 34
Structure GENERALE d’un algorithme
Algorithme <Nom de l’algorithme> L’entête
Constantes
<Liste des constantes avec leurs valeurs>

La partie
Types déclarativ
<définition des types définis par
e
Muhammad Ibn l’utilisateurs>
Musa Al-Khwarizmi

Variables
<Liste de variables suivis de leurs types>

DEBUT
Le corps de
<Séquence d’actions>
l’algorithme
FIN

Reproduction interdite 35
COMPOSANTS D’UN ALGORITHME
Un algorithme est composé de trois (3) parties principales :

 L’entête : Cette partie sert à donner un nom à l’algorithme. Elle est


précédée par le mot algorithme ce nom n’influe en rien le bon
déroulement de l’algorithme. En général, il faut donner des noms qui
Muhammad Ibn permettent au lecteur d’avoir une idée de ce que fera l’algorithme qu’il
Musa Al-Khwarizmi
lira.

 La partie déclarative : Dans cette parie, on déclare les


différents objets que l’algorithme utilise (constantes, variables, etc.)

 Le corps de l’algorithme : Il est composée d’une séquence


d'actions faisant appel à des opérations de base de l'ordinateur . Il est
délimitée par les mots DEBUT et FIN.
Reproduction interdite 36
COMPOSANTS D’UN ALGORITHME

 Une action peut être une :


 Action d'affectation,
Muhammad Ibn
Musa Al-Khwarizmi  Action d'entrée/sortie,
 Action de contrôle conditionnelle simple ou à choix
multiple,
 Action de répétition en nombre de fois connu ou inconnu à
l'avance

Reproduction interdite 37
PROPRIETES D’UN ALGORITHME

On peut énoncer les cinq propriétés suivantes que doit satisfaire un


algorithme :

1.Généralité : un algorithme doit toujours être conçu de


Muhammad Ibn manière à envisager toutes les éventualités d’un traitement.
Musa Al-Khwarizmi

2.Finitude : Un algorithme doit s’arrêter au bout d’un temps


fini.

3.Définitude : toutes les opérations d’un algorithme doivent


être définies sans ambiguïté

Reproduction interdite 38
PROPRIETES D’UN ALGORITHME
4. Répétitivité : généralement, un algorithme contient
plusieurs itérations, c’est-à-dire des actions qui se répètent
plusieurs fois.

Muhammad Ibn
5. Efficacité : Idéalement, un algorithme doit être conçu de
Musa Al-Khwarizmi
telle sorte qu’il se déroule en un temps minimal et qu’il
consomme un minimum de ressources.

Remarque :
Attention, certains problèmes n’admettent pas de solution
algorithmique exacte et utilisable. On utilise dans ce cas des
algorithmes heuristiques qui fournissent des solutions approchées.

Reproduction interdite 39
Convention D’ECRITURE : L’ORGANIGRAMME

 Historiquement, plusieurs types de notation ont


représenté les algorithmes ;
Muhammad Ibn
Musa Al-Khwarizmi
 Notamment une représentation graphique (carrés,
losanges, parallélogrammes…) qu’on appelait des
organigrammes

Reproduction interdite 40
Convention D’ECRITURE : L’ORGANIGRAMME

Muhammad Ibn
Musa Al-Khwarizmi

Reproduction interdite 41
Convention D’ECRITURE : le pseudo-code ou LDA

 Une série de conventions appelées « pseudo-


code » avec une syntaxe qui ressemble à un
Muhammad Ibn
langage de programmation;
Musa Al-Khwarizmi

 Ce pseudo-code est aussi appelé LDA (Langage de


Description d’Algorithme);

 Son avantage est de pouvoir être facilement


transcrit dans un langage de programmation.

Reproduction interdite 42
Convention D’ECRITURE : le pseudo-code ou LDA

 Ce pseudo-code peut varier d’un ouvrage à un autre puisqu’il


est purement conventionnel (Aucune machine n’est sensé le
reconnaitre).
 Pour déclarer les variables et les constantes : var ou
Muhammad Ibn variables et const ou constantes
Musa Al-Khwarizmi

 Affectation : signe égal = ou 


 Point virgule ; ou pas à la fin de chaque instruction
 FINSI ou fsi ou Fin si
 Commentaires : {commentaire} ou
(*commentaire*) ou %commentaire%

Reproduction interdite 43
Convention D’ECRITURE : le pseudo-code ou LDA

Algorithme Produit_2_nombres L’entête de


l’algorithme
Variables a, b : entier La partie déclarative

DEBUT
Ecrire("saisir un entier a : ")
Lire(a)
Muhammad Ibn Ecrire("saisir un entier b : ")
Musa Al-Khwarizmi
Lire(b)
SI ((a = 0) OU (b = 0)) ALORS
Le corps de
Ecrire ("Le produit est nul") l’algorithme
SINON SI ((a < 0) ET (b < 0) OU (a > 0) ET (b > 0))
ALORS
Ecrire ("Le produit est
positif")
SINON Ecrire ("Le produit est
négatif")
FINSI
FINSI
FIN Reproduction interdite 44
NOTION DE PROGRAMME

 Un programme est une suite ordonnée d’instructions


élémentaires écrites dans un langage de
programmation traduisant un algorithme.
Muhammad Ibn
Musa Al-Khwarizmi  Chacune de ses instructions spécifie l'opération que doit
exécuter l'ordinateur.

Reproduction interdite 45
NOTION DE PROGRAMME
 Le langage de programmation est l'intermédiaire entre
l'humain et la machine, il permet d'écrire dans un langage proche
de la machine mais compréhensible par l'humain les opérations
que l'ordinateur doit effectuer.

Muhammad Ibn
 Un langage de programmation est un langage
Musa Al-Khwarizmi
comprenant un ensemble de caractères, de symboles et de mots
régis par des règles qui permettent de les assembler, utilisé pour
donner des instructions à une machine.
 Il existe plusieurs langages de programmation, la plupart d'entre
eux étant réservés à des domaines spécialisés. Exemple : Fortran,
C, C++, Java, Pascal , Python…

Reproduction interdite 46
LANGAGE DE PROGRAMMATION
 QUESTION : Puisque l’ordinateur ne comprend que le langage
binaire (langage machine) comment va-t-il faire pour exécuter
un programme écrit dans un langage de programmation
(langage évolué) ?
 REPONSE : Le programme écrit en langage évolué (C, C++,
Muhammad Ibn
Musa Al-Khwarizmi

Python) sera traduit en langage machine par un


programme particulier appelé traducteur (compilateurs ou
interpréteur).

Reproduction interdite 47
LANGAGE DE PROGRAMMATION
 Compilateur :
 Traduit une fois pour toutes les programmes dans leur
ensemble :
tout le programme est fourni au compilateur pour la traduction
Muhammad Ibn
et son résultat sera un nouveau fichier autonome, c'est-à-dire
Musa Al-Khwarizmi
qui n'aura plus besoin d’un programme autre que lui pour
s'exécuter; on dit d'ailleurs que ce fichier est exécutable peut
être soumis au processeur pour traitement.
 Un langage de programmation pour lequel un compilateur est
disponible est appelé un langage compilé.

Reproduction interdite 48
LANGAGE DE PROGRAMMATION
 Interpréteur :
 Traduit les programmes instruction par instruction et
soumet chaque instruction traduite au processeur pour
Muhammad Ibn
exécution.
Musa Al-Khwarizmi

 Un langage de programmation pour lequel un interpréteur


est disponible est appelé un langage interprété

Reproduction interdite 49
LANGAGE DE PROGRAMMATION

Muhammad Ibn
Musa Al-Khwarizmi

Reproduction interdite 50
ALGORITHMES & PROGRAMMATION I

Muhammad Ibn
CHAPITRE III
variables & ACTIONS DE BASE
Musa Al-Khwarizmi

Reproduction interdite 51
C’est quoi une variable ?
 Au cours de l’exécution d’un programme informatique on aura
besoin de stocker des informations en mémoire :

 Saisies par l’utilisateur au clavier

Muhammad Ibn  Résultat d’un programme (intermédiaire ou


Musa Al-Khwarizmi
définitif)

 Ces informations sont stockées dans des variables

 On peut à tout moment durant l’exécution de l’algorithme


changer la valeur de la variable en écrasant
l’ancienne à condition que la nouvelle valeur soit du
même type ou compatible avec.

Reproduction interdite 52
Les types de DONNEES
 Les données sont contenues dans des cases mémoires de
l’ordinateur;
 La longueur de la case mémoire dépend du type de
données qu’elle contient.

Muhammad Ibn
 Il existe cinq (5) types de base ou primitifs avec lesquels on
Musa Al-Khwarizmi peut construire d’autres types dits « types construits »
Type de base de variable Exemple de valeurs à Mot clé
contenir
Entier -50; 0; 600; 1000 Entier
Numérique
Réel 20; -4; 36,123; 3,14 Réel
Caractère ‘a‘; ‘D‘; ‘+‘; ‘1‘ Car
Alphanumérique Chaîne de ˝Algorithme˝; ˝variable˝; Chaîne
caractères

Booléen VRAI; FAUX Booléen

Reproduction interdite 53
Les types NUMERIQUES

Type numérique Taille


Plage de valeurs mémoire
Byte(octet) 0 à 255 1 octet
Entier simple -32 768 à 32 767 2 octets
Muhammad Ibn
Musa Al-Khwarizmi Entier long -2 147 483 648 à 2 147 483 4 octets
647
Réel simple -3,40*10-38 à 3,40*1038 4 octets
Réel double 1,7*10-308 à 1,7*10308 8 octets
Réel double long 3,4*10-4932 à 3,4*104932 10 octets

Reproduction interdite 54
CHOIX DES IDENTIFICATEURS

 Le choix des noms de variables est soumis à quelques règles :

 Un nom de variable doit commencer par une lettre alphabétique

Muhammad Ibn
 exemple valide : A1 exemple invalide : 1A
Musa Al-Khwarizmi

 Un nom de variable doit être constitué uniquement de lettres, de


chiffres et du soulignement ( _ ) (Eviter les caractères de
ponctuation et les espaces)

 valides : Info2022, Info_2022,


InfoAlgoProg
 invalides : Info 2022, Info-2022,
Info;2022
Reproduction interdite 55
DECLARATION DES VARIABLES
 La déclaration des variables se fait dans la partie
déclarative

 Le but est de réserver une case mémoire (allouer de l’espace


mémoire) en précisant ce que l’on veut y mettre : c’est ce qu’on
Muhammad Ibn
Musa Al-Khwarizmi appelle le type de la variable
Syntaxe de déclaration Exemples
variable Pi : Réel
variable prenom : Chaîne

Variable nomDeLaVariable : variable age : Entier


Type variable i,j,k : Entier
variable c : car
variable trouve : Booléen

Reproduction interdite 56
Les constantes

 Servent à donner un nom à une valeur

 La case mémoire portant ce nom ne peut recevoir aucune autre


donnée durant l’exécution de l’algorithme
Muhammad Ibn
Musa Al-Khwarizmi

Syntaxe de déclaration Exemples


constante Pi = 3,14
constante taux = 0,15
Constante nomDeLaConstante = valeur
constante trouve =
VRAI

Reproduction interdite 57
EXPRESSION & OPERATEURS
 Une expression peut être une valeur, une variable ou une opération
constituée de variables reliées par des opérateurs :
 Exemples : 1, b, a*2, a+3*b-c, …
 L'évaluation de l'expression fournit une valeur unique qui est le résultat
Muhammad Ibn
Musa Al-Khwarizmi
de l'opération
 Les opérateurs dépendent du type de l'opération, ils peuvent être :
 des opérateurs arithmétiques :
 +, -, *, /, div, modulo, ^ (puissance)
• a = b * q + r avec r < b, q = a div b, r = a
modulo b
 17 div 5 = 3 et 17 modulo 5 = 2
Reproduction interdite 58
PRIORITE DES OPERATEURS
 Pour les opérateurs arithmétiques donnés ci-dessus, l'ordre de
priorité est le suivant (du plus prioritaire au moins prioritaire) :
1) ^ (élévation à la puissance)
2) * , / , div (multiplication, division, division
Muhammad Ibn
Musa Al-Khwarizmi
entière)
3) % (modulo)
4) + , - (addition, soustraction)
 exemple : 2 + 3 * 7 vaut 23
 En cas de besoin (ou de doute), on utilise les parenthèses pour
indiquer les opérations à effectuer en priorité
 exemple : (2 + 3) * 7 vaut 35
Reproduction interdite 59
L’instruction d’affectation

 C’est une instruction qui modifie le contenu


d’une case mémoire en lui affectant une
valeur (d’où son nom…)
Muhammad Ibn
Musa Al-Khwarizmi  Elle permet de copier une donnée d’un endroit à un
autre, c’est-à-dire recréer une entité à un endroit
différent.

 L’instruction d’affectation consiste à attribuer une


valeur à une variable.

Reproduction interdite 60
L’instruction d’affectation
 Permet d’attribuer des valeurs aux variables en utilisant le symbole suivant

Syntaxe Exemples de déclaration Exemples d’affectation
Variable PI : Réel PI  3,14
Muhammad Ibn
Variable Prenom : Chaîne Prenom  ˝Sylvie˝
Musa Al-Khwarizmi

Variable age : Entier age  25


nomDeLaVariable  Variable i, j, k : i  0, j  5, k  -
valeur Entier 1, i  j
Variable c : car C  ‘A‘
Variable Trouve : Trouve  VRAI
Booléen

Reproduction interdite 61
Les types d’affectation : Type 1
 Possibilité d’affecter une valeur de même
type à une variable

Nom_variable  valeur_de_meme_type

Muhammad Ibn Exemples :


Musa Al-Khwarizmi
PI  3,14
Prenom  ˝Sylvie˝
Age  24
i  0
Facture_payee  VRAI
Choix  ‘Y‘;

Reproduction interdite 62
Les types d’affectation : Type 2
 Possibilité d’affecter une variable de même
type à une variable

Nom_variable  variable_de_meme_type
Muhammad Ibn
Musa Al-Khwarizmi Exemples :
Prenom1˝Snoopy˝
Prenom2˝Daniel˝
Prenom2prenom1

Reproduction interdite 63
Les types d’affectation : Type 3

 Possibilité d’affecter une expression de type


compatible à une variable :

Muhammad Ibn
 C’est le cas quand elles sont du même type ou quand
Musa Al-Khwarizmi
l’expression est entière et la variable réelle.
réel  entier (juste)

 Mais quand la variable est entière et l’expression


réelle.
entier  réel (faux)

Reproduction interdite 64
Les types d’affectation : Type 3

Nom_variable  expression_retournant_meme_type

Exemples :
Muhammad Ibn k  i+j
Musa Al-Khwarizmi

Consommation  nouvel_index –
ancien_index
Moyenne  somme_notes/nombre_eleves
TVA  HT*0,2

Reproduction interdite 65
EXERCICE SIMPLE SUR L’affectation
 Donnez les valeurs des variables A, B et C après exécution
des instructions suivantes ?

Variables A, B, C: entier
DEBUT
Muhammad Ibn A  -3
Musa Al-Khwarizmi
B  7
A  B
B  A-5
C  A + B
C  B – A
FIN

Reproduction interdite 66
EXERCICE SIMPLE SUR L’affectation
 Donnez les valeurs des variables A et B après exécution
des instructions suivantes ?

Variables A, B : entier
DEBUT
Muhammad Ibn
Musa Al-Khwarizmi
A  4
B  9
A  B
B  A
FIN

 Les deux dernières instructions permettent-elles


d’échanger les valeurs de A et B ?

Reproduction interdite 67
EXERCICE SIMPLE SUR L’affectation

 Ecrire un algorithme permettant d’échanger les valeurs de


Muhammad Ibn
Musa Al-Khwarizmi
deux variables A et B

Reproduction interdite 68
Instructions d’ENTREES / SORTIES

 Pour que l’on puisse « interagir » avec


un ordinateur, on utilise dans un algorithme
des instructions d’Entrée et des
instructions de Sortie.
Muhammad Ibn
Musa Al-Khwarizmi
 Les E/S ou I/O permettent

 L’interaction

 Le dialogue

 La communication avec la machine

Reproduction interdite 69
Instructions d’ENTREES / SORTIES

 Entrées (Input) : il est possible de rentrer des


valeurs dans un algorithme
Muhammad Ibn
Musa Al-Khwarizmi
 Sortie (Output) : de même, en réponse,
l’algorithme peut renvoyer une valeur qui est
généralement le résultat de l’algorithme.

Reproduction interdite 70
Instructions d’ENTREES / SORTIES

 On appelle donc :

Entrée : ce que l’algorithme reçoit

Muhammad Ibn Sortie : ce que l’algorithme émet


Musa Al-Khwarizmi

 On a affaire à deux (2) acteurs :

L’utilisateur (user)

L’ordinateur (la machine)

Reproduction interdite 71
Instructions d’ENTREES / SORTIES

 Les Entrées (Input) : en informatique, quand on


parle d’entrée pour un algorithme, cela fait
généralement référence à des données entrées au
clavier par l’utilisateur :
Muhammad Ibn
Musa Al-Khwarizmi
Lire(N)
 L’instruction Lire(N) indique que l’algorithme attend
que l’on rentre une valeur au clavier.
 Une fois la valeur saisie, celle-ci sera affectée à la variable
N.
 Tant qu’aucune valeur n’est saisie, l’algorithme ne passe
pas à la suite.
Reproduction interdite 72
Instructions d’ENTREES / SORTIES

 Les Sorties (Output) : en informatique,


quand on parle de sorties pour un algorithme, cela
fait généralement référence à des données
Muhammad Ibn
affichées à l’écran par l’algorithme
Musa Al-Khwarizmi
(ordinateur).

 Lire(V)
 L’instruction Lire(V) indique que la valeur stockée
dans la variable V va être affichée à l’écran.

Reproduction interdite 73
Lecture

 lecture  Saisir au clavier et affecter ce qui est saisi aux variables déjà
définies

Syntaxe Exemples
Muhammad Ibn Lire(a)
Lire(nom_variable)
Musa Al-Khwarizmi
Lire(TVA)
Lire(note)

Reproduction interdite 74
ecriture

 Ecriture  Afficher à
l’écran

Cas Syntaxe Exemples


Muhammad Ibn 1 Ecrire(˝message˝) Ecrire(˝Entrez la valeur de a :˝)
Musa Al-Khwarizmi
2 Ecrire(nom_variable) Ecrire(moyenne)
3 Ecrire(˝message˝,nom_variable) Ecrire(˝votre note est :˝,moyenne)

Reproduction interdite 75
Exercice

Muhammad Ibn
Musa Al-Khwarizmi  Écrire un algorithme qui demande à l’utilisateur de saisir deux
nombres entiers et de calculer leur somme et l’afficher à
l’écran.

Reproduction interdite 76
Solution de l’exercice
Algorithme Somme
Variables a, b, S : Entier

DEBUT
Muhammad Ibn
Ecrire(˝Saisir a :˝)
Musa Al-Khwarizmi
Lire(a)
Ecrire(˝Saisir b :˝)
Lire(b)
S  a + b
Ecrire(˝La somme est :˝,S)
FIN

Reproduction interdite 77
ALGORITHMES & PROGRAMMATION I

Muhammad Ibn
CHAPITRE IV
Musa Al-Khwarizmi
Les STRUCTURES DE CONTROLE

Reproduction interdite 78
INTRODUCTION
 En programmation impérative, une structure de
contrôle est une commande qui contrôle l’ordre dans
lequel les différentes instructions d’un algorithme
ou d’un programme informatique sont exécutées.
Muhammad Ibn
Musa Al-Khwarizmi
 On appelle aussi cet enchaînement d’instructions le
flot d’exécution d’un programme.

 Un programme informatique est une suite


d’instructions. Le processeur, est chargé de
mémoriser l’adresse de la prochaine instruction à
exécuter.

Reproduction interdite 79
INTRODUCTION

 Les structures de contrôle décrivent l’enchaînement des


instructions. Elle permettent des traitements
Muhammad Ibn séquentiels, conditionnels ou répétitifs
(itératifs).
Musa Al-Khwarizmi

 Ce sont des structures qui permettent de contrôler


l’ordonnancement des actions, c’est-à-dire dans quel ordre
elles doivent être exécutées.

Reproduction interdite 80
INTRODUCTION
 Il existe trois (3) structures de contrôles
différentes :
 La séquence
Muhammad Ibn
Musa Al-Khwarizmi  La sélection (Structure Conditionnelle)
 La répétition ( Les boucles)
 Un algorithme est une combinaison de séquences,
répétitions, de sélection et d’actions propres de
l’opérateur (actions élémentaires)

Reproduction interdite 81
LA SEQUENCE

 La séquence consiste à exécuter les actions les


unes à la suite des autres

Muhammad Ibn
DEBUT
Musa Al-Khwarizmi
action 1
action 2

action n
FIN

Reproduction interdite 82
LA SEQUENCE

 Chaque action, action i est une action élémentaire


ou composée.
Muhammad Ibn
Musa Al-Khwarizmi
 Les actions composées sont des combinaisons de
séquences, de répétitions, de sélection et d’action
propres de l’opérateur (actions élémentaires).

Reproduction interdite 83
LA SELECTION (STRUCTURE CONDITIONELLE)

 les instructions conditionnelles sont des instructions


qui permettent d’exécuter un ensemble
d’instructions si et seulement si une certaine
Muhammad Ibn condition est vérifiée.
Musa Al-Khwarizmi

 La plupart des structures de contrôle utilisent la


notion de condition (expression booléenne).

 Une condition a une valeur qui est soit vraie soit


fausse.

Reproduction interdite 84
LA SELECTION (STRUCTURE CONDITIONELLE)

 Si l’évaluation de l’expression booléenne donne


VRAI, alors l’instruction est exécutée, sinon on
exécute l’instruction suivante.
Muhammad Ibn
Musa Al-Khwarizmi
 Pour déterminer la réalité de cette valeur on utilise :

 Les opérateurs de comparaison :

 Les opérateurs booléens (logiques) : ET, OU,


NON

Reproduction interdite 85
ALTERNATIVE SI…ALORS…SINON
 On utilisera la forme
suivante :
SI (condition) ALORS
Muhammad Ibn
Instruction(s) 1
SINON
Musa Al-Khwarizmi

Instruction(s) 2
FINSI

Reproduction interdite 86
ALTERNATIVE SI…ALORS…SINON

 Si la condition est vraie, se sont les instructions 1


qui seront exécutées
Muhammad Ibn
Musa Al-Khwarizmi  Si la condition est fausse, se sont les instructions
2 qui seront exécutées

 La condition peut être une condition simple ou


une condition composée de plusieurs conditions

Reproduction interdite 87
EXEMPLE
Algorithme : Test
Variable X : entier
DEBUT
Écrire(" Saisir un entier X ")
Muhammad Ibn
Musa Al-Khwarizmi
Lire(X)
SI (X > 0) ALORS
Écrire(" X est un nombre positif ")
SINON
Écrire(" X est un nombre négatif ou
nul ")
FINSI
FIN
Reproduction interdite 88
EXERCICE

 Ecrire un algorithme qui permet de lire et d'afficher la


Muhammad Ibn
Musa Al-Khwarizmi valeur absolue d'un réel.

Reproduction interdite 89
SOLUTION DE L’EXERCICE
Algorithme Affichage_Valeur_Absolue (version1)
Variable x : réel
DEBUT
Ecrire(" Entrez un réel : ")

Muhammad Ibn
Lire(x)
Musa Al-Khwarizmi
SI (x < 0) ALORS
Ecrire("La valeur absolue de ", x, "est :",-
x)
SINON
Ecrire("La valeur absolue de ", x,
"est :",x)
FINSI
FIN
Reproduction interdite 90
ALTERNATIVE SI…ALORS
 La partie SINON n'est pas obligatoire, quand elle n'existe
pas et que la condition est fausse, aucun traitement n'est
réalisé
 On utilisera dans ce cas la forme simplifiée suivante :
Muhammad Ibn

SI (condition) ALORS
Musa Al-Khwarizmi

Instruction(s)
FINSI

Reproduction interdite 91
EXEMPLE
Algorithme Affichage_Valeur_Absolue
(version2)
Variable x,y : réel
DEBUT
Ecrire(" Entrez un réel : ")
Muhammad Ibn
Musa Al-Khwarizmi Lire(x)
y x
SI (x < 0) ALORS
y  -x
FINSI
Ecrire("La valeur absolue de ", x,
"est :",y)
FIN
Reproduction interdite 92
EXERCICE

 Ecrire un algorithme qui demande un nombre entier à


Muhammad Ibn
Musa Al-Khwarizmi l'utilisateur, puis teste et affiche s'il est divisible par 3.

Reproduction interdite 93
SOLUTION DE L’EXERCICE
Algorithme Divsible_par3
Variable n : entier
DEBUT
Ecrire(" Entrez un entier : ")

Muhammad Ibn
Lire(n)
Musa Al-Khwarizmi
SI (n modulo 3 = 0) ALORS
Ecrire(n," est divisible par 3")
SINON
Ecrire(n," n'est pas divisible par 3")
FINSI
FIN

Reproduction interdite 94
Conditions COMPOSEES

 Une condition composée est une condition formée de plusieurs


conditions simples reliées par des opérateurs logiques : ET, OU
et NON
 Exemples :
Muhammad Ibn
Musa Al-Khwarizmi
 x compris entre 2 et 6 : (x > 2) ET (x < 6)

 n divisible par 3 ou par 2 : (n modulo 3 = 0) OU (n modulo 2


= 0)

 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é.

Reproduction interdite 95
TABLES DE VERITE

Muhammad Ibn
Musa Al-Khwarizmi

Reproduction interdite 96
EXEMPLE (1)

Expression Résultat
(47) ET (90) Vrai
Muhammad Ibn (10) OU (11) Faux
Musa Al-Khwarizmi
NON(13.415) Faux

 Priorité : NON est prioritaire sur ET qui est prioritaire sur OU

Reproduction interdite 97
ALTERNATIVE SI…ALORS…SINON IMBRIQUES
 Les tests peuvent avoir un degré quelconque d'imbrications
SI (condition1) ALORS
SI (condition2) ALORS
instruction(s) A
SINON
instruction(s) B
Muhammad Ibn
Musa Al-Khwarizmi

FINSI
SINON
SI (condition3) ALORS
instruction(s) C
FINSI
FINSI

Reproduction interdite 98
EXEMPLE (VESRION 1)
Variable n : entier
DEBUT
Ecrire("entrez un nombre : ")
Lire(n)
SI (n < 0) ALORS
Ecrire("Ce nombre est négatif")
Muhammad Ibn
Musa Al-Khwarizmi SINON
SI (n = 0) ALORS
Ecrire("Ce nombre est nul")
SINON
Ecrire("Ce nombre est positif")
FINSI
FINSI
FIN

Reproduction interdite 99
EXEMPLE (VESRION 2)
Variable n : entier
DEBUT
Ecrire("entrez un nombre : ")
Lire(n)
SI (n < 0) ALORS
Ecrire("Ce nombre est négatif")
Muhammad Ibn
Musa Al-Khwarizmi FINSI
SI (n = 0) ALORS
Ecrire("Ce nombre est nul")
FINSI
SI (n > 0) ALORS
Ecrire("Ce nombre est positif")
FINSI
FIN

Reproduction interdite 100


EXEMPLE (VESRION 2)

 Remarque : dans la version 2 on fait trois tests


systématiquement alors que dans la version 1, si le
Muhammad Ibn
Musa Al-Khwarizmi nombre est négatif on ne fait qu'un seul test

 Conseil : utiliser les tests imbriqués pour limiter


le nombre de tests et placer d'abord les conditions les
plus probables

Reproduction interdite 101


EXERCICE

 Ecrivez un algorithme qui demande à l’utilisateur


d’entrer la température de l’eau, et affiche ensuite
Muhammad Ibn l’état de l’eau selon la température (on rappelle que
Musa Al-Khwarizmi
l’état de l’eau est glace pour une température
inférieure ou égale à 0, est vapeur pour une
température supérieure ou égale à 100 et liquide
pour une température comprise strictement entre 0 et
100).

Reproduction interdite 102


SOLUTION DE L’EXERCICE
Variable Temp : réel
DEBUT
Ecrire(" Entrez la température de l’eau : ")
Lire (Temp)
SI (Temp <= 0 ) ALORS
Ecrire("C’est de la glace ")
Muhammad Ibn
Musa Al-Khwarizmi SINON
SI (Temp < 100) ALORS
Ecrire("C’est du liquide ")
SINON
Ecrire("C’est de la vapeur ")
FINSI
FINSI
FIN

Reproduction interdite 103


EXERCICE

Muhammad Ibn
Musa Al-Khwarizmi  Ecrire un algorithme qui affiche la mention dans les
bulletins de note des étudiants selon la note obtenue

Reproduction interdite 104


SOLUTION DE L’EXERCICE
Algorithme mention
Variables note : Réel
mention : Chaîne
DEBUT
Ecrire(˝Saisir la note :˝)
Lire(note)
SI (note < 10) ALORS mention  ˝Ajourné˝
Muhammad Ibn
Musa Al-Khwarizmi
SINON SI (note < 12) ALORS mention  ˝Passable˝
SINON SI (note < 14) ALORS mention  ˝Assez Bien˝
SINON SI (note < 16) ALORS mention 
˝Bien˝
SINON mention  ˝Très Bien˝
FINSI
FINSI
FINSI
FINSI
Ecrire(˝La mention est:˝, mention)
FIN

Reproduction interdite 105


EXERCICE

Muhammad Ibn
Musa Al-Khwarizmi  Ecrire un algorithme qui lit trois entiers A, B et
C, et affiche le plus grand.

Reproduction interdite 106


SOLUTION DE L’EXERCICE
Variables A, B, C : entiers
DEBUT
Ecrire("Donner A, B et C ") ;
Lire(A, B, C) ;
SI (A > B) ALORS
SI (A > C) ALORS
Ecrire("Le plus grand nombre est : ", A)
Muhammad Ibn SINON
Ecrire ("Le plus grand nombre est : ", C)
Musa Al-Khwarizmi

FINSI
SINON
SI (B > C) ALORS
Ecrire("Le plus grand nombre est : ", B)
SINON
Ecrire("Le plus grand nombre est : ", C)
FINSI
FINSI
FIN

Reproduction interdite 107


Exercice

Muhammad Ibn
Musa Al-Khwarizmi  Ecrire un algorithme qui calcule le carré
d’un nombre entier positif

Reproduction interdite 108


Solution de l’exercice

Algorithme carré
Variables Nombre, Carre : Entier
DEBUT
Ecrire(˝Saisir le nombre :˝)
Muhammad Ibn
Musa Al-Khwarizmi
Lire(Nombre)
SI (Nombre > 0) ALORS
Carre Nombre*Nombre
Ecrire(˝Le carré est˝, Carre)
FINSI
FIN

Reproduction interdite 109


Exercice

 Ecrire un algorithme qui calcule la taxe sur le


Muhammad Ibn
Musa Al-Khwarizmi chiffre d’affaire sachant qu’elle est de 10% s’il
est inférieur strictement à 100 000 XAF et 20%
s’il est supérieur à ce seuil

Reproduction interdite 110


Solution de l’exercice
Algorithme calcul_taxe
Variables CA, taxe : Réel
DEBUT
Ecrire(˝Saisir le chiffre d’affaire :˝)
Lire(CA)
SI (CA < 100 000) ALORS
Muhammad Ibn
Musa Al-Khwarizmi

taxe CA*0,1
SINON
taxe CA*0,2
FINSI
Ecrire(˝La taxe est˝, taxe)
FIN

Reproduction interdite 111


ALTERNATIVE SELON…FAIRE
 La structure alternative peut prendre une autre forme
qui permet d’imbriquer plusieurs conditions.
SELON (Expression) FAIRE
Valeur1 : action1
Muhammad Ibn Valeur2 : action2
Musa Al-Khwarizmi

ValeurN : actionN
SINON : action
FINSELON
 Si expression est égale à valeuri, on exécute
actioni et on passe à la suite de l’algorithme.
 Sinon on exécute action et on passe à la suite de
l’algorithme.
Reproduction interdite 112
Exercice
 Ecrire un algorithme permettant de calculer le prix à
payer pour l’abonnement à un club qui décide de faire
des remises sur les prix d’abonnement :
 Ancien abonné : -15%
Muhammad Ibn
Musa Al-Khwarizmi
 Nouvel abonné : -10%
 Etudiant : -20%
 Enfant de moins de 12 ans : -30%
 Le calcul du prix d’abonnement se fait en fonction du
tarif normal d’abonnement et de la qualité de l’abonné,
(une seule qualité est accepté par abonné).

Reproduction interdite 113


Solution de l’exercice
Algorithme calcul_abonnement
Variables QH : Entier (*Qualité SELON (QH) FAIRE
abonné*)
1 : TR  -0,15
TN : Réel (*Tarif normal*)
2 : TR  -0,1
TR : Réel (*Taxe de remise*)
3 : TR  -0,2
R : Réel (*Remise*)
4 : TR  -0,3
PAP : Réel (*Prix à payer*)
Muhammad Ibn AUTRE : Ecrire(˝valeur incorrecte˝)
DEBUT
FINSELON
Musa Al-Khwarizmi
Ecrire(˝***** MENU *****˝)
R  TN * TR
Ecrire(˝Saisir le tarif normal:˝)
PAP TN + R
Lire(TN)
Ecrire(˝Le prix à payer est :˝,PAP)
Ecrire(˝1: Ancien abonné˝)
FIN
Ecrire(˝2: nouvel abonné˝)
Ecrire(˝3: Etudiant˝)
Ecrire(˝4: Enfant de moins de 12 ans˝)
Ecrire(˝Choisir la qualité de l’abonné˝)
Lire(QH)

Reproduction interdite 114


LA REPETITION (les boucles)
 Les boucles servent à répéter l'exécution d'un groupe
d'instructions un certain nombre de fois suivant le résultat d’une
condition.
 On distingue trois sortes de boucles en programmation :
Muhammad Ibn
Musa Al-Khwarizmi
 Les boucles « TANTQUE…FAIRE » : on y répète des
instructions tant qu'une certaine condition est réalisée.
 Les boucles « REPETER…JUSQU’À » : on y répète des
instructions jusqu'à ce qu’une certaine condition soit
réalisée.
 Les boucles « POUR…FAIRE » ou avec compteur : on y
répète des instructions en faisant évoluer un compteur
(variable particulière) entre
Reproduction une valeur initiale et une valeur
interdite 115
LA boucle « TANTQUE…FAIRE »

TANTQUE (condition) FAIRE


Instruction(s)
FINTANTQUE
Muhammad Ibn
Musa Al-Khwarizmi

Reproduction interdite 116


LA boucle « TANTQUE…FAIRE »
 La condition est une comparaison. En pratique une condition
simple est composée d’au moins trois (3) éléments :
 Une première valeur

Muhammad Ibn
 Un opérateur de comparaison et a 50
Musa Al-Khwarizmi
 Une seconde valeur
 Les valeurs peuvent être de n’importe quel type
 Numériques
 Chaîne de caractères
 Etc.

Reproduction interdite 117


LA boucle « TANTQUE…FAIRE »

 Il faut cependant que les deux (2) valeurs comparées


soient du même type ou de types comparables.
Muhammad Ibn
Musa Al-Khwarizmi

 L’opérateur de comparaison dans une condition


simple est appelé un opérateur
relationnel.

Reproduction interdite 118


LA boucle « TANTQUE…FAIRE »

 La condition (dite condition de contrôle de la boucle) est


évaluée avant chaque itération.

Muhammad Ibn
 Si la condition est vraie, on exécute les instructions
Musa Al-Khwarizmi
(corps de la boucle), puis, on retourne tester la
condition. Si elle est encore vraie, on répète l'exécution,

 Si la condition est fausse, on sort de la boucle et on


exécute l'instruction qui est après FINTANQUE.

Reproduction interdite 119


LA boucle « TANT QUE … FAIRE » : REMARQUES

 Le nombre d'itérations dans une boucle TANTQUE…FAIRE n'est


pas connu au moment d'entrée dans la boucle. Il dépend de
Muhammad Ibn
Musa Al-Khwarizmi
l'évolution de la valeur de condition.

 Une des instructions du corps de la boucle doit absolument


changer la valeur de condition de vrai à faux (après un certain
nombre d'itérations), sinon le programme tourne indéfiniment.

Reproduction interdite 120


LA boucle « TANT QUE … FAIRE » : REMARQUES

Exemple de boucle infinie :

Muhammad Ibn i 2
Musa Al-Khwarizmi
TANTQUE (i > 0)
i  i+1 (attention aux erreurs de frappe : + au lieu
de -)
FINTANQUE

Reproduction interdite 121


LA boucle « TANT QUE … FAIRE » : EXEMPLE 1

Variable i : entier
DEBUT
i  0
Muhammad Ibn

TANTQUE (i < 3)
Musa Al-Khwarizmi

Ecrire("Bonjour tout le monde ")


i  i + 1
FINTANQUE
FIN

Reproduction interdite 122


LA boucle « TANT QUE … FAIRE » : EXEMPLE 2

Variable A : entier
DEBUT
A  10
Muhammad Ibn
Musa Al-Khwarizmi
TANTQUE (A > 0)
A  A - 2
FINTANTQUE
Ecrire(" La valeur de A est : ", A)
FIN

Reproduction interdite 123


LA boucle « REPETER JUSQU’À… »
REPETER
Instruction(s)
JUSQU’À
Muhammad Ibn (condition)
Musa Al-Khwarizmi

 La condition est évaluée après chaque itération


 Les instructions entre REPETER et JUSQU’À sont exécutées au
moins une fois et leur exécution est répétée jusqu’à ce que condition
soit vrai (tant qu'elle est fausse)

Reproduction interdite 124


LA boucle « REPETER JUSQU’À... » : EXEMPLE 1

Variables c : entier
DEBUT
REPETER
Lire(c)
Muhammad Ibn
Musa Al-Khwarizmi
c  c*c
Ecrire(c)
JUSQU’À (c = 0)
Ecrire("Fin")
FIN

Reproduction interdite 125


LA boucle « REPETER JUSQU’À… » : EXEMPLE 2
Variables a , somme , moyenne , compteur : entier
DEBUT
compteur  0
somme  0
REPETER
Muhammad Ibn
Musa Al-Khwarizmi
Ecrire(" Entrez un nombre : " )
Lire(a)
compteur  compteur + 1
somme  somme + a
JUSQU’À (a = 0)
Moyenne  somme / compteur
Ecrire(" La moyenne de valeurs saisies est : " ,
moyenne)
FIN

Reproduction interdite 126


La boucle « POUR… FAIRE»
POUR compteur  initiale à finale pas valeur_de_pas
FAIRE
Instruction(s)
FINPOUR

Muhammad Ibn
Musa Al-Khwarizmi

Remarque : Si la valeur du « pas » n’est pas précisée dans


l’instruction « POUR…FAIRE », elle est par défaut égale à un
(1).
Reproduction interdite 127
La boucle « POUR…FAIRE »
 Remarque : le nombre d'itérations dans une boucle POUR…FAIRE
est connu avant le début de la boucle.
 La variable « compteur » est en général de type entier. Elle doit être
déclarée.
Muhammad Ibn
Musa Al-Khwarizmi
 « Pas » est un entier qui peut être positif ou négatif. Pas peut ne pas
être mentionné, car par défaut sa valeur est égal à 1. Dans ce cas, le
nombre d'itérations est égal à finale - initiale + 1 .
 Initiale et finale peuvent être des valeurs, des variables
définies avant le début de la boucle ou des expressions de même type
que compteur .

Reproduction interdite 128


DEROULEMENT DE La boucle « POUR …FAIRE »

1) La valeur initiale est affectée à la variable compteur.


2) On compare la valeur du compteur et la valeur de
finale :
Muhammad Ibn a) Si la valeur du compteur est > à finale dans le cas
Musa Al-Khwarizmi
d'un pas positif (ou si compteur est < à finale pour un
pas négatif), on sort de la boucle et on continue avec
l'instruction qui suit FINPOUR.
b) Si compteur est <= à la finale dans le cas d'un pas
positif (ou si compteur est >= à finale pour un pas
négatif), instructions seront exécutées.

Reproduction interdite 129


DEROULEMENT DE La boucle « POUR …FAIRE »

i. Ensuite, la valeur de compteur est incrémentée de la valeur


du pas si pas est positif (ou décrémenté si pas est négatif) .
Muhammad Ibn
Musa Al-Khwarizmi

ii. On recommence l'étape 2 : La comparaison entre


compteur et finale est de nouveau effectuée, et ainsi de
suite …

Reproduction interdite 130


La boucle « POUR…FAIRE » : EXEMPLE 1

 Ecrire un algorithme qui fait le calcul de x à la puissance


Muhammad Ibn
Musa Al-Khwarizmi
n où x est un réel non nul et n un entier positif ou nul

Reproduction interdite 131


La boucle « POUR…FAIRE » : EXEMPLE 1
Variables x, puiss : réel
n, i : entier
DEBUT
Ecrire(" Entrez la valeur de x ")
Lire(x)
Muhammad Ibn Ecrire(" Entrez la valeur de n ")
Musa Al-Khwarizmi
Lire(n)
puiss  1
POUR i  1 à n FAIRE
Puiss puiss*x
FINPOUR
Ecrire(x, " à la puissance ", n, " est égal à ",
puiss)
FIN

Reproduction interdite 132


La boucle « POUR…FAIRE » : EXEMPLE 1 (VERSION 2)
Calcul de x à la puissance n où x est un réel non nul et n un entier positif ou
nul (version 2 avec un pas négatif)
Variables x, puiss : réel
n, i : entier
DEBUT
Muhammad Ibn
Musa Al-Khwarizmi Ecrire(" Entrez respectivement les valeurs de x et n ")
Lire(x,n)
puiss  1
POUR i  n à 1 pas -1 FAIRE
puiss puiss*x
FINPOUR
Ecrire(x, " à la puissance ", n, " est égal à ", puiss)
FIN

Reproduction interdite 133


La boucle « POUR…FAIRE » : REMARQUE

 Il faut éviter de modifier la valeur du compteur (et de finale) à


l'intérieur de la boucle. En effet, une telle action :
 Perturbe le nombre d'itérations prévu par la boucle POUR…
FAIRE
Muhammad Ibn
Musa Al-Khwarizmi
 Rend difficile la lecture de l'algorithme
 Présente le risque d'aboutir à une boucle infinie
POUR i  1 à 5 FAIRE
Exemple : i  i-1
Ecrire(" i = ", i)
FINPOUR

Reproduction interdite 134


LIEN ENTRE « POUR … FAIRE » & « TANTQUE … FAIRE »
 La boucle POUR…FAIRE est un cas particulier de TANTQUE…
FAIRE (cas où le nombre d'itérations est connu et fixé) . Tout
ce qu'on peut écrire avec POUR…FAIRE peut être remplacé
avec TANTQUE…FAIRE (la réciproque est fausse)

Muhammad Ibn POUR compteur  initiale à finale pas valeur_de_pas


Musa Al-Khwarizmi
FAIRE
Instruction(s) compteur  initiale
FINPOUR TANTQUE (compteur <= finale)
Peut être remplacé
par : instructions
(cas d'un pas positif) compteur  compteur +
pas
FINTANQUE
Reproduction interdite 135
LIEN ENTRE « POUR … FAIRE » & « TANTQUE … FAIRE » : EXERCICE

 Calcul de x à la puissance n où x est un réel non nul et n un


Muhammad Ibn
Musa Al-Khwarizmi
entier positif ou nul (version avec TANTQUE…FAIRE)

Reproduction interdite 136


LIEN ENTRE « POUR … FAIRE » & « TANTQUE … FAIRE » : SOLUTION
Variables x, puiss : réel
n, i : entier
DEBUT
Ecrire(" Entrez la valeur de x ")
Lire(x)
Ecrire(" Entrez la valeur de n ")
Muhammad Ibn Lire(n)
Musa Al-Khwarizmi
puiss  1
i  1
TANTQUE (i <= n)
Puiss puiss*x
i  i+1
FINTANTQUE
Ecrire(x, " à la puissance ", n, " est égal à ",puiss)
FIN

Reproduction interdite 137


BOUCLE IMBRIQUEES
 Les instructions d'une boucle peuvent être des instructions
itératives. Dans ce cas, on aboutit à des boucles
imbriquées

 Exemple 1 : Ecrire un carré de 8 fois 8 caractères ‘x’


Muhammad Ibn
Musa Al-Khwarizmi
POUR i  1 à 8 FAIRE
POUR j  1 à 8 FAIRE
Ecrire("x")
FINPOUR
FINPOUR

Reproduction interdite 138


BOUCLE IMBRIQUEES
Exemple 2 Exécution

POUR i  1 à 5 FAIRE
POUR j  1 à i
Muhammad Ibn FAIRE
Musa Al-Khwarizmi
Ecrire("O")
FINPOUR
Ecrire("X")
FINPOUR

Reproduction interdite 139


CHOIX D’UN TYPE DE BOUCLE (1)

 Si on peut déterminer le nombre d'itérations avant


l'exécution de la boucle, il est plus naturel d'utiliser la
Muhammad Ibn
Musa Al-Khwarizmi
boucle POUR…FAIRE.

 S'il n'est pas possible de connaître le nombre d'itérations


avant l'exécution de la boucle, on fera appel à l'une des
boucles TANTQUE…FAIRE ou REPETER JUSQU’À.

Reproduction interdite 140


CHOIX D’UN TYPE DE BOUCLE (1)

 Pour le choix entre TANTQUE…FAIRE et REPETER JUSQU’À


:

Muhammad Ibn
 Si on doit tester la condition de contrôle avant de
Musa Al-Khwarizmi
commencer les instructions de la boucle, on utilisera
TANTQUE…FAIRE

 Si la valeur de la condition de contrôle dépend d'une


première exécution des instructions de la boucle, on utilisera
REPETER JUSQU’À.

Reproduction interdite 141


CHOIX D’UN TYPE DE BOUCLE (2)
SI nombre d'itérations connu ALORS
Boucle POUR…FAIRE
SINON
Muhammad Ibn SI itération exécutée au moins une fois
ALORS
Musa Al-Khwarizmi

Boucle REPETER JUSQU’À


SINON
Boucle TANTQUE…FAIRE
FINSI
FINSI
Reproduction interdite 142
ALGORITHMES & PROGRAMMATION I

CHAPITRE IV
Muhammad Ibn
Musa Al-Khwarizmi
Les tableaux

Reproduction interdite 143


TABLEAUX : DEFINITION

 Un tableau est un ensemble d'éléments de même type


désignés par un identificateur unique.
Muhammad Ibn
Musa Al-Khwarizmi
 Une variable entière nommée indice permet d'indiquer la
position d’un élément donné au sein du tableau et de
déterminer sa valeur.

 La déclaration d'un tableau s'effectue en précisant le type de


ses éléments et sa dimension (le nombre de ses éléments).

Reproduction interdite 144


LES TABLEAUX : DECLARATION
variable tableau identificateur[dimension] :
type

Exemple :
Muhammad Ibn
Musa Al-Khwarizmi
variable tableau notes[30] : réel
 On peut définir des tableaux de tous types : tableaux
d'entiers, de réels, de caractères, de booléens, de chaînes de
caractères, …

Reproduction interdite 145


TABLEAUX : REMARQUES
 L'accès à un élément du tableau se fait au moyen de l'indice.
Par exemple, notes[i] donne la valeur de l'élément i du
tableau notes.

 Selon les langages, le premier indice du tableau est soit 0, soit


Muhammad Ibn
Musa Al-Khwarizmi 1. Le plus souvent (au niveau algorithmique) c'est 1 (c'est ce
qu'on va adopter en pseudo-code).

 Un grand avantage des tableaux est qu'on peut traiter les


données qui y sont stockées de façon simple en utilisant des
boucles.

Reproduction interdite 146


TABLEAUX : REMARQUES
 Un tableau peut être représenté graphiquement par (exemple
Note[15]) :

Muhammad Ibn
Musa Al-Khwarizmi

 Note[2]  15 met la valeur 15 dans la 2ème case du tableau.


 En considérant le cas où a est une variable de type entier, a  Note[2] met la
valeur de la 2ème case du tableau dans a, c’est- à- dire 15.
 Lire(Note [1]) met l’entier saisi par l’utilisateur dans la première case du
tableau.
 Ecrire(Note [1]) affiche la valeur de la première case du tableau.

Reproduction interdite 147


TABLEAUX : SAISIE & AFFICHAGE

Muhammad Ibn
 Algorithme qui permet de saisir et d'afficher les éléments d'un
Musa Al-Khwarizmi
tableau de 30 notes:

Reproduction interdite 148


TABLEAUX : SAISIE & AFFICHAGE (SOLUTION)
Variables i : entier
Tableau notes[30] : réel
DEBUT
POUR i  1 à 30 FAIRE

Muhammad Ibn
Ecrire("Saisie de l'élément ", i )
Musa Al-Khwarizmi
Lire(notes[i])
FINPOUR
POUR i  1 à 30 FAIRE
Ecrire(" notes[",i,"]=", notes[i])
FINPOUR
FIN

Reproduction interdite 149


TABLEAUX : EXEMPLE (1)

 Pour le calcul du nombre d'étudiants ayant une note


Muhammad Ibn
Musa Al-Khwarizmi
supérieure strictement à 10 avec les tableaux, on peut écrire :

Reproduction interdite 150


TABLEAUX : EXEMPLE (1)
Variables i, nbre : entier
Tableau notes[30] : réel
DEBUT
nbre  0
Muhammad Ibn
POUR i  1 à 30 FAIRE
Musa Al-Khwarizmi
SI (notes[i] > 10) ALORS
nbre  nbre+1
FINSI
FINPOUR
Ecrire(" Le nombre de notes supérieures à 10 est : ",
nbre)
FIN

Reproduction interdite 151


TABLEAUX : EXEMPLE (2)

 Soit T un tableau de vingt éléments de types entiers. Ecrire


Muhammad Ibn
Musa Al-Khwarizmi
un algorithme qui permet de calculer la somme des éléments
de ce tableau.

Reproduction interdite 152


TABLEAUX : EXEMPLE (2)

Variables i , somme : entier


Tableau T[20] : entier
DEBUT

Muhammad Ibn
somme  0
Musa Al-Khwarizmi
POUR i  1 à 20 FAIRE
somme  somme + T[i]
FINPOUR
Ecrire(" La somme de tous les éléments du tableau est : " ,
somme)
FIN

Reproduction interdite 153


TABLEAUX : EXERCICE

 Soit T un tableau de N entiers. Ecrire l’algorithme qui détermine le


Muhammad Ibn
Musa Al-Khwarizmi
plus grand élément de ce tableau.

Reproduction interdite 154


TABLEAUX : EXERCICE (SOLUTION)
Variables i , max : entier
Tableau T[N] : entier
DEBUT
max  T[1]
Muhammad Ibn
POUR i  2 à N FAIRE
SI (T[i] > max) ALORS
Musa Al-Khwarizmi

max  T[i]
FINSI
FINPOUR
Ecrire(" Le plus grand élément de ce tableau : " , max)
FIN

Reproduction interdite 155


TABLEAUX A DEUX DIMENSIONS

 Les langages de programmation permettent de déclarer des tableaux


dans lesquels les valeurs sont repérées par deux indices. Ceci est utile
par exemple pour représenter des matrices.
Muhammad Ibn
Musa Al-Khwarizmi

 En pseudo code, un tableau à deux dimensions se déclare ainsi :

variable tableau identificateur[dimension1][dimension2] :


type

Reproduction interdite 156


TABLEAUX A DEUX DIMENSIONS

 Exemple : une matrice A de 3 lignes et 4 colonnes


dont les éléments sont réels
Muhammad Ibn
Musa Al-Khwarizmi
variable tableau A[3][4] : réel

 A[i][j] permet d'accéder à l’élément de la matrice


qui se trouve à l’intersection de la ligne i et de la
colonne j

Reproduction interdite 157


LECTURE D’UNE MATRICE

 Algorithme qui permet de saisir les éléments d'une matrice


Muhammad Ibn
Musa Al-Khwarizmi
de vingt lignes et cinquante colonnes :

Reproduction interdite 158


LECTURE D’UNE MATRICE
Algorithme Saisie_Matrice
variables i, j : entier
Tableau A[20][50] : réel
DEBUT
POUR i  1 à 20 FAIRE
Muhammad Ibn
Musa Al-Khwarizmi
Ecrire("Saisie de la ligne ", i )
POUR j  1 à 50 FAIRE
Ecrire("Entrez l'élément de la ligne ", i , " et de la colonne
", j)
Lire(A[i][j])
FINPOUR
FINPOUR
FIN

Reproduction interdite 159


AFFICHAGE D’UNE MATRICE

 Algorithme qui permet d'afficher les éléments d'une


Muhammad Ibn
Musa Al-Khwarizmi
matrice de vingt lignes et cinquante colonnes :

Reproduction interdite 160


AFFICHAGE D’UNE MATRICE
Algorithme Affiche_Matrice
Variables i, j : entier
Tableau A[20][50] : réel
DEBUT
Muhammad Ibn
Musa Al-Khwarizmi
POUR i  1 à 20 FAIRE
POUR j  1 à 50 FAIRE
Ecrire("A[",i,"][",j,"]=", A[i][j])
FINPOUR
FINPOUR
FIN

Reproduction interdite 161


SOMME DE DEUX MATRICES

Muhammad Ibn
 Algorithme qui calcule la somme de deux
Musa Al-Khwarizmi
matrices de vingt lignes et cinquante colonnes.

Reproduction interdite 162


SOMME DE DEUX MATRICES

Algorithme Somme_Matrices
Variables i, j : entier
Tableau A[20][50], B[20][50], C[20][50] : réel

Muhammad Ibn
DEBUT
POUR i  1 à 20 FAIRE
Musa Al-Khwarizmi

POUR j  1 à 50 FAIRE
C[i][j]  A[i][j]+B[i][j]
FINPOUR
FINPOUR
FIN

Reproduction interdite 163


Tableaux à N dimensions

 Les tableaux à n dimensions (n>2), peuvent être utilisés pour


diverses raisons telles que la création et le traitement des objets
3D par exemple qui nécessitent des tableaux de 3 dimensions au
Muhammad Ibn
Musa Al-Khwarizmi
minimum.

 La déclaration de ce type de tableaux est comme suit :

Syntaxe :

Tableau nom_tableau[taille1][taille2] … [tailleN] :


type

Reproduction interdite 164


Tableaux à N dimensions

Exemple : Tableau T[10][20][50] : réel (*un


tableau T à 3 dimensions*)

 La manipulation d’un tableau à plusieurs dimensions


Muhammad Ibn
Musa Al-Khwarizmi suit le même principe que celle des tableaux à deux
dimensions.

 Ceci s’appuie sur l’utilisation des boucles imbriquées


pour parcourir le tableau, de sorte qu’il y aura autant de
boucles qu’il y a de dimensions.

Reproduction interdite 165


ALGORITHMES & PROGRAMMATION I

Muhammad Ibn
CHAPITRE IV
Musa Al-Khwarizmi
Les STRUCTURES OU ENREGISTREMENTS

Reproduction interdite 166


DEFINITION
 Un autre type de variable structurée dite structure ou
enregistrement est caractérisée par un identificateur, qui
peut contenir, à un instant donné, plusieurs valeurs de types
différents.
Muhammad Ibn
Musa Al-Khwarizmi  Chaque valeur est rangée dans un champ et repérée par un
identificateur de champ

Reproduction interdite 167


DECLARATION
 Déclarer une variable structure revient à déclarer chaque champ
sous la forme d’un identificateur et d'un type.

 Syntaxe de la déclaration :
Muhammad Ibn

Type <identificateur> = STRUCTURE (ENREGISTREMENT)


Musa Al-Khwarizmi

<identificateur champ> :
<type>
...
<identificateur champ> :
<type>
<identificateur champ> :
<type>
FINSTRUCTURE (ENREGISTREMENT)
Reproduction interdite 168
EXEMPLE

Type t_elt = STRUCTURE (ENREGISTREMENT)


nom : chaîne de caractères /* nom de
l'élément */
symbole : chaîne de caractères /* symbole
Muhammad Ibn chimique */
Musa Al-Khwarizmi
Z : entier /* numéro atomique */
masse : réel /* masse atomique
*/
FINSTRUCTURE (ENREGISTREMENT)
Remarque : il est utile d'indiquer les rôles des champs (comme pour
les variables simples)

Reproduction interdite 169


ACCES AU CHAMPS
Syntaxe : <identificateur>.<identificateur champ>

Règle générale : un champ d'une variable structure se manipule


comme une variable simple.
On peut le trouver :
Muhammad Ibn
Musa Al-Khwarizmi
 dans une instruction de lecture : Lire(elt.symbole)
 dans une instruction d'écriture : Ecrire(elt.symbole)
 à gauche d'une flèche d'affectation : elt.symbole 
'Na'
 dans une expression : m  elt.masse * 4
 à la place d'un paramètre réel dans un appel de procédure
ou de fonction : Echanger(elt1.Z, elt2.Z)
Reproduction interdite 170
DEFINITION DE TYPES

 Il peut être pratique de définir des types puis d'utiliser ces noms
dans des déclarations de variables.
Syntaxe pour définir un type :
Muhammad Ibn
Musa Al-Khwarizmi

Type <Nomtype> = <définition du type>

 Les déclarations qui utilisent un type défini se font comme avec


les types prédéfinis.

Reproduction interdite 171


DEFINITIONS DE TYPE & DECLARATION DE VARIABLES

Définition de type :
Type t_tab = tableau[15] d'entiers

Déclaration de variable :
Muhammad Ibn
Musa Al-Khwarizmi
Variable tab : t_tab

Définition de type :
Type t_matrice = tableau[3][5] de caractères
Déclaration de variable :
Variable mat : t_matrice

Reproduction interdite 172


DEFINITIONS DE TYPE & DECLARATION DE VARIABLES

Définition de type :
Type t_elt = STRUCTURE (ENREGISTREMENT)
nom : chaîne de caractères /* nom de
l'élément */
symbole : chaîne de caractères /* symbole
Muhammad Ibn
Musa Al-Khwarizmi
chimique */
Z : entier /* numéro atomique */
masse : réel /* masse atomique
*/
FINSTRUCTURE (ENREGISTREMENT)
RemarqueDéclaration
: les nomsdede
variable
types: suivent les règles des
Variable elt : t_elt
identificateurs.
C'est par simple commodité, pour les distinguer des identificateurs
des variables, que ceux des exemples commencent par t_.
Reproduction interdite 173
TYPES COMPLEXES

 On peut construire des types complexes en composant


tableaux et structures :

 un élément de tableau peut être une structure,


Muhammad Ibn
Musa Al-Khwarizmi
 un champ de structure peut être un tableau

 Il n'y a pas de limite à la composition, les deux slides


suivants donnent des exemples simples.

Reproduction interdite 174


TABLEAUX DE STRUCTURES
Exemple : table des éléments
chimiques

Muhammad Ibn
Musa Al-Khwarizmi Définitions des types :
Type t_elt = STRUCTURE (ENREGISTREMENT)
nom : chaîne de caractères /* nom de
l'élément */
symbole : chaîne de caractères /* symbole
chimique */
Z : entier /* numéro atomique */
masse : réel /* masse atomique
*/
FINSTRUCTURE (ENREGISTREMENT)
Reproduction interdite
Variable t_table : tableau[120] de t_elt 175
TABLEAUX DE STRUCTURES OU D’ENREGISTREMENTS)

 Déclaration :
Variable table_periodique : t_table
Muhammad Ibn
Musa Al-Khwarizmi
 Accès à un élément :
table_periodique[4].masse //Contient la
valeur 10,8
table_periodique[2].symbole //Contient la valeur
'Li'

Reproduction interdite 176


STRUCTURES AVEC TABLEAUX
Exemple : liste de températures avec nombre, minimum et maximum.

Muhammad Ibn
Musa Al-Khwarizmi Définitions des types :
Type t_temp = tableau[100] de réel
Type t_liste = STRUCTURE
temp : t_temp /* tableau des températures */
nb : entier /* nombre de températures */
tmin : réel /* température minimale */
tmax : réel /* température maximale */
FINSTRUCTURE

Reproduction interdite 177


STRUCTURES AVEC TABLEAUX

Déclaration :

Variable mesures : t_liste


Muhammad Ibn
Musa Al-Khwarizmi
Accès à un élément :

mesures.nb vaut 5

mesures.temp[3] vaut 6,3

Reproduction interdite 178


CONCLUSION STRUCTURES DE DONNEES

 Les tableaux et les structures permettent de composer des


structures complexes dans lesquelles peuvent être organisés
des rangements des données qu'on appelle structures de
données.
Muhammad Ibn
Musa Al-Khwarizmi  D'autres types de données, en particulier des types de
variables dynamiques, peuvent contribuer à construire des
structures de données adaptées au problème à résoudre.

 Les structures de données et les méthodes algorithmiques


qui les exploitent sont le plus souvent dépendantes les unes
des autres

Reproduction interdite 179


ALGORITHMES & PROGRAMMATION I

CHAPITRE V
Muhammad Ibn
Musa Al-Khwarizmi
Les POINTEURS

Reproduction interdite 180


LA MÉMOIRE CENTRALE

Muhammad Ibn
Musa Al-Khwarizmi
 La mémoire centrale (MC), qui peut être vue
comme un vecteur, est formée de plusieurs cases
ou cellules numérotées (0, 1, 2, 3, 4, 5, etc.)

 Chaque case peut stocker 1 octet (8 bits ou 1


byte).

 Toutes les variables et instructions utilisées


existent en mémoire centrale.
Reproduction interdite 181
Relation entre la variable & la MEMOIRE

 La variable occupe la mémoire, elle « habite » dans la mémoire.

 Chaque variable occupe les cases mémoires qui lui sont dédiées.

 Une variable de type caractère occupe 1 case mémoire, soit 1


Muhammad Ibn
Musa Al-Khwarizmi octet. Un entier va occuper 4 cases mémoires soit 4 octets, un
réel occupe soit 4 soit 8 cases mémoire selon la précision
souhaitée.
Variable x : x
entier
10
DEBUT
100
x10

Reproduction interdite 182


Relation entre la variable & la MEMOIRE
 x étant une variable de type entier, elle nécessite 4 cases ou 4
octets dans un espace contigüe pour la représenter dans la
mémoire.
 Supposons que le numéro de la première cellule de la variable
Muhammad Ibn
x soit 100, x occupe donc les cellules ou les octets n°100, 101,
Musa Al-Khwarizmi
102, 103.
 On dit que la variable x se trouve à partir de l’adresse 100.
 La mémoire est tellement grande qu’on a intérêt à avoir
l’adresse de chaque variable.
 Adresse ? : l’adresse est le numéro du premier octet de la
variable.

Reproduction interdite 183


Relation entre la variable & la MEMOIRE

 Variable T : tableau [5] d’entier va occuper 5x4 = 20


cases ou octets dans la mémoire.
 Si on suppose que le tableau T commence à partir de l’octet
n°200, on peut déduire que l’adresse du tableau T est le numéro
Muhammad Ibn du premier octet de du tableau T, c’est-à-dire 200.
Musa Al-Khwarizmi

 Chaque variable possède 4 caractéristiques :


1) Son nom  x
2) Son type  entier
3) Sa valeur 10
4) Son adresse  100

Reproduction interdite 184


VARIABLES STATIQUES / VARIABLES DYNAMIQUES

 Variable statique : déclarée dans la partie « Variable », le


système lui réserve l’espace mémoire au moment de la
compilation et reste dans la mémoire jusqu’à la fin de
Muhammad Ibn l’algorithme dans lequel elle est déclarée.
Musa Al-Khwarizmi

 Variable dynamique : créée ou supprimée à l’exécution à


travers les pointeurs et les primitives d’allocation et de
libération de l’espace mémoire.

Reproduction interdite 185


NOTION DE POINTEUR

 Un pointeur est une variable qui contient l’adresse d’une


autre variable.

Muhammad Ibn Déclaration :


Musa Al-Khwarizmi
<NomPointeur> : pointeur vers <TypeVariable> (1)
<NomPointeur> : ˆ <TypeVariable> (2)

Variable x : entier
P : pointeur sur entier (P va contenir l’adresse d’un
entier) ou P : ^Entier

Reproduction interdite 186


NOTION DE POINTEUR

Exemple : x = P^
DEBUT
x  10
Muhammad Ibn
P  Adr(x)
Musa Al-Khwarizmi

 On dit que P pointe vers x, ou bien que x est pointée par


P.

 P contient l’adresse de x, alors il peut aller jusqu'à x, il


peut travailler sur x.

Reproduction interdite 187


NOTION DE POINTEUR

 Lorsque on dit que P pointe vers x, alors x et Pˆ sont


équivalents. Pˆ c’est le contenu de la variable pointée par
P.
Muhammad Ibn
Musa Al-Khwarizmi

P^  5

Reproduction interdite 188


EXERCICE 1

 Décrire l’évolution de chaque variable après chaque


instruction
Algorithme exemple1
Variable x, n : entier
Muhammad Ibn
Musa Al-Khwarizmi

pt : pointeur sur entier


DEBUT
pt  Adr(n)
pt^5
n  7
xpt^
FIN
Reproduction interdite 189
QU’Est-ce QU’ON PEUT FAIRE AVEC UN POINTEUR ?

 On a modifié la valeur de x en utilisant le pointeur P


(adressage indirect).
Muhammad Ibn
Musa Al-Khwarizmi  Jusqu’à maintenant la seule manière de modifier x était par
affectation ou lecture d’une autre valeur dans x (adressage
direct).

 Ici on a vu qu’on peut manipuler une variable x en utilisant un


pointeur à condition que le pointeur contienne l’adresse de x.

Reproduction interdite 190


CREER UNE VARIABLE DYNAMIQUE
Type pEntier = pointeur sur entier (définition du type
pEntier)
Variable P : pEntier
P //P est une variable statique

Muhammad Ibn
Musa Al-Khwarizmi

1. Création de la variable dynamique


 La primitive Allouer(P) va faire deux choses :
1. Elle va créer en mémoire une variable dynamique de type entier
2. L’adresse de l’espace mémoire sera sauvegarder dans le pointeur
P.

Reproduction interdite 191
CREER UNE VARIABLE DYNAMIQUE

2) Manipulation de la variable dynamique

P^  5
Muhammad Ibn
Musa Al-Khwarizmi

3) Suppression de la variable dynamique

Libérer(P)

Reproduction interdite 192


CREER UNE VARIABLE DYNAMIQUE
 La primitive Libérer(P) va supprimer la variable dynamique Pˆ et P va
pointer vers une valeur indéterminée.

 Après Libérer(P), l’instruction suivante Pˆ10 occasionne une erreur à


la compilation car la variable dynamique Pˆ n’existe plus.
Muhammad Ibn
Musa Al-Khwarizmi
 Pour initialiser une variables de type pointeur qui ne pointe rien on écrit :
PNIL

 Attention, le fait de mettre NIL dans un pointeur ne libère pas l'emplacement


sur lequel il pointait. L'emplacement devient irrécupérable car le lien vers cet
emplacement a été coupé par la valeur NIL.

 Il faut libérer avant d'affecter le pointeur avec NIL.

Reproduction interdite 193


EXEMPLE 1
 Dérouler l’algorithme suivant
Algorithme Exemple
Variable P,Q : pointeur vers entier
DEBUT
Muhammad Ibn
Musa Al-Khwarizmi Allouer(P)
P^10
Q  P
Q^ = P^+2
Q  NIL
Libérer(P)
FIN

Reproduction interdite 194


EXEMPLE 2

 L'algorithme suivant n'a comme seul but que de faire


comprendre la manipulation des pointeurs.
Muhammad Ibn
Musa Al-Khwarizmi
 Avec des schémas, montrez l'état de la mémoire en plus de
ce qui s'affiche à l'écran.

Reproduction interdite 195


EXEMPLE (CORRIGE)
Variables ptc : pointeur sur chaîne de caractères
ptx1, ptx2 : pointeur vers entier
DEBUT Ptx2^  ptx1^ +
Allouer(ptc) ptx2^

ptc^  ‘chat’ Ecrire(ptx1^, ptx2^)


Muhammad Ibn
Musa Al-Khwarizmi
Ecrire(ptc^) ptx1  NIL

Allouer(ptx1) Ecrire(ptx2^)

Lire(ptx1^) Libérer(ptx2)

ptx2  ptx1 ptx2  NIL

Ecrire(ptx2^) ptc  NIL


FIN
Où est l'erreur ? : on a coupé l'accès à la zone de mémoire sans la libérer. Elle est
irrécupérable
Reproduction interdite 196
VARIABLE DYNAMIQUE DE TYPE TABLEAU
Type Tab = tableau[100] de réel
pTab = pointeur vers Tab
variable P : pTab
i : entier
Muhammad Ibn
Musa Al-Khwarizmi DEBUT
//1. Création de la variable dynamique
Allouer(P)

Reproduction interdite 197


VARIABLE DYNAMIQUE DE TYPE TABLEAU
//2. Manipulation de la variable dynamique
POUR i de 1 à 100 FAIRE
Pˆ[i]  i
FINPOUR
Muhammad Ibn
Musa Al-Khwarizmi

//2. Suppression de la variable dynamique


Libérer(P)

Reproduction interdite 198


VARIABLE DYNAMIQUE DE TYPE STRUCTURE
Type Date = STRUCTURE
J, m, a : entier
FINSTRUCTURE
pDate = pointeur vers Date

Muhammad Ibn Variable P : pDate


Musa Al-Khwarizmi
DEBUT
//1. Création de la variable dynamique
Allouer(P)

Reproduction interdite 199


VARIABLE DYNAMIQUE DE TYPE STRUCTURE
//2. Manipulation de la variable dynamique

Pˆ.j  14
Pˆ.m  09
Pˆ.a  2022
Muhammad Ibn
Musa Al-Khwarizmi

//3. Suppression de la variable dynamique

Libérer(P)

Reproduction interdite 200


EXERCICE 2

 Ecrire un algorithme qui calcul la somme de deux valeurs


Muhammad Ibn
entières en utilisant des pointeurs.
Musa Al-Khwarizmi

 Puis interchange leurs valeurs.

Reproduction interdite 201


EXERCICE 2 (CORRIGE)
Algorithme exemple3 ; Allouer(Sauv)
P, Q, Sauv, Som : pointeur vers Sauv^  P^
entier; P^  Q^
DEBUT Q^  Sauv^
Allouer(P)
Libérer(Sauv)
Écrire(‘donnez la première
Écrire(‘les nouvelles valeurs sont:’ P^, ‘et’,
Muhammad Ibn valeur:’) Q^)
Musa Al-Khwarizmi
Lire(P^)
Libérer(P)
Allouer(Q)
Libérer(Q)
Écrire(‘donnez la deuxième
FIN
valeur:’)
Lire(Q^)
Allouer(Som)
Som^  P^ + Q^
Écrire(‘La somme=‘, Som^)
Libérer(Som);
Reproduction interdite 202
ALGORITHMES & PROGRAMMATION I

CHAPITRE VI
Muhammad Ibn
Musa Al-Khwarizmi
PROCEDURES & FONCTIONS

Reproduction interdite 203


INTRODUCTION

 Lorsque l'on progresse dans la conception d'un algorithme, ce


dernier peut prendre une taille et une complexité croissante.
Muhammad Ibn
Musa Al-Khwarizmi  De même des séquences d'instructions peuvent se répéter à
plusieurs endroits.

 Un algorithme écrit d'un seul tenant devient difficile à


comprendre et à gérer dès qu'il dépasse deux pages.

Reproduction interdite 204


INTRODUCTION

 La solution consiste alors à découper l'algorithme en plusieurs


parties plus petites. Ces parties sont appelées des sous-
algorithmes.
Muhammad Ibn
Musa Al-Khwarizmi

 Le sous-algorithme est écrit séparément du corps de


l'algorithme principal et sera appelé par celui-ci quand ceci sera
nécessaire.

 Il existe deux sortes de sous-algorithmes : les procédures et les


fonctions.

Reproduction interdite 205


LES PROCEDURES

 Une procédure est une série d'instructions regroupées sous


un nom, qui permet d'effectuer des actions par un simple
Muhammad Ibn
appel de la procédure dans un algorithme ou dans un autre
Musa Al-Khwarizmi sous-algorithme.

 Une procédure ne renvoie aucune valeur.

Reproduction interdite 206


DECLARATION D’UNE PROCEDURE
Syntaxe :
PROCEDURE nom_proc(liste de paramètres)
Variables identificateurs : type
DEBUT

Muhammad Ibn
Instruction(s)
FINPROCEDURE
Musa Al-Khwarizmi

 Après le nom de la procédure, il faut donner la liste des


paramètres (s'il y en a) avec leur type respectif.
 Ces paramètres sont appelés paramètres formels.

 Leur valeur n'est pas connue lors de la création de la procédure

Reproduction interdite 207


EXEMPLE

 Ecrire une procédure qui affiche à l'écran une ligne de


Muhammad Ibn
Musa Al-Khwarizmi
15 étoiles puis passe à la ligne suivante.

Reproduction interdite 208


EXEMPLE (CORRIGE)
PROCEDURE Etoile()
Variables i : entier
DEBUT
POUR i de 1 à 15 FAIRE
Muhammad Ibn
Musa Al-Khwarizmi
Ecrire("*")
FINPOUR
Ecrire("retour à la ligne ")
FINPROCEDURE

Reproduction interdite 209


L’APPEL D’UNE PROCEDURE

 Pour déclencher l'exécution d'une procédure dans un


Muhammad Ibn programme, il suffit de l'appeler.
Musa Al-Khwarizmi

 L'appel de procédure s'écrit en mettant le nom de la


procédure, puis la liste des paramètres, séparés par des
virgules.

Reproduction interdite 210


L’APPEL D’UNE PROCEDURE

 A l'appel d'une procédure, le programme interrompt son


déroulement normal, exécute les instructions de la
procédure, puis retourne au programme appelant et exécute
l'instruction suivante.
Muhammad Ibn
Musa Al-Khwarizmi
Nom_PROCEDURE(liste de paramètres)

 Les paramètres utilisées lors de l'appel d'une procédure sont


appelés paramètres effectifs. Ces paramètres donneront
leurs valeurs aux paramètres formels.

Reproduction interdite 211


EXEMPLE

 En utilisant la procédure Etoiles déclarée dans l'exemple


Muhammad Ibn
précédent, écrire un algorithme permettant de dessiner un
Musa Al-Khwarizmi
carré d'étoiles de 15 lignes et de 15 colonnes.

Reproduction interdite 212


EXEMPLE (CORRIGE)
Algorithme carré_étoiles
Variables j : entier
//Déclaration de la procédure
Etoiles()
Muhammad Ibn PROCEDURE Etoile()
Variables i : entier
Musa Al-Khwarizmi

DEBUT
POUR i de 1 à 15 FAIRE
Ecrire("*")
FINPOUR
Ecrire(" retour à la ligne ")
FINPROCEDURE

Reproduction interdite 213


EXEMPLE (CORRIGE)

//Algorithme principal (Partie principale)


DEBUT
POUR j de 1 à 15 FAIRE
Muhammad Ibn //Appel de la procédure Etoiles
Musa Al-Khwarizmi
Etoile()
FINPOUR
FIN

Reproduction interdite 214


REMARQUES

1. Pour exécuter un algorithme qui contient des procédures et des


fonctions, il faut commencer l'exécution à partir de la partie
principale (algorithme principal)
Muhammad Ibn
Musa Al-Khwarizmi 2. Lors de la conception d'un algorithme deux aspects
apparaissent :

 La définition (déclaration) de la procédure ou fonction.

 L'appel de la procédure ou fonction au sein de l'algorithme


principal.

Reproduction interdite 215


PASSAGE DE PARAMETRES

 Les échanges d'informations entre une procédure et le sous


algorithme appelant se font par l'intermédiaire de
paramètres.

Muhammad Ibn  Il existe deux principaux types de passages de paramètres


Musa Al-Khwarizmi
qui permettent des usages différents :

1. Passage par valeur :


Dans ce type de passage, le paramètre formel reçoit
uniquement une copie de la valeur du paramètre effectif.
La valeur du paramètre effectif ne sera jamais
modifiée.
Reproduction interdite 216
PASSAGE DE PARAMETRES
Exemple :
Soit l'algorithme suivant :
//Algorithme
Algorithme Passage_par_valeur principal
Variables N : entier DEBUT
//Déclaration de la procédure P1 N  5
Muhammad Ibn
Musa Al-Khwarizmi

PROCEDURE P1(A : entier) P1(N)


DEBUT Ecrire(N)
A  A * 2 FIN
Ecrire(A)
FINPROCEDURE

Reproduction interdite 217


PASSAGE DE PARAMETRES
 Cet algorithme définit une procédure P1 pour laquelle on
utilise le passage de paramètres par valeur.

 Lors de l'appel de la procédure, la valeur du paramètre effectif


N est recopiée dans le paramètres formel A.
Muhammad Ibn
Musa Al-Khwarizmi
 La procédure effectue alors le traitement et affiche la valeur de
la variable A, dans ce cas 10.

 Après l'appel de la procédure, l'algorithme affiche la valeur de


la variable N dans ce cas 5.

 La procédure ne modifie pas le paramètre qui est passé par


valeur.
Reproduction interdite 218
PASSAGE DE PARAMETRES

2. Passage par référence ou par adresse :

 Dans ce type de passage, la procédure utilise


l'adresse du paramètre effectif.
Muhammad Ibn
Musa Al-Khwarizmi
 Lorsqu'on utilise l'adresse du paramètre, on accède
directement à son contenu. La valeur de la variable
effectif sera donc modifiée.

 Les paramètres passés par adresse sont précédés du


mot clé Var.

Reproduction interdite 219


PASSAGE DE PARAMETRES
Reprenons l'exemple précédent :
//Algorithme Principal
Algorithme Passage_par_référence DEBUT
Variables N : entier N  5
P1(N)
//Déclaration de la procédure P1
Muhammad Ibn
Ecrire(N)
PROCEDURE P1 (Var A : entier)
Musa Al-Khwarizmi

FIN
DEBUT
A  A * 2
Ecrire(A)
FINPROCEDURE

Reproduction interdite 220


PASSAGE DE PARAMETRES
 A l'exécution de la procédure, l'instruction Ecrire(A)
permet d'afficher à l'écran 10.
 Au retourdans l'algorithme principal, l'instruction
Ecrire(N) affiche également 10.
Muhammad Ibn  Dans cet algorithme le paramètre passé correspond à la
référence (adresse) de la variable N. Elle est donc modifiée
Musa Al-Khwarizmi

par l'instruction : A  A*2


Remarque :
 Lorsqu'il y a plusieurs paramètres dans la définition d'une
procédure, il faut absolument qu'il y en ait le même nombre à
l'appel et que l'ordre soit respecté.

Reproduction interdite 221


LES FONCTIONS

 Les fonctions sont des sous-algorithmes admettant des


Muhammad Ibn
paramètres et retournant un seul résultat (une seule valeur) de
Musa Al-Khwarizmi type simple qui peut apparaître dans une expression, dans une
comparaison, à la droite d’une affectation, etc.

Reproduction interdite 222


DECLARATION D’UNE FONCTIONS

Syntaxe :
FONCTION nom_Fonct (liste de paramètres) :
type
Muhammad Ibn
Musa Al-Khwarizmi Variables identificateur : type
DEBUT
Instruction(s)
Retourner Expression
FINFONCTION

Reproduction interdite 223


DECLARATION D’UNE FONCTIONS

 La syntaxe de la déclaration d'une fonction est assez


proche de celle d'une procédure à laquelle on ajoute un
type qui représente le type de la valeur retournée par la
fonction et une instruction « Retourner Expression ».
Muhammad Ibn
Musa Al-Khwarizmi  Cette dernière instruction renvoie au programme
appelant le résultat de l'expression placée à la suite du
mot clé Retourner.

Note :
 Les paramètres sont facultatifs, mais s'il n'y pas de
paramètres, les parenthèses doivent rester présentes.

Reproduction interdite 224


EXEMPLE
Définir une fonction qui renvoie le plus grand de deux
nombres différents.
//Déclaration de la fonction Max
FONCTION Max(X: réel, Y: réel) : réel
DEBUT
Muhammad Ibn
Musa Al-Khwarizmi SI (X > Y) ALORS
Retourner X
SINON
Retourner Y
FINSI
FINFONCTION

Reproduction interdite 225


L’APPEL D’UNE FONCTION

 Pour exécuter une fonction, il suffit de faire appel à elle en


écrivant son nom suivie des paramètres effectifs.
 C'est la même syntaxe qu'une procédure.
Muhammad Ibn
Musa Al-Khwarizmi  A la différence d'une procédure, la fonction retourne une
valeur.
 L'appel d'une fonction pourra donc être utilisé dans une
instruction (affichage, affectation, ...) qui utilise sa valeur.
Syntaxe :
Nom_FONCTION(liste de paramètres)

Reproduction interdite 226


EXEMPLE

Ecrire un algorithme appelant, utilisant la fonction


Muhammad Ibn Max de l'exemple précédent.
Musa Al-Khwarizmi

Reproduction interdite 227


EXEMPLE (SOLUTION)
Algorithme Appel_fonction_Max
Variables A, B, M : réel
//Déclaration de la fonction Max
FONCTION Max(X: réel, Y: réel) :
réel
DEBUT
Muhammad Ibn
Musa Al-Khwarizmi

SI (X > Y) ALORS
Retourner X
SINON
Retourner Y
FINSI
FINFONCTION

Reproduction interdite 228


EXEMPLE (SOLUTION)
//Algorithme principal
DEBUT
Ecrire("Donnez la valeur de A : ")
Lire(A)
Muhammad Ibn
Musa Al-Khwarizmi
Ecrire("Donnez la valeur de B : ")
Lire(B)
//Appel de la fonction Max
M  Max(A,B)
Ecrire("Le plus grand de ces deux nombres est : ",
M)
FIN

Reproduction interdite 229


PORTEE DES VARIABLES
 La portée d'une variable désigne le domaine de visibilité
de cette variable.

 Une variable peut être déclarée dans deux emplacements


Muhammad Ibn
distincts.
Musa Al-Khwarizmi

 Une variable déclarée dans la partie déclaration de


l'algorithme principale est appelée variable globale.

 Elle est accessible de n'importe où dans l'algorithme, même


depuis les procédures et les fonctions. Elle existe pendant
toute la durée de vie du programme.

Reproduction interdite 230


PORTEE DES VARIABLES

 Une variable déclarée à l'intérieur d'une procédure (ou


une fonction) est dite variable locale.
Muhammad Ibn
Musa Al-Khwarizmi  Elle n'est accessible qu’à l’intérieur de la procédure au sein
de laquelle elle définit, les autres procédures n'y ont pas
accès.

 La durée de vie d'une variable locale est limitée à la durée


d'exécution de la procédure.

Reproduction interdite 231


PORTEE DES VARIABLES
Algorithme Portée
Variables X, Y : entier X et Y sont des variables globales
Visibles dans tout l’algorithme.
PROCEDURE P1()
Variables A : entier
DEBUT A est une variable locale
Muhammad Ibn … visible uniquement à
Musa Al-Khwarizmi
l’intérieur de la procédure
FINPROCEDURE
//Algorithme principal
DEBUT

FIN

Remarque : Les variables globales sont à éviter pour la maintenance des


programmes.
Reproduction interdite 232
LA RECURSIVITE
Le corps d’une fonction peut contenir un appel à cette même
fonction.  La fonction « se rappelle elle-même »

Ceci est très similaire aux suites définies par récurrence, qui existent
en mathématiques.
Muhammad Ibn
Musa Al-Khwarizmi
Exemple d’une suite définie par récurrence :

 C’est plus pratique d’avoir un = …

Reproduction interdite 233


LA RECURSIVITE
On va écrire une fonction récursive u qui prend en
argument
un entier n et qui renvoie la valeur de un .
FONCTION u(n : entier) : entier
DEBUT
Muhammad Ibn SI (n = 0) ALORS
Musa Al-Khwarizmi
Retourner 5
SINON
SI (n ≥ 1) ALORS
Retourner (2*u(n-1))
FINSI
FINSI
FINFONCTION

Reproduction interdite 234


EXERCICE

Ecrire une fonction récursive permettant de calculer la


Muhammad Ibn
Musa Al-Khwarizmi
factorielle d'un entier positif.

Reproduction interdite 235


EXERCICE (CORRIGE)

//Déclaration de la fonction Factorielle (Fact)


FONCTION Fact(n : entier) : entier
Muhammad Ibn DEBUT
Musa Al-Khwarizmi

SI (n > 1) ALORS
Retourner (n * Fact(n-1))
SINON
Retourner 1
FINSI
FINFONCTION

Reproduction interdite 236


commentaires

 Dans cet exemple, la fonction retourne 1 si la valeur


demandée est inférieur à 1, sinon elle fait appel à elle
même avec un paramètre inférieur de 1 par rapport au
Muhammad Ibn précédent.
Musa Al-Khwarizmi

 Les valeurs de ces paramètres vont en décroissant et


atteindront à un moment la valeur une (1).

 Dans ce cas, il n'y a pas d'appel récursif et donc nous


sortons de la fonction.

Reproduction interdite 237


NOTE

 Toute procédure ou fonction récursive comporte une


instruction (ou un bloc d'instructions) nommée « point
terminal » permettant de sortir de la procédure ou de la
Muhammad Ibn
Musa Al-Khwarizmi fonction.

 Le « point terminal » dans la fonction récursive Fact est


: retourner 1.

Reproduction interdite 238


EXERCICE

Calculez la somme des entier de 1à n :

Muhammad Ibn
Musa Al-Khwarizmi

Reproduction interdite 239


AVANTAGES DES PROCEDURES & FONCTIONS

 Les procédures ou fonctions permettant de ne pas répéter


plusieurs fois une même séquence d'instructions au sein
du programme (algorithme).

Muhammad Ibn  La mise au point du programme est plus rapide en


Musa Al-Khwarizmi
utilisant des procédures et des fonctions. En effet, elle
peut être réalisée en dehors du contexte du programme.

 Une procédure peut être intégrée à un autre programme,


ou elle pourra être rangée dans une bibliothèque d'outils
ou encore utilisée par n'importe quel programme.

Reproduction interdite 240


ALGORITHMES & PROGRAMMATION I

CHAPITRE VII
Muhammad Ibn
Musa Al-Khwarizmi
LES LISTES LINEAIRES CHAINEES

Reproduction interdite 241


Notion d’allocation dynamique
 L’utilisation des tableaux statiques implique que l’allocation
de l’espace se fait tout à fait au début d’un traitement, c’est à
dire que l’espace est connu à la compilation.

 Pour certains problèmes, on ne connaît pas à l’avance


Muhammad Ibn
Musa Al-Khwarizmi l’espace utilisé par le programme. On est donc contraint
d’utiliser une autre forme d’allocation.

 L’allocation de l’espace se fait alors au fur et à mesure de


l’exécution du programme.

 Afin de pratiquer ce type d’allocation, deux opérations sont


nécessaires : allocation et libération de l’espace.

Reproduction interdite 242


Exemple

 Supposons que l’on veuille résoudre le problème suivant :


« Trouver tous les nombres premiers de 1 à n et les stocker
en mémoire ».

Muhammad Ibn  Le problème réside dans le choix de la structure de données.


Musa Al-Khwarizmi
Si on utilise un tableau, il n’est pas possible de définir la
taille de ce tableau avec précision même si nous connaissons
la valeur de n (par exemple 10000).

 On est donc, ici, face à un problème où la réservation de


l’espace doit être dynamique.

Reproduction interdite 243


Définition d’une liste LINEAIRE CHAINEE

 Une liste linéaire chaînée (LLC) est une structure de données


composée d’un ensemble de maillons, alloués
dynamiquement et chaînés entre eux.
L=10
Muhammad Ibn
0
Musa Al-Khwarizmi 5 200 0 250 -1 300 3 NIL
100 200 250 300

 Dans une liste linéaire chaînée on doit avoir :


1. Un pointeur particulier (L) qui pointe sur le premier
élément (contient l’adresse du premier maillon), appelé
tête de liste

Reproduction interdite 244


Définition d’une liste LINEAIRE CHAINEE
2. Chaque maillon est chaîné avec son suivant (chaque maillon
contient dans son champ suivant, l’adresse du prochain
maillon).
3. Le dernier maillon n’a pas de suivant (son champ suivant
contient NIL)
Muhammad Ibn
Musa Al-Khwarizmi
L=10
0
5 200 0 250 -1 300 3 NIL
100 200 250 300

Reproduction interdite 245


Définition des structures de donnes
Type Maillon = STRUCTURE Val Suiv
Val : Typeqq (Typeqlq) (pointeur sur
Maillon)
Suiv : Pointeur sur Maillon
FINSTRUCTURE
Type Liste = pointeur sur Mailon 5 200

Muhammad Ibn Variable L, P, Q : Liste Type : Maillon


Musa Al-Khwarizmi P
Type :
Liste Q
L=10
0
5 200 0 250 -1 300 3 NIL
100 200 250 300

Reproduction interdite 246


MODELE SUR LES LISTES
Primitives Exemples d’appels Rôle

Init Init(P) Initialise le pointeur P à NIL

Reserve un espace Pour un maillon et retourne son


Allouer Allouer(P) adresse
Supprime le maillon pointé par P (P n’est pas
Libérer Libérer(P) supprimé)
Retourne le contenu du champ Val du maillon pointé par
Val x  Val(P) P
Muhammad Ibn
Aff_val(P,3) Affecte une valeur au champ du maillon pointé par P.
Musa Al-Khwarizmi (Le premier paramètre est un pointeur vers un maillon,
Aff_val(P, x) et le deuxième paramètre est une valeur, ou variable,
Aff_Val une expression ayant le même type que celui du champ
Val du maillon).
Aff_Val(P, Val(Q))
Q  P
Retourne le contenu du champ Suiv du maillon pointé
Suiv P  Suiv(P) par P.
Q  Suiv(P)
Aff_Suiv(P,Q) Affecte une adresse du champ Suiv du maillon ponté par
P. (Les deux paramètres doivent être des pointeurs de
Aff_Suiv Aff_Suiv(P, Suiv(Q)) type Liste))  Dans ce cas le chaînage du maillon
pointé par P est changé vers un autre maillon ou
Aff_Suiv(P, NIL) supprimé complètement.

Reproduction interdite 247


OPERATIONS ELEMENTAIRES
1) Initialisation d’un pointeur : (Allouer)

P P
Init(P)
? NI
Muhammad Ibn L
Musa Al-Khwarizmi

2) Création d’un maillon : (Allouer)

P Allouer(P) P
? 10
0 100

Reproduction interdite 248


OPERATIONS ELEMENTAIRES
3) Création d’un maillon : (Libérer)

P Libérer(P) P
10 5 ?
Muhammad Ibn 0 100
Musa Al-Khwarizmi

4) Avoir le contenu du champ Val d’un maillon : (Val)

P x
x Val(P) P x
10 5
10 5 5
0 100 0 100

Reproduction interdite 249


OPERATIONS ELEMENTAIRES
5) Modifier / Affecter la valeur d’un maillon :
(Aff_Val)

P Aff_Val(P,3) P
Muhammad Ibn
Musa Al-Khwarizmi
1 3
P x Aff_Val(P,x) P x
5 5 5
Q P Q P

Aff_Val(P,Val(Q))
-1 3 -1 -1

Reproduction interdite 250


OPERATIONS ELEMENTAIRES
6) Placement / Déplacement d’un pointeur : (Suiv)

Q P Q
P
100 100 100
200
Muhammad Ibn
Musa Al-Khwarizmi
Q  P
3
-1 200 P -1 3
10 20 10 20
P 0 0 0 P 0
100 200
p 
-1 200 3 Suiv(P) -1 200 3
10 20 10 20
0 0 0 0

Reproduction interdite 251


OPERATIONS ELEMENTAIRES
6) Placement / Déplacement d’un pointeur : (Suiv)

Q P P
Muhammad Ibn
Musa Al-Khwarizmi 200 200 Q
100
300
Q 
4 200 0 300 3 Suiv(P) 4 200 0 300 3
10 20 30 10 20 30
0 0 0 0 0 0

Reproduction interdite 252


OPERATIONS ELEMENTAIRES
7) Affectation / Changement / Suppression du suivant : (Aff_Suiv,
Suiv)

Muhammad Ibn
Musa Al-Khwarizmi
P
P Q 100 Q
200
100 200
Aff_Suiv(P,Q)
4 NIL 0 300 3 4 200 0 300 3
10 20 30 10 20 30
0 0 0 0 0 0

Reproduction interdite 253


OPERATIONS ELEMENTAIRES
7) Affectation / Changement / Suppression du suivant : (Aff_Suiv,
Suiv)
P Q P
Q
100 200 100
200
Aff_Suiv(P,NIL)
Muhammad Ibn
4 200 0 300 3 4 0 300 3
Musa Al-Khwarizmi
10 20 30 10 20 30
0 0 0 0 0 0

Q P Q
P 100
200 200
100
Aff_Suiv(P,Suiv(Q)
4 200 0 300 3 ) 4 300 0 300 3
10 20 30 10 20 30
0 0 0 0 0 0
Reproduction interdite 254
MODELE SUR LES LISTES
Primitives Langage algorithmique

Allouer
Libérer
FONCTION Val(P: Liste) : Typeqld
DEBUT
Val Retourner (P^.Val)
FINFONCTION

Muhammad Ibn PROCEDURE Aff_Val(P: Liste, x: Typeqld)


Musa Al-Khwarizmi DEBUT
Aff_Val P^.Valx
FINPROCEDURE

FONCTION Val(P: Liste) : Liste


DEBUT
Suiv Retourner (P^.Suiv)
FINFONCTION

PROCEDURE Aff_Suiv(P: Liste, Q: Liste)


DEBUT
Aff_Suiv P^.SuivQ
FINPROCEDURE

Reproduction interdite 255


EXERCICES D’APPLICATION DU MODELE

 Donner la représentation graphique de la liste après


chaque ligne, en précisant les éléments pointés par P, Q et
S
Allouer(S)
QSuiv(S) …ligne 3
Aff_Val(S,2)
Muhammad Ibn Aff_Suiv(P,S) …ligne 4
Musa Al-Khwarizmi QS …ligne 1
Aff_Suiv(S,NIL) …ligne 5
Allouer(P)
Aff_Suiv(P,Suiv(S)) …ligne 6
Aff_Val(P,Val(Q)-1)
QSuiv(P) …ligne 7
Aff_Suiv(S,P) …ligne 2

Reproduction interdite 256


EXERCICES D’APPLICATION DU MODELE(CORRIGE)

S Q P

Allouer(S)
Aff_Val(S,2)
QS …ligne 1 2
Muhammad Ibn
Musa Al-Khwarizmi

S Q P

Allouer(P)
Aff_Val(P,Val(Q)-1)
Aff_Suiv(S,P) …ligne 2 2 1

Reproduction interdite 257


EXERCICES D’APPLICATION DU MODELE(CORRIGE)

S Q P

2 1
QSuiv(S) …ligne 3
Muhammad Ibn
Musa Al-Khwarizmi

S Q P

Aff_Suiv(P,S) …ligne 2 1
4

Reproduction interdite 258


EXERCICES D’APPLICATION DU MODELE(CORRIGE)
S Q P

2 NIL 1

Aff_Suiv(S,NIL) …ligne 5
Muhammad Ibn
Musa Al-Khwarizmi

Q P S

1 2 NIL

Reproduction interdite 259


EXERCICES D’APPLICATION DU MODELE(CORRIGE)
Q P S

1 NIL 2 NIL
Aff_Suiv(P,Suiv(S)) …ligne 6
Muhammad Ibn
Musa Al-Khwarizmi

Q = P S
NIL

1 NIL 2 NIL
QSuiv(P) …ligne 7

Reproduction interdite 260


EXERCICES

Etant donné une liste d’entiers non vide L.


Ecrire des sous algorithmes pour résoudre les problèmes
Muhammad Ibn
suivants :
Musa Al-Khwarizmi
1. Afficher les éléments de L.
2. Calculer la moyenne des éléments de L.
3. Calculer le maximum et le minimum de L.

Reproduction interdite 261


EXERCICES(COORIGE)
Etant donné une liste d’entiers non vide L.
1. Afficher les éléments de L

Muhammad Ibn
Musa Al-Khwarizmi

Reproduction interdite 262


EXERCICES(CORRIGE)
Etant donné une liste d’entiers non vide L.
2. Calculer la moyenne des éléments de L.

Muhammad Ibn
Musa Al-Khwarizmi

Reproduction interdite 263


EXERCICES(CORRIGE)
Etant donné une liste d’entiers non vide L.
3. Calculer maximum et le minimum de L.

Muhammad Ibn
Musa Al-Khwarizmi

Reproduction interdite 264


CREATION D’UNE LISTE
 A chaque fois
1. On crée un maillon
2. On lui affecte une valeur
3. O met à jour son chaînage
La création d’une liste respecte 3 règles
Muhammad Ibn
1. Posséder un pointeur spécifique (L) qui pointe sur le premier maillon (Dans
Musa Al-Khwarizmi le cas où la liste est vide L doit être égal à NIL)
2. Chaque maillon doit être chaîné (relié) avec son précédent sauf le premier
3. Le champ suivant du dernier maillon doit être égal à NIL

L = Liste vide
L NIL

2 0 5 3 NIL

Reproduction interdite 265


EXERCICES

1) Créer une liste chaînée L d’entiers


2) Afficher la liste L
3) Calculer la somme de ses éléments
Muhammad Ibn
Musa Al-Khwarizmi 4) Afficher l’élément de la position R
5) Supprimer l’élément de la position R
6) Insérer un élément dans la position R
7) Donner l’occurrence de la valeur V
8) Libérer la liste L.

Reproduction interdite 266


ALGORITHMES & PROGRAMMATION I

CHAPITRE X
Muhammad Ibn
Musa Al-Khwarizmi
LES PILES & FILES

Reproduction interdite 267


ALGORITHMES & PROGRAMMATION I

CHAPITRE IX
Muhammad Ibn
Musa Al-Khwarizmi
LES FICHIERS

Reproduction interdite 268


ALGORITHMES & PROGRAMMATION I

CHAPITRE X
Muhammad Ibn
Musa Al-Khwarizmi
LA COMPLEXITE ALGORITHMIQUE

Reproduction interdite 269


INTRODUCTION

 Le but de ce chapitre n'est pas de faire de vous des experts en la


matière, mais plutôt de vous donner une bonne introduction sur
Muhammad Ibn
Musa Al-Khwarizmi la question de complexité, comprendre pourquoi certains
programmes prennent beaucoup plus de temps à s'exécuter que
d'autres.

Reproduction interdite 270


OBJECTIFS

 La théorie de la complexité (algorithmique) vise à répondre à


ces besoins ;

Muhammad Ibn  Classer les problèmes selon leurs difficultés.


Musa Al-Khwarizmi

 Classer les algorithmes selon leurs efficacités.

 Comparer les algorithmes résolvant un problème donné avant


de faire un choix et sans les implémenter

Reproduction interdite 271


EFFICACITE D’UN PROGRAMME
 L'efficacité d'un programme fait en réalité référence à une
écriture de code intelligente, bien réfléchie. En d'autres termes
un bon algorithme.
 L'efficacité se mesure sur deux dimensions :
Muhammad Ibn
Musa Al-Khwarizmi
l’espace mémoire
et le temps.
 Le plus souvent, on ne peut pas avoir les deux dimensions en
même temps. C'est-à-dire avoir un programme qui ne prend pas
assez d'espace en mémoire mais qui est moins rapide, ou un
programme qui est très rapide mais qui prend assez d'espace en
mémoire.
Reproduction interdite 272
ESPACE MEMOIRE (COMPLEXITE SPATIALE)

 Dans la complexité spatiale, on s’intéresse à la question


suivante :
Muhammad Ibn
Musa Al-Khwarizmi  De combien de mémoire le programme a t’il besoin ?
 Dans ce cours nous ne nous intéressons pas à la complexité
spatiale, car la mémoire croyez moi ce n'est pas ce qui manque
aux ordinateurs de nos jours.

Reproduction interdite 273


LE TEMPS (COMPLEXITE TEMPORELLE)
 Dans la complexité temporelle, on s’intéresse à la question suivante :
Combien de temps d’exécution le programme dure t’il ?
Question :
Supposons que nous aimerions répondre à la question suivante :
Combien de temps un algorithme implémenter par un programme
Muhammad Ibn
Musa Al-Khwarizmi prend à s'exécuter ?
Réponse :
Méthode Empirique :
On peut par exemple lancer l’exécution du programme sur un
ordinateur et chronométré l'exécution de ce dernier; et dire plus
tard que l'exécution a fait par exemple 4 minutes.
On peut par la suite, lancer un autre programme pour le même
problème et obtenir par exemple 2 minutes de temps d'exécution.
Reproduction interdite 274
LE TEMPS (COMPLEXITE TEMPORELLE)
Conclusion :
On peut conclure que le programme faisant 2 minutes est le meilleur !!! . 
Faux
Concrètement c'est une mauvaise manière de tester l'efficacité d'un
programme car cette méthode dépend :
Muhammad Ibn
Musa Al-Khwarizmi
 de la machine utilisée;
 du jeu d’instructions utilisées
 de l’habileté du programmeur
 du jeu de données générées
 du compilateur choisi
Mais on n’a pas pris en compte la complexité des calculs du programme.
Reproduction interdite 275
LE TEMPS (COMPLEXITE TEMPORELLE)

Muhammad Ibn
Musa Al-Khwarizmi

Reproduction interdite 276


A QUOI ON S’INTERESSE ?  pire de cas

 Pour essayer d'estimer le temps que prend un programme à


s'exécuter on peut se servir du :

 Meilleur cas (Temps minimum pour toutes les entrées


Muhammad Ibn
Musa Al-Khwarizmi possibles)

 Pire cas (Temps maximum pour toutes les entrées


possibles)

 Cas moyen (Temps moyen pour toutes les entrées


possibles)

Reproduction interdite 277


A QUOI ON S’INTERESSE ?  pire de cas
 Par exemple pour la recherche linéaire d'un élément dans un tableau :

 Le meilleur cas est que l'on trouve l'élément à la première comparaison.


Muhammad Ibn  Le pire cas est que l'on parcoure tous les éléments de la liste et que
Musa Al-Khwarizmi
l'élément recherché ne s'y trouve pas.
 Le cas moyen est que l'élément recherché se trouve à la 2 ème, 3ème, 4ème
position par exemple.
 Nous nous intéresserons particulièrement au Pire Des Cas, car c'est celui
qui arrive le plus souvent. Les deux autres cas ne posent vraiment pas
grand problème.

Reproduction interdite 278


OPERATIONS ELEMENTAIRES

Muhammad Ibn
Musa Al-Khwarizmi

Reproduction interdite 279


COMPLEXITE & ORDRE DE GRANDEUR

Muhammad Ibn
Musa Al-Khwarizmi

Reproduction interdite 280


COMPLEXITE & ORDRE DE GRANDEUR

Muhammad Ibn
Musa Al-Khwarizmi

Reproduction interdite 281


COMPLEXITE & ORDRE DE GRANDEUR
Réponses :
1) Cette fonction calcule le factoriel du nombre fourni en argument.
2) C(n) = 1 + 1+ 5(n-1) + 1 = 5n-2
Discussion :
 Imaginons que n soit égal à 2000 nous aurons 5*2000 - 2 = 9998 instructions.
Muhammad Ibn
Musa Al-Khwarizmi
Malgré ce résultat, il est toujours difficile d'exprimer la complexité du programme
(difficile à classifier les algorithmes).
 En effet, on cherche ou plutôt on doit avoir une seule variable de référence (pas
une équation) car ce qui nous intéresse c'est la croissance de cette variable en
fonction des entrées du programme.
 Dans l’exemple précédent : Notre variable de référence est n  pourquoi ?
 On doit faire une approximation par limite a une fonction connu : 5n-2 ≈
n. (Voir la parte : ordre de grandeur)

Reproduction interdite 282


COMPLEXITE & ORDRE DE GRANDEUR

Muhammad Ibn
Musa Al-Khwarizmi

Reproduction interdite 283


COMPLEXITE & ORDRE DE GRANDEUR

Muhammad Ibn
Musa Al-Khwarizmi

Reproduction interdite 284


MODELE DE CROISSANCE (NOTIONS MATHEMATIQUES)
 En mathématique, il existe plusieurs modèles de croissance (selon la
forme de la courbe) :
 1 : représente le modèledes fonctions constantes.
Exp : f(n) = 5, f(n) = 8 , f(n) = 35 : (ont tous la même
forme de courbe  une ligne parallèle avec l’axe des
Muhammad Ibn x).
Musa Al-Khwarizmi
 n : représente le modèle des fonctions linéaire. Exp : f(n) =
3n+10, f(n) = n+30, f(n) = 12n-5 ...
 n2 : représente le modèle des fonctions quadratique.
 n3 : représente le modèle des fonctions cubique.
 2n : représente le modèle des fonctions exponentielle.
 Log(n) : représente le modèle des fonctions logarithmique.
 nLog(n) : représente le modèle des fonctions sous-quadratique .

Reproduction interdite 285


COMMENT TROUVER L’ORDRE DE GRANDEUR D’UN ALGORITHME

 Pour trouver à quelle modèle de complexité appartient notre


algorithme, on doit :

Muhammad Ibn
 Calculer la complexité « C » (le nombre d’instructions) pour n
Musa Al-Khwarizmi
et pour n+1, et faire la différence entre les deux. (n : doit être
le plus grand possible).

 Calculer f = C(n+1)-C(n) afin de trouver le modèle de


croissance qui limite f.

Reproduction interdite 286


COMMENT TROUVER L’ORDRE DE GRANDEUR D’UN ALGORITHME

Muhammad Ibn
Musa Al-Khwarizmi

Reproduction interdite 287


COMMENT TROUVER L’ORDRE DE GRANDEUR D’UN ALGORITHME

Muhammad Ibn
Musa Al-Khwarizmi

Reproduction interdite 288


COMMENT TROUVER L’ORDRE DE GRANDEUR D’UN ALGORITHME

Muhammad Ibn
Musa Al-Khwarizmi

Reproduction interdite 289


COMMENT TROUVER L’ORDRE DE GRANDEUR D’UN ALGORITHME

Exercice démonstratif N3 :
DEBUT
X 0
POUR i de 1 à n FAIRE
Muhammad Ibn POUR j de 1 n FAIRE
Musa Al-Khwarizmi

xx+1
FINPOUR
FNPOUR
FIN.
On a deux boucles imbriquées, dont chacune va s’exécuter n fois 
donc on a n*n itérations.

Reproduction interdite 290


COMMENT TROUVER L’ORDRE DE GRANDEUR D’UN ALGORITHME

Muhammad Ibn
Musa Al-Khwarizmi

Reproduction interdite 291


COMMENT TROUVER L’ORDRE DE GRANDEUR D’UN ALGORITHME

Muhammad Ibn
Musa Al-Khwarizmi

Reproduction interdite 292


PROPRIETES DU LANDAU

Muhammad Ibn
Musa Al-Khwarizmi

Reproduction interdite 293


ALGORITHMES & PROGRAMMATION I

CHAPITRE XI
Muhammad Ibn
Musa Al-Khwarizmi
INITIATION A LA COMPLEXITE
ALGORITHMIQUE

Reproduction interdite 294


EXERCICE INTRODUCTIF

 Exercice
Muhammad Ibn
Musa Al-Khwarizmi Ecrire une fonction qui prend en argument une chaine de
caractère et détermine si le caractère ‘a’ est présent dans la
chaîne (cette fonction retourne soit VRAI ou FAUX.

Reproduction interdite 295


EXERCICE INTRODUCTIF (SOLUTION 1)
Fonction contienta1(x : chaîne) : booléen
DEBUT
k  0
n  long(x)
Res  FAUX
Muhammad Ibn
Musa Al-Khwarizmi
TANTQUE((res=FAUX) ET (k<n)) FAIRE
SI x[k] = ‘a’ ALORS
Res  VRAI
kk+1
FINSI
FINTANTQUE
Retourner(res)
FINFONCTION

Reproduction interdite 296


EXERCICE INTRODUCTIF (SOLUTION 2)

FONCTION contienta2(x : chaîne) : booléen


DEBUT
POUR i de 1 à long(x) FAIRE
Muhammad Ibn
SI (x[i] = ‘a’) ALORS
Musa Al-Khwarizmi
Retourner(VRAI)
SINON
Retourner(FAUX)
FINSI
FINFONCTION

Reproduction interdite 297


EXERCICE INTRODUCTIF (SOLUTION 3)
FONCTION contienta3(x : chaîne) : booléen
DEBUT
n  (long(x) = compte(‘a’, x))
Retourner(n)
FINFONCTION
Muhammad Ibn
Musa Al-Khwarizmi

FONCTION contienta4(x : chaîne) : booléen


DEBUT
Retourner(present(‘a’, x))
FINFONCTION

Reproduction interdite 298


EXERCICE INTRODUCTIF

Questions

Muhammad Ibn 1. Que remarquez vous concernant cet exercice ?


Musa Al-Khwarizmi

2. Le code le plus court ! Est-il meilleur ?


3. Comment peut-on désigner le meilleur code parmi
ces quatre solutions ?

Reproduction interdite 299


DEFINITION DE LA COMPLEXITE D’UN ALGORITHME

 Généralement, pour le même problème P, on peut trouver


Muhammad Ibn plusieurs algorithmes.
Musa Al-Khwarizmi

 L’objectif de la complexité est d’évaluer le coût


d’exécution de chaque algorithme afin de choisir le
meilleur.

Reproduction interdite 300


DEFINITION DE LA COMPLEXITE D’UN ALGORITHME

Définition

 La complexité d’un problème mathématique est une


Muhammad Ibn
Musa Al-Khwarizmi mesure de la quantité de ressources nécessaires à la
résolution du problème P.

 Cette mesure est basée sur une estimation du nombre


d’opérations de base effectuées par l’algorithme en
fonction de la taille des données en entrée de
l’algorithme.

Reproduction interdite 301


PROBLEME

Muhammad Ibn
Musa Al-Khwarizmi
Comment évaluer le coût
d’exécution d’un algorithme
donné ?

Reproduction interdite 302


TYPE DE COMPLEXITE

 En fonction des ressources utilisées pour évaluer la


complexité d’un algorithme, on sera amené à distinguer
deux types de complexité :
Muhammad Ibn
Musa Al-Khwarizmi

1. Complexité temporelle

2. Complexité spatiale

Reproduction interdite 303


TYPE DE COMPLEXITE

Muhammad Ibn
Musa Al-Khwarizmi

Reproduction interdite 304


TYPE DE COMPLEXITE

2. Complexité spatiale (en espace)

La complexité en mémoire donne le nombre


Muhammad Ibn
Musa Al-Khwarizmi d’emplacements mémoires occupés lors de l’exécution
d’un programme.

Remarque
Dans ce cours, nous nous intéresserons uniquement à la complexité
temporelle.
Reproduction interdite 305
LA NOTATION « grand O »

Muhammad Ibn
Musa Al-Khwarizmi

Reproduction interdite 306


LA NOTATION « grand O »

Muhammad Ibn
Musa Al-Khwarizmi

Reproduction interdite 307


LA NOTATION « grand O »
 Dans les 2 exemples précédents il était facile de borner le
temps d’exécution afin de trouver la complexité.
 Mais en général il est difficile de trouver le seuil afin de borner
cette complexité.

Muhammad Ibn
 Pour cela on applique les règles suivante afin de simplifier
Musa Al-Khwarizmi
l’expression du temps d’exécution :
1. Tout d’abord on remplace les constante multiplicative par
1
2. On annule les constantes additives
3. On garde le terme de plus haut degré
 C’est ainsi qu’on peut calculer facilement la complexité du
programme en question
Reproduction interdite 308
Le COÛT DES INSTRUCTIONS ELEMENTAIRES

Muhammad Ibn
Musa Al-Khwarizmi

Reproduction interdite 309


Le COÛT DES INSTRUCTIONS ELEMENTAIRES
Opérations composées :
 On appelle opération composée, toute instruction contenant :
1. L’exécution d’une instruction conditionnelle : Si P est une
instruction conditionnelle du type SI b ALORS Q1 SINON
Muhammad Ibn Q2 FINSI, le nombre d’opération est :
Musa Al-Khwarizmi

Coût(P) = Coût(test) + max(Coût(Q1), Coût(Q2))


L’exécution d’une boucle : le temps d’une boucle est égal à la
multiplication du nombre de répétition par la somme du coût
de chaque instruction xi du corps de la boucle :

Coût(Boucle POUR) = ∑Coût(xi)


Coût(Boucle TANTQUE) = ∑Coût(comparaison) + Coût(xi)
Reproduction interdite 310
Le COÛT DES INSTRUCTIONS ELEMENTAIRES
3. L’appel d’une fonction : Lorsqu’une fonction ou une
procédure est appelée, le coût de cette fonction ou
procédure est le nombre total d’opérations élémentaires
engendrées par l’appel de cette fonction.

Muhammad Ibn
Musa Al-Khwarizmi
Exemple 3 : Que vaut le coût de l’algorithme B

SI(i modulo 2 = 0) ALORS


n  i div 2
SINON
i  i+1
n  i div 2
FINSI

Reproduction interdite 311


Le COÛT DES INSTRUCTIONS ELEMENTAIRES

Muhammad Ibn
Musa Al-Khwarizmi

Reproduction interdite 312


DIRRERENTES NUANCES DE COMPLEXITE
 Pour des données de même taille, un algorithme n’effectue
pas nécessairement le même nombre d’opérations
élémentaires.

Muhammad Ibn
 Pour cela, on distingue 3 types de complexité :
Musa Al-Khwarizmi

1. Complexité au pire des cas

2. Complexité dans le meilleur des cas

3. Complexité en moyenne des cas

Reproduction interdite 313


COMPLEXITE AU PIRE DES CAS

Muhammad Ibn
Musa Al-Khwarizmi

Reproduction interdite 314


COMPLEXITE AU PIRE DES CAS
Exemple : Recherche d’une élément dans un tableau
FONCTION trouver(T : tableau d’entiers , x : entier) :
booléen
DEBUT
POUR i de 1 à n FAIRE
SI (i = x) ALORS
Muhammad Ibn
Musa Al-Khwarizmi Retourner VRAI
SINON
Retourner FAUX
FINSI
FINPOUR
FINFONCTION
 On note n la longueur du tableau T (n = long(T))
 Dans le pire des cas, l’élément recherché x est le dernier (dans la case n) ou
absent.
 Donc la complexité dans le pire des cas est Cmax(n) = n
Reproduction interdite 315
COMPLEXITE DANS LE MEILLEUR DES CAS

Muhammad Ibn
Musa Al-Khwarizmi

Reproduction interdite 316


COMPLEXITE DANS LE MEILLEUR DES CAS

Exemple : Recherche d’un élément dans un tableau

 On considère le même exemple précédent.


Muhammad Ibn
Musa Al-Khwarizmi
 Dans le meilleur des cas, l’élément x se trouve en 1ère position.

 Donc la complexité dans le meilleur des cas est : Cmax(n) = 1

Reproduction interdite 317


COMPLEXITE EN MOYENNE DES CAS

Muhammad Ibn
Musa Al-Khwarizmi

Reproduction interdite 318


COMPLEXITE EN MOYENNE DES CAS

Muhammad Ibn
Musa Al-Khwarizmi

Reproduction interdite 319

Vous aimerez peut-être aussi