Vous êtes sur la page 1sur 444

Nous formons les experts de demain

ECOLE SUPERIEURE D’INGENIERIE ET D’INNOVATION TECHNOLOGIQUE

M5
ALGORITHMES & PROGRAMMATION I & II
OU
ALGORITHME & STRUCTURES DE DONNEES

Licence informatique (L1)

Reproduction interdite
Nous formons les experts de demain
ECOLE SUPERIEURE D’INGENIERIE ET D’INNOVATION TECHNOLOGIQUE

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
Reproduction interdite Tél. : 066049840 / 077684285
Objectifs du cours

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


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

Reproduction interdite
Reproduction interdite
3
Evaluation

 Contrôles (40%) inclus


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

Reproduction interdite
Reproduction interdite
4
Enseignement

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

Reproduction interdite
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
Reproduction interdite
6
ALGORITHMES & PROGRAMMATION I & II

Muhammad Ibn
Musa Al-Khwarizmi
PARTIE I
ALGORITHME & PROGRAMMATION I

Reproduction interdite
Reproduction interdite
7
Contenu du cours
1. Introduction à l’informatique
2. Le concept d’algorithme
3. Variables & actions de base

Muhammad Ibn
4. Les structures de contrôle
Musa Al-Khwarizmi
5. Tableaux
6. Chaînes de caractères
7. Procédures & Fonctions
8. Enregistrements
9. Fichiers

Reproduction interdite
Reproduction interdite
8
ALGORITHMES & PROGRAMMATION I

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

Reproduction interdite
Reproduction interdite
9
QU’EST-CEQUE L’INFORMATIQUE

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


technique, et industriel concernant le traitement
Muhammad Ibn
Musa Al-Khwarizmi

automatique de l'information numérique par l'exécution


de programmes informatiques par des machines appelées
ordinateurs.

Reproduction interdite
Reproduction interdite
10
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 (informatique mathématique) ;
 Pratique : s'intéresse aux techniques concrètes de mise
en œuvre.

Reproduction interdite
Reproduction interdite
11
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
Reproduction interdite
12
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
Reproduction interdite
13
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
Musa Al-Khwarizmi
 L’Informatique est la Science du traitement
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
Reproduction interdite
14
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
Reproduction interdite
15
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.


Muhammad Ibn
Musa Al-Khwarizmi 2. Le bit correspond à un état 0 ou 1.
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
Reproduction interdite
16
QU’EST-CEQUE L’INFORMATION

 Unité de capacité:

a) 8 bits  1 octet f) 1024 To  1 Po (Péta octets)


b) 1024 octets  1 Ko (Kilo octets) g) 1024 Po  1 Eo (Exa octets)
Muhammad Ibn
Musa Al-Khwarizmi
c) 1024 Ko  1 Mo (Méga octets) h) 1024 Eo  1 Zo (Zettaoctets)
d) 1024 Mo  1 Go (Giga octets) i) 1024 Zo  1 Yo (Yottaoctets).
e) 1024 Go  1 To (Téra octets)

Reproduction interdite
Reproduction interdite
17
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 utilisables.
Muhammad Ibn
Musa Al-Khwarizmi
 En général, un traitement peut être schématiser comme suit :

Reproduction interdite
Reproduction interdite
18
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
Musa Al-Khwarizmi
1. Acquisition, stockage : acquérir et conserver de
l’information,

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


actions,

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

 Restitution : restituer les informations stockées.


 Permet de lier « information »  « données » (0 ou
1)
Muhammad Ibn
Musa Al-Khwarizmi
 Différents types d’informations : valeurs numériques
(entiers non signés, entiers signés, réels,….), textes, images,
sons, vidéo… codés 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). Exemple du Guichet Automatique de Banque(GAB),…

Reproduction interdite
Reproduction interdite
20
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
Reproduction interdite
21
QU’EST-CE QU’UN ORDINATEUR ?

Muhammad Ibn
Musa Al-Khwarizmi

Reproduction interdite
Reproduction interdite
22
COMPOSANTS DE BASE D’UN ORDINATEUR

Muhammad Ibn
Musa Al-Khwarizmi

Reproduction interdite
Reproduction interdite
23
LE PROCESSEUR (CPU, UCT)

 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
Musa Al-Khwarizmi
 Le processeur n’est pas intelligent (il ne pense pas, il
calcule).

Reproduction interdite
Reproduction interdite
24
LE PROCESSEUR (CPU, UCT)

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 qui va
être exécuté par le processeur.

Reproduction interdite
Reproduction interdite
25
LE FONCTIONNEMENT D’UN ORDINATEUR

Muhammad Ibn
Musa Al-Khwarizmi

Reproduction interdite
Reproduction interdite
26
ALGORITHMES & PROGRAMMATION I

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

Reproduction interdite
Reproduction interdite
27
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
Reproduction interdite
28
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
Reproduction interdite
29
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 informations
Muhammad Ibn
Musa Al-Khwarizmi
dont on dispose et les résultats à obtenir.
 Déterminer les méthodes de résolution : il 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
Reproduction interdite
30
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
Reproduction interdite
31
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
Reproduction interdite
32
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
Reproduction interdite
33
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
Reproduction interdite
34
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 partie, 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
Reproduction interdite
35
LES ACTIONS DE BASE D’UN ALGORITHME

 Une action peut être une :


 Action d'affectation,
 Action d'entrée/sortie,
Muhammad Ibn
Musa Al-Khwarizmi
 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
Reproduction interdite
36
QU’EST-CE QU’UN BON ALGORITHME ?

 On peut noter qu’un bon algorithme est un schéma de


résolution possédant les caractéristiques suivantes :
 Correct : s’il répond au problème posé.
Muhammad Ibn
Musa Al-Khwarizmi
 Précis : s’il fournit exactement les résultats
attendus.
 Rapide : s’il utilise un temps d’exécution minimal
indépendamment de la vitesse de la machine.

Reproduction interdite
Reproduction interdite
37
PROPRIETES D’UN ALGORITHME

 Efficace : s’il utilise le moins d’espace mémoire


possible.
Muhammad Ibn
Musa Al-Khwarizmi
 Clair et lisible : s’il ne présente pas de difficulté de
compréhension pour un autre programmeur désirant le
maintenir ou le développer.
 Résistant : s’il est capable de détecter les cas de
mauvaise utilisations.

Reproduction interdite
Reproduction interdite
38
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

 Offre une vue d’ensemble de l’algorithme


 Représentation quasiment abandonnée aujourd’hui

Reproduction interdite
Reproduction interdite
39
Convention D’ECRITURE : L’ORGANIGRAMME

Muhammad Ibn
Musa Al-Khwarizmi

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

 Une série de conventions appelées « pseudo-code » avec une


syntaxe qui ressemble à un langage de programmation;
 Ce pseudo-code est aussi appelé LDA (Langage de
Muhammad Ibn Description d’Algorithme);
Musa Al-Khwarizmi

 Son avantage est de pouvoir être facilement transcrit


dans un langage de programmation.
 Plus pratique pour écrire un algorithme
 Représentation largement utilisée

Reproduction interdite
Reproduction interdite
41
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
Reproduction interdite
42
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
Reproduction interdite
43
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
Reproduction interdite
44
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 comprenant un
Musa Al-Khwarizmi
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
Reproduction interdite
45
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é) ?
Muhammad Ibn
Musa Al-Khwarizmi  REPONSE : Le programme écrit en langage évolué (C, C++,
Python) sera traduit en langage machine par un programme
particulier appelé traducteur (compilateurs ou interpréteur).

Reproduction interdite
Reproduction interdite
46
LANGAGE DE PROGRAMMATION
 Compilateur :
 Traduit une fois pour toutes, les programmes dans leur
ensemble :
tout le programme est fourni au compilateur pour la traduction et
son résultat sera un nouveau fichier autonome, c'est-à-dire qui
Muhammad Ibn
Musa Al-Khwarizmi 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
Reproduction interdite
47
LANGAGE DE PROGRAMMATION
 Interpréteur :

 Traduit les programmes instruction par instruction et


soumet chaque instruction traduite au processeur pour
exécution.
Muhammad Ibn
Musa Al-Khwarizmi
 Un langage de programmation pour lequel un interpréteur
est disponible est appelé un langage interprété

Reproduction interdite
Reproduction interdite
48
LANGAGE DE PROGRAMMATION

Muhammad Ibn
Musa Al-Khwarizmi

Reproduction interdite
Reproduction interdite
49
ALGORITHMES & PROGRAMMATION I

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

Reproduction interdite
Reproduction interdite
50
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
Musa Al-Khwarizmi  Résultat d’un programme (intermédiaire ou 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
Reproduction interdite
51
REPRESENTATION D’UNE VARIABLE DANS LA MEMOIRE

Muhammad Ibn
Musa Al-Khwarizmi

Reproduction interdite
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.
 Il existe cinq (5) types de base ou primitifs avec lesquels on
Muhammad Ibn
peut construire d’autres types dits « types construits »
Musa Al-Khwarizmi

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

Logique ou Booléen VRAI; FAUX Booléen

Reproduction interdite
Reproduction interdite
53
Les types NUMERIQUES

Type numérique Taille


Plage de valeurs mémoire
Byte(octet) -128 à 127 signé - 0 à 255 non 1 octet
signé

Muhammad Ibn
Entier simple -32 768 à 32 767 2 octets
Entier long -2 147 483 648 à 2 147 483 4 octets
Musa Al-Khwarizmi

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
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

 exemple valide : A1 exemple invalide : 1A


Muhammad Ibn
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
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 :
Muhammad Ibn c’est ce qu’on appelle le type de la variable
Musa Al-Khwarizmi
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
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
Reproduction interdite
57
LES Expressions

 Une expression est une suite finie formée d’opérateurs


arithmétiques, logiques et de comparaison portant sur
Muhammad Ibn
Musa Al-Khwarizmi des variables ou des valeurs numériques et qui a une valeur
numérique.

 L'évaluation de l'expression fournit une valeur unique qui est le


résultat de l'opération

Reproduction interdite
Reproduction interdite
58
OPERATEURS ARITHMETIQUES
 Opérateurs arithmétiques :

Opérateur Type d’opérandes exemple

Réel, entier (élévation à la puissance)  x2,


/ Réel, entier (division réelle) 5/2 = 2.5
Muhammad Ibn
Musa Al-Khwarizmi
Réel, entier (produit) 5*3
Réel, entier (addition) 5+2
Réel, entier (soustraction) 4-1
DIV Entier (quotient de la division entière) 9 DIV 3 = 3 13 DIV 5 = 2 3 DIV 5 = 0
MOD Entier (mod : reste de la division 9 MOD 3 = 0 13 MOD 5 = 3 5 MOD 3 = 2
entière)

 Exemples d’expressions arithmétiques : (x-y)*z, x↑2–


3*t…

Reproduction interdite
Reproduction interdite
59
ESPRESSION ARITHMETIQUES
 Une expression arithmétique peut contenir des
opérateurs logiques (NON, OU, ET), des opérateurs
arithmétiques (+, -, /, *, MOD, DIV, ) ainsi que
des opérateurs de comparaison (=, <, <=, >, >=,
<>)
Muhammad Ibn
Musa Al-Khwarizmi
 Opérateurs logiques :
A B A ET B A OU B NON A
VRAI VRAI VRAI VRAI FAUX
VRAI FAUX FAUX VRAI FAUX
FAUX VRAI FAUX VRAI VRAI
FAUX FAUX FAUX FAUX VRAI

 Exemple d’une expression logique : NON((x<5) OU


(y>=3))
Reproduction interdite
Reproduction interdite
60
PRIORITE DES OPERATEURS
 Priorité des opérateurs
L'évaluation des expressions se fait généralement de gauche à
droite en respectant les règles de priorité suivantes sur les
opérateurs (classées selon l’ordre décroissant) :
Muhammad Ibn 1) Les parenthèses (on commence par les plus +
internes).
Musa Al-Khwarizmi

2) Les fonctions
3) Le NON logique, et le – (unaire)
4) *, /, MOD, DIV, ET
5) +, -, OU -
6) Les opérateurs relationnels (=, <, <=, >, >=,
<>)
Reproduction interdite
Reproduction interdite
61
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
Reproduction interdite
62
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
Reproduction interdite
63
Les types d’affectation : Type 1
 Possibilité d’affecter une valeur de même type à
une variable

Identificateur  valeur

Muhammad Ibn Exemples :


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

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

Identificateur  Identificateur
Muhammad Ibn
Musa Al-Khwarizmi Exemples :
Prenom1 Prenom3
Prenom2 Prenom1
Prenom3 Prenom2

Reproduction interdite
Reproduction interdite
65
Les types d’affectation : Type 3

 Possibilitéd’affecter une expression de type


compatible à une variable :

Muhammad Ibn 1. C’est le cas quand elles sont du même type ou


Musa Al-Khwarizmi
quand l’expression est entière et la variable
réelle.
réel  entier (juste)

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


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

Reproduction interdite
Reproduction interdite
66
Les types d’affectation : Type 3

Identificateur  Expression

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
Reproduction interdite
67
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
Reproduction interdite
68
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
Reproduction interdite
69
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
Reproduction interdite
70
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
Reproduction interdite
71
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
Reproduction interdite
72
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
Reproduction interdite
73
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 :
Lire(N)
Muhammad Ibn
Musa Al-Khwarizmi  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
Reproduction interdite
74
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 à
Muhammad Ibn
Musa Al-Khwarizmi
des données affichées à l’écran par l’algorithme
(ordinateur) : Ecrire(V)

 L’instruction Ecrire indique que la valeur stockée dans


la variable V va être affichée à l’écran.

Reproduction interdite
Reproduction interdite
75
Lecture

 Lecture  Saisir au clavier et affecter ce qui est


saisi aux variables déjà définies

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

Reproduction interdite
Reproduction interdite
76
ecriture

 Ecriture  Afficher à l’écran

Cas Syntaxe Exemples


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

Reproduction interdite
Reproduction interdite
77
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
Reproduction interdite
78
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
Reproduction interdite
79
ALGORITHMES & PROGRAMMATION I

Muhammad Ibn
Musa Al-Khwarizmi CHAPITRE IV
STRUCTURES DE CONTROLE

Reproduction interdite
Reproduction interdite
80
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
Reproduction interdite
81
INTRODUCTION

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


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

 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
Reproduction interdite
82
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
Reproduction interdite
83
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
Reproduction interdite
84
LA SEQUENCE

 Chaque 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
Reproduction interdite
85
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 condition
Muhammad Ibn
Musa Al-Khwarizmi est vérifiée.

 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
Reproduction interdite
86
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
Reproduction interdite
87
ALTERNATIVE SI…ALORS…SINON
 On utilisera la forme
suivante :

SI (condition) ALORS
Muhammad Ibn Instruction(s) 1
Musa Al-Khwarizmi
SINON
Instruction(s) 2
FINSI

Reproduction interdite
Reproduction interdite
88
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
Reproduction interdite
89
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
Reproduction interdite
90
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
Reproduction interdite
91
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
Reproduction interdite
92
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
Reproduction interdite
93
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
Reproduction interdite
94
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
Reproduction interdite
95
SOLUTION DE L’EXERCICE
Algorithme Divsible_par3
Variable n : entier
DEBUT
Ecrire(" Entrez un entier : ")

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

Reproduction interdite
Reproduction interdite
96
Conditions COMPOSEES

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


plusieurs conditions simples reliées par des opérateurs
logiques : ET, OU, 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 MOD 3 = 0) OU (n MOD 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
Reproduction interdite
97
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
Reproduction interdite
98
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
Reproduction interdite
99
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
Reproduction interdite
100
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
Reproduction interdite
101
EXEMPLE (VESRION 2)

 Remarque : dans la version 2 on fait trois tests


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

 Conseil : utiliser les tests imbriqués pour limiter le


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

Reproduction interdite
Reproduction interdite
102
EXERCICE

 Ecrivez un algorithme qui demande à l’utilisateur d’entrer


la température de l’eau, et affiche ensuite l’état de l’eau
Muhammad Ibn selon la température (on rappelle que l’état de l’eau est
Musa Al-Khwarizmi
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
Reproduction interdite
103
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 de la vapeur")
SINON
Ecrire("C’est du liquide ")
FINSI
FINSI
FIN

Reproduction interdite
Reproduction interdite
104
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
Reproduction interdite
105
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
Reproduction interdite
106
EXERCICE

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

Reproduction interdite
Reproduction interdite
107
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
Reproduction interdite
108
Exercice

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

Reproduction interdite
Reproduction interdite
109
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
Reproduction interdite
110
Exercice

Muhammad Ibn  Ecrire un algorithme qui calcule la taxe sur le chiffre d’affaire
Musa Al-Khwarizmi
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
Reproduction interdite
111
Solution de l’exercice
Algorithme calcul_taxe
Variables CA, taxe : Réel
DEBUT
Ecrire(˝Saisir le chiffre d’affaire :˝)
Lire(CA)
SI (CA < 100000) ALORS
Muhammad Ibn
Musa Al-Khwarizmi

taxe CA*0.1
SINON
taxe CA*0.2
FINSI
Ecrire(˝La taxe est˝, taxe)
FIN

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

ValeurN : actionN
SINON Autre action
 Si expression FINSELON
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.
 On l’appelle « structure choix »
Reproduction interdite
Reproduction interdite
113
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
Reproduction interdite
114
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 SINON 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
Reproduction interdite
115
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 une valeur initiale et une valeur
finale. Reproduction interdite
Reproduction interdite
116
LA boucle « TANTQUE…FAIRE »

TANTQUE (condition) FAIRE


Instruction(s)
FINTANTQUE
Muhammad Ibn
Musa Al-Khwarizmi

Reproduction interdite
Reproduction interdite
117
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
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
Reproduction interdite
118
LA boucle « TANTQUE…FAIRE »

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


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

 L’opérateur de comparaison dans une condition simple


est appelé un opérateur relationnel.

Reproduction interdite
Reproduction interdite
119
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
Reproduction interdite
120
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 l'évolution de la valeur de
Muhammad Ibn
Musa Al-Khwarizmi 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
Reproduction interdite
121
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
Reproduction interdite
122
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
Reproduction interdite
123
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
Reproduction interdite
124
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 la condition soit vrai (tant qu'elle est fausse)

Reproduction interdite
Reproduction interdite
125
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
Reproduction interdite
126
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
Reproduction interdite
127
La boucle « POUR… FAIRE »
POUR compteur  initiale à finale pas val_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
Reproduction interdite
128
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
Reproduction interdite
129
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


finale :
Muhammad Ibn
Musa Al-Khwarizmi
a) Si la valeur du compteur est > à finale dans le cas
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 <= à finale dans le cas d'un pas
positif (ou si compteur est >= à finale pour un pas
négatif), les instructions seront exécutées.
Reproduction interdite
Reproduction interdite
130
DEROULEMENT DE La boucle « POUR …FAIRE »

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


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

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


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

Reproduction interdite
Reproduction interdite
131
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
Reproduction interdite
132
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
Reproduction interdite
133
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
Reproduction interdite
134
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
Muhammad Ibn POUR…FAIRE
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
Reproduction interdite
135
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é instructions
par :
compteur  compteur +
(cas d'un pas positif) pas
FINTANQUE
Reproduction interdite
Reproduction interdite
136
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
Reproduction interdite
137
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
Reproduction interdite
138
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
Reproduction interdite
139
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
Reproduction interdite
140
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 boucle POUR…
Muhammad Ibn FAIRE.
Musa Al-Khwarizmi

 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
Reproduction interdite
141
CHOIX D’UN TYPE DE BOUCLE (1)

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

 Si on doit tester la condition de contrôle avant de


Muhammad Ibn
commencer les instructions de la boucle, on utilisera
Musa Al-Khwarizmi 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
Reproduction interdite
142
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
Musa Al-Khwarizmi
ALORS
Boucle REPETER JUSQU’À

SINON
Boucle TANTQUE…FAIRE

FINSI
FINSI
Reproduction interdite
Reproduction interdite
143
ALGORITHMES & PROGRAMMATION I

Muhammad Ibn
Musa Al-Khwarizmi CHAPITRE I,II,III,IV
RECAPITULATIF

Reproduction interdite
Reproduction interdite
144
Structure GENERALE d’un algorithme
Algorithme <Nom de l’algorithme> Structure_Algorithme L’entête
Constantes
<Liste des constantes avec leurs valeurs>
Identificateur = valeur
La partie
Types déclarativ
<définition des types définis par
Muhammad Ibn e
Musa Al-Khwarizmi
l’utilisateurs>
Variables
<Liste de variables suivis de leurs types>
Identificateur : Type

DEBUT
Instruction 1
Instruction 2 Le corps de
<Séquence d’actions>
… l’algorithme
Instruction N
FIN

Reproduction interdite
Reproduction interdite
145
OPERATEURS ARITHMETIQUES

Opérateur Type d’opérandes exemple

Réel, entier (élévation à la puissance)  x2,


/ Réel, entier (division réelle) 5/2 = 2.5
Muhammad Ibn
Musa Al-Khwarizmi
Réel, entier (produit) 5*3
Réel, entier (addition) 5+2
Réel, entier (soustraction) 4-1
DIV Entier (quotient de la division entière) 9 DIV 3 = 3 13 DIV 5 = 2 3 DIV 5 = 0
MOD Entier (mod : reste de la division 9 MOD 3 = 0 13 MOD 5 = 3 5 MOD 3 = 2
entière)

Reproduction interdite
Reproduction interdite
146
PRIORITE DES OPERATEURS ARITHMETIQUES
Priorité des opérateurs

L'évaluation des expressions se fait généralement de gauche à


droite en respectant les règles de priorité suivantes sur les
opérateurs (classées selon l’ordre décroissant) :
Muhammad Ibn 1)Les parenthèses (on commence par les plus
internes).
Musa Al-Khwarizmi

2)Les fonctions
3)Le NON logique, et le – (unaire)
4)*, /, MOD, DIV, ET
5)+, -, OU
6)Les opérateurs relationnels (=, <, <=, >, >=, <>)

Reproduction interdite
Reproduction interdite
147
OPERATEURS DE COMPARAISON & OPRERATEURS LOGIQUES
 =, <, <=, >, >=, <>
5<7
4<>4
13.5<=15
2>1
Muhammad Ibn
Musa Al-Khwarizmi
 ET, OU, NON, TABLE DE VERITE

A B A ET B A OU B NON A
VRAI VRAI VRAI VRAI FAUX
VRAI FAUX FAUX VRAI FAUX
FAUX VRAI FAUX VRAI VRAI
FAUX FAUX FAUX FAUX VRAI

Reproduction interdite
Reproduction interdite
148
dialogue homme-machine & AFFECTATION
 L’affichage des informations
 Ecrire(" message ") ou Ecrire(valeur)
 Ecrire("Donner la valeur de a : ")
 Ecrire(x)
 Ecrire(" Le résultat trouvé est : " , x)
Muhammad Ibn
Musa Al-Khwarizmi  L’instruction Lire
 Lire(variable)
 Lire(a)

 Affectation
 Notation : Identificateur  Expression
 b  a+3
 c  4*a-b

Reproduction interdite
Reproduction interdite
149
TYPE DE VARIABLES
 Entiers:

 -3, 2, 0, 1
 Réels

Muhammad Ibn
Musa Al-Khwarizmi
 -1.5, 3.14
 Caractères & chaîne de caractères
 ‘M’, ‘a’, ‘@’, ‘&’, ‘+’…
 "Algorithme"
 Booléens
 Vrai
 Faux

Reproduction interdite
Reproduction interdite
150
INSTRUCTION ALTERNATIVE « SI »

SI (condition) ALORS

instruction(s) 1

Muhammad Ibn
Musa Al-Khwarizmi
SINON
Option facultative
instruction(s) 2

FINSI

Reproduction interdite
Reproduction interdite
151
INSTRUCTION A choix multiple « selon »
SELON (Expression) FAIRE

valeur1: action1

valeur2: action2
Muhammad Ibn


Musa Al-Khwarizmi

valeurN : actionN

SINON autre action

FINSELON

Reproduction interdite
Reproduction interdite
152
INSTRUCTION REPETITIVE « TANTQUE »

Initialisation

TANTQUE (condition) FAIRE


Muhammad Ibn
Musa Al-Khwarizmi

bloc de traitement
Actions
bloque de contrôle

FINTANQUE

Reproduction interdite
Reproduction interdite
153
INSTRUCTION REPETITIVE « REPETER…JUSQU’À

Initialisation

REPETER
Muhammad Ibn
Musa Al-Khwarizmi
bloc de
traitement Actions

bloc de
progression

JUSQU’À (condition)

Reproduction interdite
Reproduction interdite
154
INSTRUCTION REPETITIVE « POUR »

POUR variable val1 à val2 pas val_pas FAIRE


Muhammad Ibn
Musa Al-Khwarizmi bloc de traitement Actions

FINPOUR

Reproduction interdite
Reproduction interdite
155
REMARQUES

TANTQUE REPETER JUSQU’À


Muhammad Ibn
Musa Al-Khwarizmi

REPETER JUSQU’À POUR

Reproduction interdite
Reproduction interdite
156
ALGORITHMES & PROGRAMMATION I

Muhammad Ibn
Musa Al-Khwarizmi CHAPITRE V
tableaux

Reproduction interdite
Reproduction interdite
157
Notion de variables STRUCTUREES

 Jusqu’à présent, nous avons utilisé des variables de


type standards et qui prennent un seul
emplacement dans la mémoire (variable simple).
Muhammad Ibn
Musa Al-Khwarizmi
 Dans de nombreuse applications, on souhaite regrouper
plusieurs données dans une seule variable (variable
structurée).

Reproduction interdite
Reproduction interdite
158
Notion de variables STRUCTUREES
Exemple 1: Supposons que nous souhaitons déterminer à
partir de 30 notes fournies en entrée, le nombre
d’étudiants qui ont une note supérieure à la moyenne
de la classe.

Muhammad Ibn
Pour parvenir à un tel résultat, nous devons :
Musa Al-Khwarizmi
1. Lire les 30 notes,
2. Déterminer la moyenne de la classe : moy
3. Compter combien de notes parmi les 30 notes sont
supérieures à la moyenne: moy
Donc, il faut conserver les notes en mémoire afin qu’elles
soient accessibles durant l’exécution du programme.
Reproduction interdite
Reproduction interdite
159
Notion de variables STRUCTUREES

Solution 1 : Utiliser 30 variables réelles nommées N1,


N2, …, N30. Mais cette façon de faire présente des
inconvénients :
Muhammad Ibn
Musa Al-Khwarizmi

1. Il faut réserver un nom de variable par note ;

2. Il n y a aucun lien entre ces variables. Or, dans


certains cas, on doit appliquer le même traitement sur
l’ensemble des variables :

Reproduction interdite
Reproduction interdite
160
Notion de variables STRUCTUREES
Nbre  0
SI (N1 > Moy_classe)
ALORS
Nbre  Nbre+1
FINSI
Muhammad Ibn C’est lourd à écrire
Musa Al-Khwarizmi

SI (N30 > Moy_classe)
ALORS
Nbre  Nbre+1
Afin d'éviter la multiplication du FINSI
nombre des variables (30), les
langages de programmation offrent la possibilité de rassembler
ces variables dans une seule structure de donnée appelée :
Tableau
Reproduction interdite
Reproduction interdite
161
Notion de variables STRUCTUREES

Solution 2 : On a la possibilité de regrouper toutes ces


notes (N1, N2, … N30) dans une seule variable structurée
composée de 30 cases juxtaposées et de même type appelée
Muhammad Ibn
Musa Al-Khwarizmi Tableau.

1. Attribuer un seul nom à l’ensemble des 30 notes, par


exemple N.

2. Repérer chaque note par ce nom (N) suivi entre


crochets d’un numéro entre 1 et 30 : N[1], N[2],…,N[30]

Reproduction interdite
Reproduction interdite
162
Notion de variables STRUCTUREES
Ce tableau qu’on peut présenter par le schéma suivant :
N[1] N[2] N[3] N[4] N[28] N[29] N[30]

15 13.5 14 10.25 … … … 11 18 19

Muhammad Ibn
Musa Al-Khwarizmi En général, nous choisirons la valeur 0 pour la borne
inférieure dans le but de faciliter la traduction des
algorithmes vers d’autres langages de
programmation (C, Java, ...). Ainsi, on peut écrire :
N[0] N[1] N[2] N[3] … N[27] N[28] N[29]

Reproduction interdite
Reproduction interdite
163
DEFINITIONS
 Un tableau est une variable structurée, composé d’un
ensemble d'éléments de même type, désigné par un
identificateur unique.
 Le type d'un tableau précise le type (commun) de tous les
Muhammad Ibn éléments
Musa Al-Khwarizmi
 L’ensemble des éléments d’un tableau sont, ordonnés
(cases mémoires numérotées ), identifiés par un nom et
directement accessibles au moyen d’un indice.
 Un indice, est une variable entière, permet d'indiquer
la position d'un élément donné au sein du tableau et de
déterminer sa valeur.

Reproduction interdite
Reproduction interdite
164
DEFINITIONS
 Pour définir une variable de type tableau, il faut
préciser :
 Le nom identifiant le tableau
 Le type des éléments
Muhammad Ibn
Musa Al-Khwarizmi
 L’indice
 Chaque variable du tableau est donc caractérisée par le
nom du tableau et son indice.

Reproduction interdite
Reproduction interdite
165
DECLARATION D’UN TABLEAU
 La déclaration d’un tableau à une dimension montre en particulier
sa taille et le type de ces éléments
Syntaxe :
Variable Nom_Tableau:tableau[borne_inf..borne_sup] de
type_éléments
Muhammad Ibn
Musa Al-Khwarizmi

OU
Variable Nom_Tableau:tableau [borne_sup] de
type_éléments
 Le tableau contient (borne_sup-borne_inf+1) éléments

Reproduction interdite
Reproduction interdite
166
DECLARATION D’UN TABLEAU
Exemple :
Variable T: tableau[1..20] d’entiers
OU
Variable T: tableau[20] d’entiers
Muhammad Ibn
Musa Al-Khwarizmi

Var T2:tableau[1..20] de réel;


On déclare un tableau qui stockera 20 valeurs entières
On déclare un tableau qui stockera 20 valeurs réelles
Var T3:tableau[1..30] de caractère; On déclare un tableau
qui stockera 30 caractères

Reproduction interdite
Reproduction interdite
167
ALGORITHMES & PROGRAMMATION I

Muhammad Ibn
Musa Al-Khwarizmi CHAPITRE VBIS
tableaux

Reproduction interdite
Reproduction interdite
168
EXEMPLE INTRODUCTIF

 Supposons qu'on veut conserver les notes d'une classe de 30


étudiants pour extraire quelques informations. Par exemple :
Muhammad Ibn calcul du nombre d'étudiants ayant une note supérieure à 10
Musa Al-Khwarizmi

 Le seul moyen dont nous disposons actuellement consiste à


déclarer 30 variables, par exemple N1, …, N30. Après 30
instructions Lire, on doit écrire 30 instructions SI pour faire le
calcul

Reproduction interdite
Reproduction interdite
169
EXEMPLE INTRODUCTIF

nbre  0
SI (N1 >10) alors nbre  nbre+1 FINSI

SI (N30>10) alors nbre  nbre+1 FINSI
Muhammad Ibn
Musa Al-Khwarizmi
c'est lourd à écrire
 Heureusement, les langages de programmation offrent la possibilité
de rassembler toutes ces variables dans une seule structure de
donnée appelée tableau

Reproduction interdite
Reproduction interdite
170
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
Reproduction interdite
171
LES TABLEAUX : DECLARATION
variable tableau identificateur[dimension] : type

Exemple :

Muhammad Ibn
variable tableau notes[30] : réel
Musa Al-Khwarizmi

 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
Reproduction interdite
172
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
Reproduction interdite
173
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
Reproduction interdite
174
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
Reproduction interdite
175
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
Reproduction interdite
176
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
Reproduction interdite
177
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
Reproduction interdite
178
TABLEAUX : EXEMPLE (2)

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


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

Reproduction interdite
Reproduction interdite
179
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
Reproduction interdite
180
TABLEAUX : EXERCICE

 Soit T un tableau de N entiers.


Muhammad Ibn
Musa Al-Khwarizmi
Ecrire l’algorithme qui détermine le plus grand élément de ce
tableau.

Reproduction interdite
Reproduction interdite
181
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
Reproduction interdite
182
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
Muhammad Ibn
Musa Al-Khwarizmi
exemple pour représenter des matrices.

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


variable tableau identificateur[dimension1][dimension2] :
type

Reproduction interdite
Reproduction interdite
183
TABLEAUX A DEUX DIMENSIONS

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


éléments sont réels : variable tableau A[3][4] : réel
Muhammad Ibn
Musa Al-Khwarizmi
 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
Reproduction interdite
184
LECTURE D’UNE MATRICE

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


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

Reproduction interdite
Reproduction interdite
185
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
Reproduction interdite
186
AFFICHAGE D’UNE MATRICE

Muhammad Ibn
Musa Al-Khwarizmi  Algorithme qui permet d'afficher les éléments d'une matrice de
vingt lignes et cinquante colonnes :

Reproduction interdite
Reproduction interdite
187
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
Reproduction interdite
188
SOMME DE DEUX MATRICES

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

Reproduction interdite
Reproduction interdite
189
SOMME DE DEUX MATRICES (CORRIGE)

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
Reproduction interdite
190
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
Reproduction interdite
191
Tableaux à N dimensions

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


à 3 dimensions*)

Muhammad Ibn
 La manipulation d’un tableau à plusieurs dimensions suit le
Musa Al-Khwarizmi
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
Reproduction interdite
192
ALGORITHMES & PROGRAMMATION I

Muhammad Ibn
Musa Al-Khwarizmi CHAPITRE VI
Les CHAINES DE CARACTERES

Reproduction interdite
Reproduction interdite
193
LES CHAINES DE CARACTERES
 Dans notre monde, chaque objet a au moins un nom lui
permettant d'être reconnu ou identifié.
 Ce ou ces noms peuvent évidemment être complétés par un ou
plusieurs chiffres, cependant, il est rare que seul un code
Muhammad Ibn
Musa Al-Khwarizmi
numérique soit utilisé.
 Cette situation implique que tout traitement informatique
comportera des manipulations de tels noms qui sont appelés
« chaînes de caractères ».

 Formellement, on appelle une chaîne de caractères toute suite


de zéro, un ou plusieurs caractères accolés.

Reproduction interdite
Reproduction interdite
194
LES CARACTERES

 Si une variable est déclarée de type caractère, elle va


occuper un octet en mémoire.
Muhammad Ibn
Musa Al-Khwarizmi
 Le type caractère représente le domaine des caractères qui
contient les lettre alphabétiques minuscules, les caractères
numériques, les caractères spéciaux (., ?, !, <, >, =, *,
+, ...etc), et le caractère espace ...etc.

Reproduction interdite
Reproduction interdite
195
QU’Est-ce QUE LE CODE ASCII ?

 Vu que les données sont stockées sous forme numérique


dans la mémoire de l'ordinateur, la solution pour stocker
les caractères est de donner à chaque caractère un code
Muhammad Ibn
Musa Al-Khwarizmi
numérique équivalent.
 Là, le code ASCII (American Standard Code for
Information Interchange) est apparu. C'est un code
standardisé qui permet d'unifier la représentation des
caractères ainsi que la communication entre les
ordinateurs.

Reproduction interdite
Reproduction interdite
196
QU’Est-ce QUE LE CODE ASCII ?
 Le code ASCII, ou table ASCII, est basé sur un principe
assez simple où chaque caractère (chiffre, lettre, etc.)
possède un code numérique pour pouvoir être stocké et
interprété par un ordinateur.
Muhammad Ibn
Musa Al-Khwarizmi
 Dans sa première version, le code ASCII représente les
caractères sur 7 bits (c'est-à-dire 128 caractères possibles,
de 0 à 127). Ensuite, il a été étendu pour utiliser 8 bits (28
= 256 caractères) afin de permettre le codage des
caractères nationaux (non seulement anglais tels que les
caractères accentués comme : ù, à, è, é, â,...etc) et les
caractères semi-graphiques.

Reproduction interdite
Reproduction interdite
197
QU’Est-ce QUE LE CODE ASCII ?

 En effet, d'autres codages existent adaptés à diverses solution de


stockage de l’information (Unicode sur 16 bits, DCB, EBCDIC,...).
La table ASCII regroupe donc l'ensemble des caractères comme
Muhammad Ibn
Musa Al-Khwarizmi
suit :
1. Les codes 0 à 31 représentent des caractères de contrôle qui
permettent de réaliser certaines actions précises comme le
caractère NULL (#00), Bip sonore ("BEL" #07), un saut de
ligne ("Entrée" #10), Retour chariot ("CR" #13), ... etc.
2. L'ensemble des chiffres de '0' à '9' (à partir du code #48 à #57).

Reproduction interdite
Reproduction interdite
198
QU’Est-ce QUE LE CODE ASCII ?

3. Les lettres de l'alphabet en majuscules de 'A' à 'Z' (à partir


du code #65 à #90).
Muhammad Ibn 4. Les lettres de l'alphabet en minuscules de 'a' à 'z' (à partir
Musa Al-Khwarizmi
du code #97 à #122).
 En plus, il regroupe aussi d'autres caractères semi-graphiques
comme les barres verticales, les accolades ouvrante ou
fermante, les crochets, les accents, ... etc.

Reproduction interdite
Reproduction interdite
199
CODE ASCII A 8 BITS

Muhammad Ibn
Musa Al-Khwarizmi

Reproduction interdite
Reproduction interdite
200
LE TYPE CARACTERE
1. Définition
 Ce type s’applique à tous les caractères du code ASCII
(American Standard Code for Information Interchange). La liste
comprend :
Muhammad Ibn
Musa Al-Khwarizmi
 Les lettres : ˝A˝ ... ˝Z˝, ˝a˝... ˝z˝
 Les chiffres : ˝0˝... ˝9˝
 Les caractères spéciaux : ˝/˝ ; ˝*˝ ; ˝?˝ ; ˝&˝ ; etc.
 Les caractères de contrôle : <Retour Chariot> ; <Echap> ;
etc.
 Chaque caractère est défini par son numéro d’ordre unique
compris entre 0 et 255.
Reproduction interdite
Reproduction interdite
201
LE TYPE CARACTERE
2. Fonctions standards sur les
caractères
Fonction Rôle Exemple
Retourne le code ASCII du caractère i Asc(˝A˝)
Asc(c) c  i Contiendra 65
c Car(65)
Muhammad Ibn
Car(i) Retourne le caractère dont le code
Musa Al-Khwarizmi
ASCII est égal à i  c Contiendra
˝A˝
c Succ(˝a˝)
Succ(c) Retourne le successeur du caractère
c  c Contiendra
˝b˝
c Pred(˝b˝)
Pred(c) Retourne le prédécesseur du
caractère c  c Contiendra
˝a˝
c Majus(˝a˝)
Majus(c) Retourne la majuscule du caractère c  c Contiendra
˝A˝
Reproduction interdite
Reproduction interdite
202
exemple

 Ecrire un algorithme qui lit un caractère au clavier


puis affiche son prédécesseur, son successeur et le
Muhammad Ibn
Musa Al-Khwarizmi
code ASCII de son équivalent en majuscule.

Reproduction interdite
Reproduction interdite
203
Exemple (SOLUTION)

Algorithme Caractere
Variables c : Car
DEBUT
Muhammad Ibn Ecrire (”Entrer un caractère: ”)
Musa Al-Khwarizmi
Lire(c)
Ecrire(Pred(c))
Ecrire(Succ(c))
Ecrire(Asc(Majus(c)))
FIN.

Reproduction interdite
Reproduction interdite
204
EXERCICE
Que fait l’algorithme suivant ?
Algorithme Upcase
Variables c1, c2 : Car
DEBUT
Ecrire(”Entrer un caractère: ”)
Muhammad Ibn
Musa Al-Khwarizmi Lire(c1)
SI (Asc(c1) >= 97) et (Asc(c1) <= 122)
ALORS
C2  car(Asc(c1) - 32)
SINON
c2  c1
FINSI
Ecrire(c2)
FIN
Reproduction interdite
Reproduction interdite
205
EXERCICE (CORRIGE)

Muhammad Ibn
 Cet algorithme lit un caractère puis affiche son
Musa Al-Khwarizmi
équivalent en majuscule.

Reproduction interdite
Reproduction interdite
206
EXERCICE
 Ecrire un algorithme qui affiche une table ASCII des lettres
minuscules sous la forme suivante :
Le code ASCII de a est 97
Muhammad Ibn
Musa Al-Khwarizmi
Le code ASCII de b est 98

Le code ASCII de z est 122

Reproduction interdite
Reproduction interdite
207
EXERCICE (CORRIGE)

Algorithme table_minuscule
Variables c : Car

Muhammad Ibn DEBUT


Musa Al-Khwarizmi
POUR c  ˝a ˝ à ˝z ˝ FAIRE
Ecrire(”Le code ASCII de ”,c, ” est ”,
Asc(c))
FINPOUR
FIN.

Reproduction interdite
Reproduction interdite
208
EXERCICE

 Ecrire un algorithme qui lit une lettre au clavier puis


affiche s’il s’agit d’une consonne ou d’une voyelle.
Muhammad Ibn
Musa Al-Khwarizmi
Remarque : les voyelles sont : ˝A˝ ; ˝a˝ ; ˝E˝ ; ˝e˝ ; ˝I˝ ; ˝i˝ ;
˝O˝ ; ˝o˝ ; ˝U˝ ; ˝u˝ ; ˝Y˝ ; ˝y˝.

Reproduction interdite
Reproduction interdite
209
EXERCICE (CORRIGE)
Algorithme Cons_Voyelle
Variables c : Car
DEBUT
REPETER
Ecrire(”Entrer un caractère : ”)
Lire(c)
Muhammad Ibn
Musa Al-Khwarizmi JUSQU’À (c >= ”A” ET c <= ”Z”) OU (c >= ”a” ET c <= ”z”)
SI (Majus(c)=”A”) OU (Majus(c)=”E”) OU (Majus(c)=”I”) OU
(Majus(c)=”O”) OU (Majus(c)=”U”) OU (Majus(c)=”Y”)
ALORS
Ecrire(c, ” est une voyelle”)
SINON
Ecrire(c, ” est une consonne”)
FINSI
FIN
Reproduction interdite
Reproduction interdite
210
LE TYPE CHAINE DE CARACTERES
Une chaîne est une suite de caractères. La chaîne ne contenant
aucun caractère est appelée chaîne vide.

1. Déclaration d’une chaîne :


Exemple :
Muhammad Ibn
Musa Al-Khwarizmi Variables
c : Car
ch : Chaîne
chn : Chaîne[20]

 La variable ch peut contenir jusqu’à 255 caractères alors que


chn peut contenir au maximum 20.

Reproduction interdite
Reproduction interdite
211
LE TYPE CHAINE DE CARACTERES
2. Opérations sur les chaînes de caractères

a) la concaténation
C’est l’assemblage de deux chaînes de caractères en utilisant
Muhammad Ibn l’opérateur « + ».
Musa Al-Khwarizmi
Exemple :
chn1  ˝ISIITECH˝
chn2  ˝Algorithme˝
chn3  chn1+ ˝ ˝ +chn2
 la variable chn3 contiendra ˝ISIITECH Algorithme˝

Reproduction interdite
Reproduction interdite
212
OPERATIONS SUR LES CHAINES DE CARACTERES

b) les opérateurs relationnels (>, >=, <, <=, =, <>)

Il est possible d’effectuer une comparaison entre deux chaînes de


caractères, le résultat est de type booléen. La comparaison se fait
caractère par caractère de la gauche vers la droite selon le code ASCII.
Muhammad Ibn
Musa Al-Khwarizmi
Exemples :

 L’expression (˝a˝ > ˝A˝) est vraie puisque le code ASCII de ˝a˝ (97) est
supérieur à celui de ˝A˝ (65).
 L’expression (˝programme˝<˝programmation˝) est fausse puisque ˝e˝ >
˝a˝
 L’expression (˝˝ = ˝ ˝) est fausse (le vide est différent du caractère
espace). Reproduction interdite
Reproduction interdite
213
OPERATIONS SUR LES CHAINES DE CARACTERES

c) accès à un caractère dans une chaîne

Pour accéder à un caractère de la chaîne, il suffit d’indiquer le nom de


la chaîne suivi d’un entier entre crochets qui indique la position du
caractère dans la chaîne.
Muhammad Ibn
Musa Al-Khwarizmi
Exemple :

chn  ˝ Programmation˝
c chn[7]
 la variable c contiendra le caractère ˝m˝.
En général, ch[i] désigne le ième caractère de la chaîne ch.

Reproduction interdite
Reproduction interdite
214
PROCEDURES ET FONCTIONS STANDARDS SUR LES CHAINES

1. Procédures standards

Procédure Rôle Exemple

Enlève N caractères de chn ˝Turbo Pascal˝


Efface(Chaîne, P, Chaîne à partir de la Efface(chn, 6, 7)
N) position P donnée.  chn Contiendra ˝Turbo˝
Muhammad Ibn
Musa Al-Khwarizmi Insère la chaîne Ch1 ch1 ˝D˝
Insert(Ch1, Ch2, dans la chaîne Ch2 à ch2 ˝AA˝
P) partir de la position Insert(ch1, ch2, 2)
P.  ch2 Contiendra ˝ADA˝
n = 1665
Converti le nombre Nbr Convch(n, chn)
Convch(Nbr, Ch) en une chaîne de
caractères Ch.  chn Contiendra la chaîne
˝1665˝

Reproduction interdite
Reproduction interdite
215
PROCEDURES ET FONCTIONS STANDARDS SUR LES CHAINES

2. Fonctions standards

Procédure Rôle Exemple

chn ˝Turbo Pascal˝


Retourne la longueur
Long(Chaîne) de la chaîne. n  Long(chn)
 n Contiendra 12
Muhammad Ibn
Musa Al-Khwarizmi Copie N caractères ch1 ˝Turbo Pascal˝
Copie(Chaîne, P, N) de Chaîne à partir ch2 Copie(ch1, 7, 6)
de la position P.  ch2 Contiendra ˝Pascal˝
Retourne la position ch1 ˝as˝
de la première ch2 ˝Turbo Pascal˝
Position(Ch1, Ch2) occurrence de la
chaîne Ch1 dans la n Position(ch1, ch2)
chaîne Ch2.  n Contiendra 8

Reproduction interdite
Reproduction interdite
216
EXERCICE

 Ecrire un algorithme « Palind » qui lit une chaîne de


caractères et vérifie si cette chaîne est un palindrome ou non.
Muhammad Ibn
Musa Al-Khwarizmi

Un palindrome est un mot qui peut être lu indifféremment de


droite à gauche ou de gauche à droite (Exemples : ˝AZIZA˝,
˝LAVAL˝, ˝RADAR˝, ˝2002˝, etc.)

Reproduction interdite
Reproduction interdite
217
EXERCICE (CORRIGE)
Algorithme Palindrome SI (Pal) ALORS
Variables ch : Chaîne Ecrire (ch, ” est un palindrome”)
i, L : Entier SINON
Pal : Booléen Ecrire(ch, ” n’est pas un
DEBUT palindrome”)
Ecrire(”Entrer une chaîne non vide : FINSI
”) Lire(ch) FIN.
Muhammad Ibn L  long(ch)
Musa Al-Khwarizmi
Pal  Vrai
i  1
TANTQUE (i <= L/2) et (Pal) FAIRE
SI (ch[i] = ch[L-i+1]) ALORS
i  i + 1
SINON
Pal  Faux
FINSI
FINTANTQUE

Reproduction interdite
Reproduction interdite
218
ALGORITHMES & PROGRAMMATION I

Muhammad Ibn
Musa Al-Khwarizmi CHAPITRE VII
PROCEDURES & FONCTIONS

Reproduction interdite
Reproduction interdite
219
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
Reproduction interdite
220
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
Reproduction interdite
221
LES PROCEDURES

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


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

 Une procédure ne renvoie aucune valeur.

Reproduction interdite
Reproduction interdite
222
DECLARATION D’UNE PROCEDURE
Syntaxe :
PROCEDURE NOM_PROC(liste de paramètres)
Variables identificateurs : type
DEBUT
Instruction(s)
Muhammad Ibn
Musa Al-Khwarizmi
FINPROCEDURE

 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
Reproduction interdite
223
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
Reproduction interdite
224
EXEMPLE (CORRIGE)
PROCEDURE Etoile()
Variables i : entier
DEBUT
POUR i  1 à 15 FAIRE
Muhammad Ibn
Musa Al-Khwarizmi
Ecrire("*")
FINPOUR
Ecrire("retour à la ligne ")
FINPROCEDURE

Reproduction interdite
Reproduction interdite
225
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
Reproduction interdite
226
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_PROC(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
Reproduction interdite
227
EXEMPLE

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


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

Reproduction interdite
Reproduction interdite
228
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  1 à 15 FAIRE
Ecrire("*")
FINPOUR
Ecrire(" retour à la ligne ")
FINPROCEDURE

Reproduction interdite
Reproduction interdite
229
EXEMPLE (CORRIGE)

//Algorithme principal (Partie principale)


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

Reproduction interdite
Reproduction interdite
230
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
Reproduction interdite
231
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.

 Il existe deux principaux types de passages de


Muhammad Ibn
Musa Al-Khwarizmi paramètres 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
Reproduction interdite
232
PASSAGE DE PARAMETRES
Exemple :
Soit l'algorithme suivant :
//Algorithme
Algorithme Passage_par_valeur principal
Variables N : entier DEBUT
Muhammad Ibn
Musa Al-Khwarizmi
//Déclaration de la procédure P1 N  5
PROCEDURE P1(A : entier) P1(N)
DEBUT Ecrire(N)
A  A * 2 FIN
Ecrire(A)
FINPROCEDURE

Reproduction interdite
Reproduction interdite
233
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
Reproduction interdite
234
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 sera
donc modifiée.

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


Var.

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

Reproduction interdite
Reproduction interdite
236
PASSAGE DE PARAMETRES
 A l'exécution de la procédure, l'instruction Ecrire(A) permet
d'afficher à l'écran 10.
 Au retour dans l'algorithme principal, l'instruction Ecrire(N)
affiche également 10.
Muhammad Ibn
Musa Al-Khwarizmi  Dans cet algorithme le paramètre passé correspond à la référence
(adresse) de la variable N. Elle est donc modifiée 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
Reproduction interdite
237
LES FONCTIONS

 Les fonctions sont des sous-algorithmes admettant des


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

Reproduction interdite
Reproduction interdite
238
DECLARATION D’UNE FONCTIONS

Syntaxe :
FONCTION NOM_FONC(liste de paramètres) :
type
Variables identificateur : type
Muhammad Ibn
Musa Al-Khwarizmi

DEBUT
Instruction(s)
Retourner Expression
FINFONCTION

Reproduction interdite
Reproduction interdite
239
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
Reproduction interdite
240
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
Reproduction interdite
241
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
 A la différence d'une procédure, la fonction retourne
Musa Al-Khwarizmi une valeur.
 L'appel d'une fonction pourra donc être utilisé dans une
instruction (affichage, affectation, ...) qui utilise sa valeur.
Syntaxe :
NOM_FONC(liste de paramètres)

Reproduction interdite
Reproduction interdite
242
EXEMPLE

 Ecrire un algorithme appelant, utilisant la fonction


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

Reproduction interdite
Reproduction interdite
243
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
Reproduction interdite
244
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
Reproduction interdite
245
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éclarative
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
Reproduction interdite
246
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
Reproduction interdite
247
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
Reproduction interdite
248
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
Reproduction interdite
249
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
Reproduction interdite
250
EXERCICE

 Ecrire une fonction récursive permettant de


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

Reproduction interdite
Reproduction interdite
251
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
Reproduction interdite
252
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
Reproduction interdite
253
NOTE

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


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

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


retourner 1.

Reproduction interdite
Reproduction interdite
254
EXERCICE

Calculez la somme des entier de 1à n :

Muhammad Ibn
Musa Al-Khwarizmi

Reproduction interdite
Reproduction interdite
255
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 utilisant


Musa Al-Khwarizmi
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
Reproduction interdite
256
ALGORITHMES & PROGRAMMATION I

Muhammad Ibn
Musa Al-Khwarizmi CHAPITRE VIII
ENREGISTREMENTS

Reproduction interdite
Reproduction interdite
257
structure ou enregistrement
 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
 Chaque valeur est rangée dans un champ et repérée par un
Musa Al-Khwarizmi
identificateur de champ.

Reproduction interdite
Reproduction interdite
258
DECLARATION de la structure ou enregistrement

 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
Reproduction interdite
259
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
*/
 Remarque : il est utile
FINSTRUCTURE d'indiquer les rôles des champs (comme
(ENREGISTREMENT)
pour les variables simples)

Reproduction interdite
Reproduction interdite
260
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
Reproduction interdite
261
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

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


Musa Al-Khwarizmi

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


avec les types prédéfinis.

Reproduction interdite
Reproduction interdite
262
DEFINITIONS DE TYPE & DECLARATION DE VARIABLES

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

Muhammad Ibn  Variable tab : t_tab


Musa Al-Khwarizmi

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

Reproduction interdite
Reproduction interdite
263
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 chimique */
Musa Al-Khwarizmi
Z : entier /* numéro atomique */
masse : réel /* masse atomique
*/
FINSTRUCTURE (ENREGISTREMENT)

Remarque Déclaration de variable


: les noms de types : règles des identificateurs.
suivent les
Variable
C'est par simpleelt : t_elt pour les distinguer des identificateurs
commodité,
des variables, que ceux des exemples commencent par t_.
Reproduction interdite
Reproduction interdite
264
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 slides suivants


donnent des exemples simples.

Reproduction interdite
Reproduction interdite
265
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
Reproduction interdite
Variable t_table : tableau[120] de t_elt 266
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
Reproduction interdite
267
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 (ENREGISTREMENT)
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 (ENREGISTREMENT)
Reproduction interdite
Reproduction interdite
268
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
Reproduction interdite
269
LES TYPES ENUMERES

 Les types énumérés constituent un autre type qui peuvent


être définis par l'utilisateur/programmeur, où il peut listez
un ensemble de valeurs dans une énumération.
Muhammad Ibn
Musa Al-Khwarizmi

 En d'autres mots, une énumération est une liste de valeurs


définie par l'utilisateur.

Reproduction interdite
Reproduction interdite
270
DECLARATION DES TYPES ENUMERES
 La déclaration des types énumérés se fait avec une syntaxe spéciale et
voici quelques exemples :
types
t_Couleurs = (Rouge, Jaune, Vert, Marron, Bleu, Violet)
Muhammad Ibn
Musa Al-Khwarizmi t_Jours = (Samedi, Dimanche, Lundi, Mardi, Mercredi, Jeudi,
Vendredi)
t_Objets = (Table, Chaise, Tableau, Bureau)
t_Logique = (Faux, Vrai)
t_Mois = (Jan, Fev, Mar, Avr, mai, Juin, Jui, Aout, Sept, Oct,
Nov, Dec)

 Ensuite, une variable d’un type énuméré doit être déclaré. Par exemple :
Variables jour1, jour2 : t_jours mois : t_mois
Reproduction interdite
Reproduction interdite
271
MANIPULATION DES TYPES ENUMERES
 Les variables d’un type énuméré ne pourront pas avoir d'autres valeurs que
celles que l'on a listées. Et on peut les manipuler dans un algorithme grâce à
:
 l’Affectation :
Muhammad Ibn
Musa Al-Khwarizmi
jour1  Vendredi jour2  jour1

 Fonctions prédéfinies

En principe, il existe trois fonctions qui sont :


Pred(précédent), // retourne la valeur précédente
Succ(suivant), // retourne la valeur précédente
Ord(élément) // retourne l'ordre d’un élément
(dans la déclaration), entre 0 et
N-1). Reproduction interdite
Reproduction interdite
272
MANIPULATION DES TYPES ENUMERES

Remarques :
 Chaque valeur de la liste (type énuméré) possède un
rang associé, commençant à zéro.
Muhammad Ibn
 Le type énuméré peut être un type d’un champ dans un
Musa Al-Khwarizmi
enregistrement.
Exemples :
Pred(mardi) = lundi
Succ(mardi) = mercredi
Ord(mardi) = 3

Reproduction interdite
Reproduction interdite
273
CONCLUSION STRUCTURES DE DONNEES

 Les tableaux et les structures (enregistrements) 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
Reproduction interdite
274
ALGORITHMES & PROGRAMMATION I

Muhammad Ibn
Musa Al-Khwarizmi CHAPITRE IX
FICHIERS

Reproduction interdite
Reproduction interdite
275
INTRODUCTION
 La Mémoire Centrale (RAM) est une mémoire
volatile, donc les variables utilisées dans un programme
ne sont accessibles que pendant le temps d’exécution.

Muhammad Ibn
Musa Al-Khwarizmi
 Pour conserver les données utilisées par un programme
de façon durable pour pouvoir être utilisées d’autres
fois, il est indispensable d’utiliser des supports de
stockage non volatiles (disque dur, CD, flash
disque,…), ces support nécessitent la structuration de
données sous forme de FICHIERS.

Reproduction interdite
Reproduction interdite
276
DEFINITION
 Un fichier est un ensemble de données stockées d’une
manière permanente dans une mémoire secondaire.

 Un fichier possède un nom physique connu par le


Muhammad Ibn
Musa Al-Khwarizmi
système d’exploitation, et un nom logique (flot)
connu par le programme.
 On distingue deux (2) types de fichiers :
 Les fichiers texte
 Les fichiers binaires

Reproduction interdite
Reproduction interdite
277
FICHIER TEXTE ET FICHIER BINAIRE
 Un fichier texte est constitué de caractères, il est
organisé en lignes pouvant contenir 255 caractères
chacune, qui se terminent par le caractère de retour à la
ligne, il peut être ouvert par n’importe quel éditeur
Muhammad Ibn de texte.
Musa Al-Khwarizmi

 Un fichier binaire peut contenir toute sorte de données


sous forme d’une suite d’octets, y compris les
données texte. Les octets d’un fichier binaire ne sont
interprétés que par des logiciels dédiés. Ils sont lus et
écrits tels quels, un fichier binaire peut être structuré
(exemple : fichier BDD) ou non structuré (exemple :
fichier MP3)
Reproduction interdite
Reproduction interdite
278
FICHIER TEXTE ET FICHIER BINAIRE

Fichiers
Accès
Accès
séquentiel
séquentiel
et direct
Fichier Fichier
binaire texte
Muhammad Ibn
Musa Al-Khwarizmi

Fichiers
structurés

Fichiers non
structurés

Reproduction interdite
Reproduction interdite
279
NOM (PHYSIQUE) D’UN FICHIER
 Le nom d’un fichier est représenté sous forme de
chaînes de caractères. Ce nom est connu par le
système d’exploitation et l’utilisateur, il doit respecter les
mêmes règles utilisées dans la nomination de n’importe
quel fichier informatique.
Muhammad Ibn
Musa Al-Khwarizmi

 Exemple : sous Windows, il est interdit d’utiliser les


caractères spéciaux suivants (\ / : * ? < > | ").

 Le nom d’un fichier peut contenir l’arborescence de


son emplacement, ainsi que son extension.

 Exemple: C:\mesprogrammes\fichier2020.dat

Reproduction interdite
Reproduction interdite
280
NOM (PHYSIQUE) D’UN FICHIER
 Remarque : si le nom d’un fichier est initialisé dans un
programme C, sachant que l’antislash prend un sens
particulier en C, donc on doit le redoubler :
 Exemple : C:\\mesprogrammes\\fichier2020.dat
Muhammad Ibn
Musa Al-Khwarizmi

 Si le nom de fichier ne contient aucune arborescence, alors


il sera stocké dans le même endroit avec le programme qui
l’utilise.

Reproduction interdite
Reproduction interdite
281
FLOT (FICHIER LOGIQUE)

 Pour utiliser un fichier dans un programme, il est


indispensable de déclarer un représentant de ce
Muhammad Ibn
Musa Al-Khwarizmi fichier dans la mémoire centrale, c’est le flot
du fichier (fichier logique),

 Un flot est une séquence continue d’octets de données.

Reproduction interdite
Reproduction interdite
282
FLOT (FICHIER LOGIQUE)

 Un flot est lié a un fichier par l’opération


d’ouverture
Muhammad Ibn
Musa Al-Khwarizmi
 Exemple en algorithmique :

FFouvrir(”Nomfichier”, ”ModeOuverture”)

Reproduction interdite
Reproduction interdite
283
OUVERTURE D’UN FICHIER
 Pour utiliser un fichier dans un programme il faut l’ouvrir,
on peut ouvrir un fichier en :

 Mode écriture : le programme peut envoyer des


données vers le fichier, Si le fichier n’existe pas, il est
Muhammad Ibn
Musa Al-Khwarizmi créé. S’il existe déjà, son contenu est effacé.

 Mode lecture : les données du fichier peuvent être


entrées dans le programme

 Mode mise-à-jour : Si le fichier n’existe pas, il est


créé. S’il existe déjà, les nouvelles informations sont
ajoutées à la fin.

Reproduction interdite
Reproduction interdite
284
OUVERTURE, LECTURE, MISE-à- JOUR

 Mode écriture:
F  Fouvrir("fichier2020.dat",
"modecriture");
Muhammad Ibn
Musa Al-Khwarizmi
 Mode lecture:
F  Fouvrir("fichier2020.dat",
"modelecture");

 Mode mise-à-jour:
F  Fouvrir("fichier2020.dat", "modeMAJ");

Reproduction interdite
Reproduction interdite
285
ECRIRE UNE VALEUR VAL, LIRE UNE VALEUR VAL

 ECRIRE(F,VAL) : Permet d’écrire une valeur VAL de type


quelconque dans la position courante du pointeur du
fichier.
Muhammad Ibn
Musa Al-Khwarizmi  LIRE(F,VAL) : Permet de lire une valeur a partir de la
position courante du pointeur du fichier et de la ranger
dans la variable VAL.
 Après une opération de lecture ou écriture, le
pointeur de position passe automatiquement à la
position suivante.

Reproduction interdite
Reproduction interdite
286
AUTRES FONCTIONS

 FERMER(F) : Permet de fermer un fichier ouvert.

 SUPPRIMER(NomFichier) : Permet de supprimer un


fichier fermé.
Muhammad Ibn
Musa Al-Khwarizmi
 RENOMMER("ancien nom physique", "nouveau nom
physique") : Permet de renommer le nom physique
d’un fichier fermé.

 FDF(F) : fonction booléenne qui retourne vrai à la fin de


fichier (cette fonction prend une valeur après une
opération de lecture).

Reproduction interdite
Reproduction interdite
287
ACCES DIRECT DANS UN FICHIER
 Modifier la position du pointeur du fichier binaire :
Positionner(F, pas, position d’origine)
La nouvelle position = Pas + position d’origine
En langage C : fseek(F, sizeof(enreg)*i,
origine)
Muhammad Ibn
Musa Al-Khwarizmi  F : le nom du fichier logique(flot)
 Sizeof(enreg) : la taille de l’enregistrement
 i : le nombre de positions
 Origine : la position initiale :
SEEK_SET : début de fichier
SEEK_END : fin de fichier
SEEK_CUR : position courante
Reproduction interdite
Reproduction interdite
288
ACCES DIRECT DANS UN FICHIER

 Exemple1 : accéder a l’enregistrement N°10 :


fseek(F,sizeof(enreg)*(10-1),SEEK_SET)
Muhammad Ibn
Musa Al-Khwarizmi

 Exemple2 : accéder a l’enregistrement précédant d’une


position courante :
fseek(F,sizeof(enreg)*(-1),SEEK_CUR)

Reproduction interdite
Reproduction interdite
289
TD

Muhammad Ibn
Musa Al-Khwarizmi

Reproduction interdite
Reproduction interdite
290
ALGORITHMES & PROGRAMMATION I

Muhammad Ibn
Musa Al-Khwarizmi CHAPITRE IX BIS
FICHIERS

Reproduction interdite
Reproduction interdite
291
NOTION DE FICHIER

 Toutes les informations que nous avons jusqu'à présent


traitées étaient saisies à partir du clavier et stockées en
mémoire vive (la RAM).
Muhammad Ibn
Musa Al-Khwarizmi
 Or la mémoire vive est volatile : les informations qui
y sont stockées sont détruites à la fin de l'exécution du
programme et ne peuvent donc pas être réutilisées
ultérieurement.
 A la fin de l'exécution du programme, il ne reste aucune
trace de cette exécution et des résultats générés.

Reproduction interdite
Reproduction interdite
292
NOTION DE FICHIER
 Dans la plupart des applications d'entreprises pour lesquelles un
gros volume d'informations doit être mémorisé plus longtemps
que la durée de vie du programme, les informations sont
récupérées et mémorisées sur un support non volatile
(disques, bandes magnétiques…).
Muhammad Ibn
Musa Al-Khwarizmi  Les informations y sont enregistrées de manière permanente
dans des fichiers. Les informations ne sont plus seulement
communiquées via le clavier et l'écran, mais aussi via des
fichiers de support non volatiles.
 Il est alors possible qu'un programme ne communique avec son
environnement qu'au travers des fichiers et n'utilise ni la saisie,
ni l'affichage.

Reproduction interdite
Reproduction interdite
293
DEFINITION
 Un fichier est une structure de données formée de cellules
contiguës permettant l’implantation d’une suite de données en
mémoire non volatile (secondaire) tels que : disque, CDROM,
bande magnétique, etc.
 Chaque élément de la suite est appelé article et correspond
Muhammad Ibn
Musa Al-Khwarizmi généralement à un enregistrement.
Exemples :

 liste des étudiants d’un institut


 état des produits stockés dans un magasin
 liste des employés d’une entreprise.

Reproduction interdite
Reproduction interdite
294
ELEMENTS ATTACHES A UN FICHIER
 On appelle nom interne d’un ficher le nom sous lequel un
fichier est identifié dans un programme.
 On appelle nom externe d’un fichier le nom sous lequel le
fichier est identifié en mémoire secondaire. Ce nom est
composé de trois parties :
Muhammad Ibn
Musa Al-Khwarizmi
 l’identifiant du support
 le nom du fichier proprement dit
 une extension (ou suffixe) qui précise le genre du fichier
(donnée, texte, programme, etc.).
Ainsi, ˝C:nombres.DAT˝ désigne un fichier de données stocké sur
le disque C et qui s’appelle nombres.

Reproduction interdite
Reproduction interdite
295
ELEMENTS ATTACHES A UN FICHIER
 On appelle tampon ou buffer d’un fichier, une zone de la
mémoire principale pouvant contenir un enregistrement du
fichier. C’est une « fenêtre » à travers laquelle on « voit » le
fichier.
Muhammad Ibn
Musa Al-Khwarizmi
 Un fichier possède toujours un enregistrement supplémentaire à
la fin appelé marque de fin de fichier (FDF) permettant
de le borner :
Fichier … FDF

Tampon ou
Fenêtre

Reproduction interdite
Reproduction interdite
296
ELEMENTS ATTACHES A UN FICHIER

 Chaque fichier est caractérisé par :


 un mode d’organisation : séquentielle, séquentielle
indexée, relative ou sélective.
Muhammad Ibn
Musa Al-Khwarizmi
 un mode d’accès : séquentiel ou direct
Un fichier à organisation séquentielle (F.O.S) ne
permet que l’accès séquentiel : pour atteindre l’article de rang n, il
est nécessaire de parcourir les (n-1) articles précédents.

Reproduction interdite
Reproduction interdite
297
ELEMENTS ATTACHES A UN FICHIER
 L’accès direct se fait soit en utilisant le rang de
l’enregistrement (cas de l’organisation relative) comme dans les
tableaux, soit en utilisant une clé permettant d’identifier de
façon unique chaque enregistrement (cas de l’organisation
séquentielle indexée et sélective).
Remarque :
Muhammad Ibn
Musa Al-Khwarizmi

Les caractéristiques d’un fichier sont étroitement liées aux


langages de programmation qui offrent chacun différents types de
fichiers.

 Pour déclarer une variable de type fichier, il faut spécifier :


 le nom du fichier
 le type des éléments du fichier
Reproduction interdite
Reproduction interdite
298
DECLARATION D’UN FICHIER A ORGANISATION SEQUENTIELLE

Exemple :
Type
Etudiant = STRUCTURE (ENREGISTREMENT)
Numéro : Entier
Nom : Chaîne[30]
Muhammad Ibn Prénom : Chaîne[30]
Musa Al-Khwarizmi
Classe : Chaîne[5]
FINSTRUCTURE (ENREGISTREMENT)

Fetud = Fichier de Etudiant

Variables
Fe : Fetud
et : Etudiant (* variable tampon *)

Reproduction interdite
Reproduction interdite
299
MANIPULATION DES FICHIERS A ORGANISATION SEQUENTIELLE

 Toute manipulation d’un fichier nécessite 3 phases :

Phase 1 : Ouverture du fichier

 Ouvrir(NomFichier, mode)
Muhammad Ibn
Musa Al-Khwarizmi

Un fichier peut être ouvert en mode lecture (L) ou en mode


écriture (E).

Après l’ouverture, le pointeur pointe sur le premier


enregistrement du fichier.

Reproduction interdite
Reproduction interdite
300
MANIPULATION DES FICHIERS A ORGANISATION SEQUENTIELLE

Phase 2 : Traitement du fichier

 Lire(NomFichier, fenêtre)

 Cette primitive a pour effet de copier l’enregistrement actuel dans la


fenêtre du fichier. Après chaque opération de lecture, le pointeur
Muhammad Ibn
Musa Al-Khwarizmi passe à l’enregistrement suivant. Si on veut lire une information en
amont du pointeur, il faut rouvrir le fichier et le lire jusqu’à
l’information désirée.
 Ecrire(NomFichier, fenêtre)

 Cette primitive a pour effet de copier le contenu de la fenêtre sur le


fichier en mémoire secondaire. Dans un fichier à organisation
séquentielle, l’ajout d’un nouvel article se fait toujours en fin de
fichier. Reproduction interdite
Reproduction interdite
301
MANIPULATION DES FICHIERS A ORGANISATION SEQUENTIELLE

Phase 3 : Fermeture du fichier

 Fermer(NomFichier)
Muhammad Ibn
Musa Al-Khwarizmi Remarque :

 La fonction booléenne FDF(NomFichier) permet de tester


si la fin du fichier est atteinte. Sa valeur est déterminée par
le dernier ordre de lecture exécuté.

Reproduction interdite
Reproduction interdite
302
CREATION D’UN FICHIER A ORGANISATION SEQUENTIELLE

 Ecrire une procédure permettant de créer et


Muhammad Ibn
Musa Al-Khwarizmi
remplir le fichier des étudiants.

Reproduction interdite
Reproduction interdite
303
CREATION D’UN FICHIER A ORGANISATION SEQUENTIELLE

PROCEDURE Création (Var fe : Fetud) Ecrire(”Classe de l’étudiant :


”)
Variables et : Etudiant
Lire(et.Classe)
DEBUT
Ecrire(fe,et)
Ouvrir(fe,E)
Ecrire(”Numéro de l’étudiant :
Muhammad Ibn Ecrire(”Numéro de l’étudiant : ”)
Musa Al-Khwarizmi ”)
Lire(et.Numéro)
Lire(et.Numéro)
TANTQUE (et.Numéro <> 0) FAIRE
FINTANTQUE
Ecrire (”Nom de l’étudiant : ”)
Fermer(fe)
Lire(et.Nom)
FINPROCEDURE
Ecrire(”Prénom de l’étudiant : Dans cette procédure, l’utilisateur doit entrer la valeur
”) 0 pour le champ numéro pour indiquer la fin de la
saisie étant donné que le nombre d’étudiants n’est pas
Lire(et.Prénom) connu à l’avance.
Reproduction interdite
Reproduction interdite
304
PARCOURS D’UN FICHIER A ORGANISATION SEQUENTIELLE

 Ecrire une procédure permettant d’afficher la


Muhammad Ibn
Musa Al-Khwarizmi
liste des étudiants à partir du fichier « fe ».

Reproduction interdite
Reproduction interdite
305
PARCOURS D’UN FICHIER A ORGANISATION SEQUENTIELLE
PROCEDURE Consultation (fe : Fetud)
Variables
et : Etudiant
DEBUT
Ouvrir(fe,L)
Lire(fe,et)
Muhammad Ibn
Musa Al-Khwarizmi

TANTQUE NON(FDF(fe)) FAIRE


Ecrire(et.Numéro,et.Nom,et.Prénom,et.classe)
Lire(fe,et)
FINTANTQUE
Fermer(fe)
FINPROCEDURE

Reproduction interdite
Reproduction interdite
306
LES FICHIERS TEXTES

 Les fichiers de texte sont des fichiers séquentiels qui


contiennent des caractères organisés en lignes. La
présentation sous forme de « ligne » est obtenue grâce à la
Muhammad Ibn
Musa Al-Khwarizmi
présence des caractères de contrôle :
 retour chariot (noté souvent CR), de code ASCII 13
 saut de ligne (noté souvent LF) de code ASCII 10.

Reproduction interdite
Reproduction interdite
307
LES FICHIERS TEXTES

 Un fichier texte peut être déclaré de 2 façons différentes :

Variables
ftext : Fichier de Caractère
Muhammad Ibn
Musa Al-Khwarizmi

ou
Variables
ftext : Fichier Texte

Reproduction interdite
Reproduction interdite
308
LES FICHIERS TEXTES
Remarques :

1. Un fichier de type texte peut être traité ligne par


ligne ou caractère par caractère.
Muhammad Ibn
Musa Al-Khwarizmi 2. Dans un fichier de type texte, la primitive
Lire_Lig(NomFichier,Fenêtre) permet de lire
une ligne du fichier et la transférer dans la
fenêtre.

3. De même, la fonction booléenne


FDL(NomFichier) permet de vérifier si le
pointeur a atteint la fin d’une ligne.
Reproduction interdite
Reproduction interdite
309
EXERCICE

 Ecrire l’algorithme d’une procédure qui lit et affiche


Muhammad Ibn
Musa Al-Khwarizmi
le contenu d’un fichier de type texte.

Reproduction interdite
Reproduction interdite
310
EXERCICE (CORRIGE)
PROCEDURE ParcoursFichText(ftext : Fichier texte)
Variables ligne : Chaîne
DEBUT
Ouvrir(ftext,L)
Lire(ftext,ligne)
Muhammad Ibn
Musa Al-Khwarizmi TANTQUE NON(FDF(ftext)) FAIRE
Ecrire(ligne)
Lire(ftext,ligne)
FINTANQUE
Fermer(ftext)
FINPROCEDURE

Reproduction interdite
Reproduction interdite
311
EXERCICE

 Ecrire un algorithme permettant de :

 Créer et remplir un fichier « Fp » qui contient des


Muhammad Ibn
informations sur le personnel d’une entreprise (matricule,
Musa Al-Khwarizmi
nom, prénom, grade, salaire).

 Afficher la liste des employés de cette entreprise dont le


salaire est compris entre 500. 000 et 700.000 francs CFA.

Reproduction interdite
Reproduction interdite
312
EXERCICE (CORRIGE)
Algorithme Personnel
Types Employé = STRUCTURE (ENREGISTREMENT)
Matricule : Entier
Nom : Chaîne
Prénom : Chaîne
Muhammad Ibn
Musa Al-Khwarizmi Grade : Caractère
Sal : Réel
FINSTRUCTURE (ENREGISTREMENT)
Fpers = Fichier de Employé
Variables
Fp : Fpers
emp : Employé

Reproduction interdite
Reproduction interdite
313
EXERCICE (CORRIGE)
PROCEDURE Création(Var f : Fpers)
DEBUT
Ouvrir(f,E)
Ecrire(”Matricule : ”) Lire(emp.Matricule)
TANTQUE (emp.Matricule <> 0) FAIRE
Ecrire (”Nom : ”) Lire(emp.Nom)
Muhammad Ibn
Musa Al-Khwarizmi Ecrire (”Prénom : ”) Lire(emp.Prénom)
Ecrire (”Grade : ”) Lire(emp.Grade)
Ecrire (”Salaire : ”) Lire(emp.Sal)
Ecrire (f,emp)
Ecrire (”Matricule : ”) Lire(emp.Matricule)
FINTANTQUE
Fermer(f)
FINPROCEDURE

Reproduction interdite
Reproduction interdite
314
EXERCICE (CORRIGE)
PROCEDURE Consultation(f : Fpers)
DEBUT
Ouvrir(f,L)
Lire(f,emp)
TANTQUE NON(FDF(f)) FAIRE
SI (emp.Sal>=500.000) ET (emp.Sal<=700.000) ALORS
Muhammad Ibn
Musa Al-Khwarizmi

Ecrire(emp.Matricule, emp.Nom, emp.Sal)


FINSI
Lire(f,emp)
FINTANTQUE
Fermer(f)
FINPROCEDURE

Reproduction interdite
Reproduction interdite
315
EXERCICE (CORRIGE)

DEBUT
Création(Fp)
Muhammad Ibn
Musa Al-Khwarizmi Consultation(Fp)
FIN

Reproduction interdite
Reproduction interdite
316
EXERCICE

 Ecrire une procédure permettant de rechercher un employé


dans le fichier « Fp » à partir de son matricule.

Muhammad Ibn  Si l’employé est trouvé, l’algorithme affiche son nom, son
Musa Al-Khwarizmi
prénom et son grade

 Sinon, il affiche le message ˝ce matricule ne figure pas


dans le fichier…˝

Reproduction interdite
Reproduction interdite
317
EXERCICE (CORRIGE)
PROCEDURE Recherche(Fp : Fpers ; x :
Entier)
Variables emp : Employé
DEBUT
Muhammad Ibn
Musa Al-Khwarizmi
Ouvrir(Fp,L) Lire(Fp,emp)
Trouve  (emp.Matricule = x)
TANTQUE (trouve = Faux) ET NON(FDF(Fp))
FAIRE
Lire(Fp,emp)
Trouve  (emp.Matricule = x)
FINTANTQUE

Reproduction interdite
Reproduction interdite
318
EXERCICE (CORRIGE)

SI FDF(Fp) ALORS
Ecrire(”Ce matricule ne figure pas dans le
fichier…”)

Muhammad Ibn
SINON
Musa Al-Khwarizmi
Ecrire(emp.Nom, emp.Prénom, emp.Grade)
FINSI
Fermer(Fp)
FINPROCEDURE

Reproduction interdite
Reproduction interdite
319
EXERCICE

 Ecrire un algorithme permettant de :

 Créer et remplir un fichier « fnotes » qui contient les notes


Muhammad Ibn de 30 étudiants
Musa Al-Khwarizmi

 Copier les notes dans un tableau Tnote

 Trier le tableau Tnote dans l’ordre croissant

 Copier les notes triées du tableau vers le fichier fnotes.

Reproduction interdite
Reproduction interdite
320
EXERCICE (CORRIGE)
Algorithme Notes
Variables fnotes : Fichier de Réel
Tnote : Tableau[1..30] de Réel
x, note : Réel
échange : Booléen
Muhammad Ibn i : Entier
DEBUT
Musa Al-Khwarizmi

(* Création du fichier fnotes *)


Ouvrir(fnotes,E)
POUR i 1 à 30 FAIRE
Ecrire (”Entrer une note : ”) Lire(note)
Ecrire(fnotes,note)
FINPOUR

Reproduction interdite
Reproduction interdite
321
EXERCICE (CORRIGE)

Fermer(fnotes)
(* Copie du fichier fnotes dans le tableau
Tnote *)
Muhammad Ibn
Ouvrir(fnotes,L)
POUR i  1 à 30 FAIRE
Musa Al-Khwarizmi

Lire(fnotes,note)
Tnote[i]  note
FINPOUR
Fermer(fnotes)

Reproduction interdite
Reproduction interdite
322
EXERCICE (CORRIGE)
REPETER
échange  Faux
POUR i  1 à 29 FAIRE
SI (Tnote[i] > Tnote[i+1]) ALORS
Muhammad Ibn X  Tnote[i]
Musa Al-Khwarizmi
Tnote[i]  Tnote[i+1]
Tnote[i+1]  x
échange  Vrai
FINSI
FINPOUR
JUSQU’À (échange = Faux)

Reproduction interdite
Reproduction interdite
323
EXERCICE (CORRIGE)

(* Copie du tableau Tnote dans le fichier


fnotes *)
Ouvrir(fnotes,E)
Muhammad Ibn
Musa Al-Khwarizmi POUR i  1 à 30 FAIRE
Ecrire(fnotes,Tnote[i])
FINPOUR
Fermer(fnotes)
FIN

Reproduction interdite
Reproduction interdite
324
ALGORITHMES & PROGRAMMATION I & II

Muhammad Ibn
Musa Al-Khwarizmi
PARTIE II
ALGORITHME & PROGRAMMATION II

Reproduction interdite
Reproduction interdite
325
Contenu du cours

1. Pointeurs & allocation dynamique


2. Listes chaînées (simples, doubles,
circulaires)
Muhammad Ibn
Musa Al-Khwarizmi
3. Piles & Files
4. Arbres & graphes
5. Complexité

Reproduction interdite
Reproduction interdite
326
ALGORITHMES & PROGRAMMATION II

Muhammad Ibn
Musa Al-Khwarizmi
CHAPITRE I
POINTEURS & ALLOCATION DYNAMIQUE

Reproduction interdite
Reproduction interdite
327
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
Reproduction interdite
328
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
Muhammad Ibn
1 octet. Un entier va occuper 4 cases mémoires soit 4
Musa Al-Khwarizmi
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
Reproduction interdite
329
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
Reproduction interdite
330
Relation entre la variable & la MEMOIRE

 Variable tableau T[5] : 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
Muhammad Ibn numéro 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
Reproduction interdite
331
VARIABLES STATIQUES / VARIABLES DYNAMIQUES

 Variable statique : déclarée dans la partie « déclarative


», 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
Musa Al-Khwarizmi l’algorithme dans lequel elle est déclarée.

 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
Reproduction interdite
332
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
Reproduction interdite
333
NOTION DE POINTEUR

Exemple :
x = P^
DEBUT
x  10
P  Adr(x)
Muhammad Ibn
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
Reproduction interdite
334
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
Reproduction interdite
335
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
Reproduction interdite
336
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
 Jusqu’à maintenant la seule manière de modifier x était
Musa Al-Khwarizmi
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
Reproduction interdite
337
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
Reproduction interdite
338
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
Reproduction interdite
339
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
Reproduction interdite
340
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
Reproduction interdite
341
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
Reproduction interdite
342
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
Reproduction interdite
343
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
Reproduction interdite
344
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

//3. Suppression de la variable dynamique


Libérer(P)

Reproduction interdite
Reproduction interdite
345
VARIABLE DYNAMIQUE DE TYPE STRUCTURE
Type Date = STRUCTURE (ENREGISTREMENT)
J, m, a : entier
FINSTRUCTURE (ENREGISTREMENT)
pDate = pointeur vers Date

Muhammad Ibn Variable P : pDate


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

Reproduction interdite
Reproduction interdite
346
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
Reproduction interdite
347
EXERCICE 2

 Ecrire un algorithme qui calcul la somme de deux


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

 Puis interchange leurs valeurs.

Reproduction interdite
Reproduction interdite
348
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
Reproduction interdite
349
ALGORITHMES & PROGRAMMATION II

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

Reproduction interdite
Reproduction interdite
350
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
Reproduction interdite
351
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
Reproduction interdite
352
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
Reproduction interdite
353
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
Reproduction interdite
354
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
Reproduction interdite
355
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
Reproduction interdite
356
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
Reproduction interdite
357
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
Reproduction interdite
358
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
Reproduction interdite
359
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
Reproduction interdite
360
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
Reproduction interdite
361
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
Reproduction interdite
362
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
Reproduction interdite
363
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
Reproduction interdite
364
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
Reproduction interdite
365
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
Reproduction interdite
366
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
Reproduction interdite
367
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
Reproduction interdite
368
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
Reproduction interdite
369
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
Reproduction interdite
370
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
Reproduction interdite
371
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
Reproduction interdite
372
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
Reproduction interdite
373
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
Reproduction interdite
374
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
Reproduction interdite
375
ALGORITHMES & PROGRAMMATION II

Muhammad Ibn
Musa Al-Khwarizmi CHAPITRE III
PILES & FILES

Reproduction interdite
Reproduction interdite
376
LES PILES
 Une pile est une suite de cellules allouées dynamiquement
(liste chaînée) où l’insertion et la suppression d’un élément
se font toujours en tête de liste.
 L’image intuitive d’une pile peut être donnée par une pile
Muhammad Ibn
d’assiettes, ou une pile de dossiers à condition de supposer
Musa Al-Khwarizmi qu’on prend un seul élément à la fois (celui du sommet).
 On peut résumer les contraintes d’accès par le principe «
dernier arrivé, premier sorti » qui se traduit en anglais
par : Last In First Out.

Reproduction interdite
Reproduction interdite
377
LES PILES

 La structuration d’un objet en pile s’impose lorsqu’on mémorise


des informations qui devront être traitées dans l’ordre inverse de
Muhammad Ibn leur arrivée.
Musa Al-Khwarizmi

 C’est le cas, par exemple, de la gestion des adresses de retour


dans l’exécution d’un programme récursif.
 En supposant que les éléments de la pile sont des entiers, celle-ci
se déclare de la façon suivante :

Reproduction interdite
Reproduction interdite
378
LES PILES

Types
Pile = ^Cellule
Cellule = STRUCTURE (ENREGISTREMENT)
Muhammad Ibn
Musa Al-Khwarizmi
Elem : Entier
Suiv : Pile
FINSTRUCTURE (ENREGISTREMENT)
Variables
P : Pile

Reproduction interdite
Reproduction interdite
379
MANIPULATION D’UNE PILE
 Du point de vue manipulation, les contraintes d’accès sont matérialisées
par les procédures et les fonctions suivantes :

 Procédure Initialiser (Var P : Pile) : crée une pile vide P

Muhammad Ibn
Musa Al-Khwarizmi
 Fonction Pile_Vide (P : Pile) : Booléen, Renvoie la valeur
vrai si la pile est vide.

 Procédure Empiler(x : Entier , Var P : Pile) : ajoute


l’élément x au sommet de la pile
 Procédure Dépiler (Var x : Entier , Var P : Pile) :
dépile le sommet de la pile et le met dans la variable x.

Reproduction interdite
Reproduction interdite
380
MANIPULATION D’UNE PILE

PROCEDURE Initialiser (Var P : Pile)


DEBUT
P  NIL
Muhammad Ibn
Musa Al-Khwarizmi
FINPROCEDURE

FONCTION Pile_Vide(P : Pile) : Booléen


DEBUT
Retourner(Pile_Vide  (P = NIL))
FINFONCTION

Reproduction interdite
Reproduction interdite
381
MANIPULATION D’UNE PILE

PROCEDURE Empiler(x : Entier , Var P : Pile)


Variables Q : Pile
DEBUT
Muhammad Ibn
Musa Al-Khwarizmi
Allouer(Q)
Q^.Elem  x
Q^.Suiv  P
P  Q
FINPROCEDURE

Reproduction interdite
Reproduction interdite
382
MANIPULATION D’UNE PILE
PROCEDURE Dépiler(Var x : Entier , Var P : Pile)
DEBUT
SI NON(Pile_Vide(P)) ALORS
X  P^.Elem

Muhammad Ibn
Q  P
Musa Al-Khwarizmi
P  P^.Suiv
Libérer(Q)
SINON
Ecrire (”impossible, la pile est vide”)
FINSI
FINPROCEDURE

Reproduction interdite
Reproduction interdite
383
LES FILES
 Une file est une suite de cellules allouées dynamiquement
(liste chaînée) dont les contraintes d’accès sont définies
comme suit :
 On ne peut ajouter un élément qu’en dernier rang de la
suite
Muhammad Ibn
Musa Al-Khwarizmi
 On ne peut supprimer que le premier élément.
 L’image intuitive d’une file peut être donnée par la queue à
un guichet. On peut résumer les contraintes d’accès par le
principe « premier arrivé, premier sorti » qui se
traduit en anglais par : First In First Out

Reproduction interdite
Reproduction interdite
384
LES FILES

 La structuration d’un objet en file s’impose en particulier


lorsqu’une ressource doit être partagée par plusieurs
utilisateurs : il y a formation d’une file d’attente.
Muhammad Ibn  Un exemple est donné par le spooler d’impression qui est un
Musa Al-Khwarizmi
programme qui reçoit, traite, planifie et distribue les
documents à imprimer dans un système multiprogrammé.
 En supposant que les éléments de la file sont des entiers,
celle-ci se déclare de la façon suivante :

Reproduction interdite
Reproduction interdite
385
LES FILES
Types
Liste = ^Cellule
Cellule = STRUCTURE (ENREGISTREMENT)
Elem : Entier
Suiv : Liste
Muhammad Ibn FINSTRUCTURE (ENREGISTREMENT)
Musa Al-Khwarizmi

File = STRUCTURE (ENREGISTREMENT)


Tête : Liste
Queue : Liste
FINSTRUCTURE (ENREGISTREMENT)
Variables
F : File

Reproduction interdite
Reproduction interdite
386
MANIPULATION D’UNE FILE
 Du point de vue manipulation, les contraintes d’accès sont
matérialisées par les procédures et les fonctions suivantes :

 Procédure Initialiser(Var F : File) : crée une file


Muhammad Ibn vide F
Musa Al-Khwarizmi

 Procédure Ajouter(x : Entier , Var F : File) :


ajoute l’élément x à la fin de la file
 Procédure Extraire (Var x : Entier , Var F :
File) : extrait le sommet de la file et le met dans la variable
x.

Reproduction interdite
Reproduction interdite
387
MANIPULATION D’UNE FILE

PROCEDURE Initialiser(Var F : File)


DEBUT

Muhammad Ibn
F.Tête NIL
Musa Al-Khwarizmi
F.Queue  NIL
FINPROCDURE

Reproduction interdite
Reproduction interdite
388
MANIPULATION D’UNE FILE
PROCEDURE Ajouter(x : Entier, Var F :
File)
Variables
P : Liste
DEBUT
Allouer(P)
P^.Elem  x
Muhammad Ibn
Musa Al-Khwarizmi

P^.Suiv  NIL
SI (F.Queue <> NIL) ALORS
F.Queue^.Suiv  P
SINON
F.Tête  P
FINSI
Dans le cas où la file est vide, comme la queue, la
F.Queue  P tête de la file doit également pointer vers le nouvel
FINPROCEDURE élément.
Reproduction interdite
Reproduction interdite
389
MANIPULATION D’UNE FILE

DEBUT
SI (F.Tête = NIL) ALORS
Ecrire(”impossible, la file est vide”)
SINON
Muhammad Ibn
Musa Al-Khwarizmi P  F.Tête
X  F.Tête^.Elem
F.Tête  F.Tête^.Suiv
Libérer(P)
FINSI
FIN

Reproduction interdite
Reproduction interdite
390
MANIPULATION D’UNE FILE

Remarque : Dans les langages qui n’offrent pas le type


pointeur, les structures de liste, pile ou file peuvent être
Muhammad Ibn
Musa Al-Khwarizmi
implantées sous forme de tableaux.

Ainsi, une liste chaînée d’entiers peut être déclarée de la


façon suivante :

Reproduction interdite
Reproduction interdite
391
MANIPULATION D’UNE FILE
Constantes n = 100
Types

Indice : 1..n
Cellule = STRUCTURE (ENREGISTREMENT)
Elem : entier
Muhammad Ibn
Musa Al-Khwarizmi

Suiv : Indice
FINSTRUCTURE (ENREGISTREMENT)

Liste = Tableau[Indice] de cellule


Variables
L : Liste

Reproduction interdite
Reproduction interdite
392
ALGORITHMES & PROGRAMMATION II

Muhammad Ibn
Musa Al-Khwarizmi
CHAPITRE IV
ARBRES & GRAPHES

Reproduction interdite
Reproduction interdite
393
ALGORITHMES & PROGRAMMATION II

Muhammad Ibn
Musa Al-Khwarizmi
CHAPITRE V
COMPLEXITE ALGORITHMIQUE

Reproduction interdite
Reproduction interdite
394
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
Reproduction interdite
395
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
Reproduction interdite
396
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
Reproduction interdite
397
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
Reproduction interdite
398
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émenté par un programme prend à
Muhammad Ibn s'exécuter ?
Musa Al-Khwarizmi
Réponse :
Méthode Empirique :
On peut par exemple lancer l’exécution du programme sur un
ordinateur et chronométrer 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
Reproduction interdite
399
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
Reproduction interdite
400
LE TEMPS (COMPLEXITE TEMPORELLE)

Muhammad Ibn
Musa Al-Khwarizmi

Reproduction interdite
Reproduction interdite
401
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 :

Muhammad Ibn
Musa Al-Khwarizmi
 Meilleur cas (Temps minimum pour toutes les entrées
possibles)

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

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

Reproduction interdite
Reproduction interdite
402
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
Reproduction interdite
403
OPERATIONS ELEMENTAIRES

Muhammad Ibn
Musa Al-Khwarizmi

Reproduction interdite
Reproduction interdite
404
COMPLEXITE & ORDRE DE GRANDEUR

Muhammad Ibn
Musa Al-Khwarizmi

Reproduction interdite
Reproduction interdite
405
COMPLEXITE & ORDRE DE GRANDEUR

Muhammad Ibn
Musa Al-Khwarizmi

Reproduction interdite
Reproduction interdite
406
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
Reproduction interdite
407
COMPLEXITE & ORDRE DE GRANDEUR

Muhammad Ibn
Musa Al-Khwarizmi

Reproduction interdite
Reproduction interdite
408
COMPLEXITE & ORDRE DE GRANDEUR

Muhammad Ibn
Musa Al-Khwarizmi

Reproduction interdite
Reproduction interdite
409
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
Reproduction interdite
410
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
Reproduction interdite
411
COMMENT TROUVER L’ORDRE DE GRANDEUR D’UN ALGORITHME

Muhammad Ibn
Musa Al-Khwarizmi

Reproduction interdite
Reproduction interdite
412
COMMENT TROUVER L’ORDRE DE GRANDEUR D’UN ALGORITHME

Muhammad Ibn
Musa Al-Khwarizmi

Reproduction interdite
Reproduction interdite
413
COMMENT TROUVER L’ORDRE DE GRANDEUR D’UN ALGORITHME

Muhammad Ibn
Musa Al-Khwarizmi

Reproduction interdite
Reproduction interdite
414
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
Reproduction interdite
415
COMMENT TROUVER L’ORDRE DE GRANDEUR D’UN ALGORITHME

Muhammad Ibn
Musa Al-Khwarizmi

Reproduction interdite
Reproduction interdite
416
COMMENT TROUVER L’ORDRE DE GRANDEUR D’UN ALGORITHME

Muhammad Ibn
Musa Al-Khwarizmi

Reproduction interdite
Reproduction interdite
417
PROPRIETES DU LANDAU

Muhammad Ibn
Musa Al-Khwarizmi

Reproduction interdite
Reproduction interdite
418
ALGORITHMES & PROGRAMMATION II

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

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

Reproduction interdite
Reproduction interdite
421
EXERCICE INTRODUCTIF (SOLUTION 2)

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


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

Reproduction interdite
Reproduction interdite
422
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
Reproduction interdite
423
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
Reproduction interdite
424
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
Reproduction interdite
425
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
Reproduction interdite
426
PROBLEME

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

Reproduction interdite
Reproduction interdite
427
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
Reproduction interdite
428
TYPE DE COMPLEXITE

Muhammad Ibn
Musa Al-Khwarizmi

Reproduction interdite
Reproduction interdite
429
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
Reproduction interdite
430
LA NOTATION « grand O »

Muhammad Ibn
Musa Al-Khwarizmi

Reproduction interdite
Reproduction interdite
431
LA NOTATION « grand O »

Muhammad Ibn
Musa Al-Khwarizmi

Reproduction interdite
Reproduction interdite
432
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
Reproduction interdite
433
Le COÛT DES INSTRUCTIONS ELEMENTAIRES

Muhammad Ibn
Musa Al-Khwarizmi

Reproduction interdite
Reproduction interdite
434
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
Reproduction interdite
435
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
Reproduction interdite
436
Le COÛT DES INSTRUCTIONS ELEMENTAIRES

Muhammad Ibn
Musa Al-Khwarizmi

Reproduction interdite
Reproduction interdite
437
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
Reproduction interdite
438
COMPLEXITE AU PIRE DES CAS

Muhammad Ibn
Musa Al-Khwarizmi

Reproduction interdite
Reproduction interdite
439
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
Reproduction interdite
440
COMPLEXITE DANS LE MEILLEUR DES CAS

Muhammad Ibn
Musa Al-Khwarizmi

Reproduction interdite
Reproduction interdite
441
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
Reproduction interdite
442
COMPLEXITE EN MOYENNE DES CAS

Muhammad Ibn
Musa Al-Khwarizmi

Reproduction interdite
Reproduction interdite
443
COMPLEXITE EN MOYENNE DES CAS

Muhammad Ibn
Musa Al-Khwarizmi

Reproduction interdite
Reproduction interdite
444

Vous aimerez peut-être aussi