Académique Documents
Professionnel Documents
Culture Documents
M5
ALGORITHMES & PROGRAMMATION I & II
OU
ALGORITHME & STRUCTURES DE DONNEES
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
Reproduction interdite
Reproduction interdite
3
Evaluation
Reproduction interdite
Reproduction interdite
4
Enseignement
Cours Magistral
Muhammad Ibn
Musa Al-Khwarizmi TD/TP
Reproduction interdite
Reproduction interdite
5
COMPETENCES À ACQUERIR
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
Reproduction interdite
Reproduction interdite
10
QU’EST-CEQUE L’INFORMATIQUE
Reproduction interdite
Reproduction interdite
11
QU’EST-CEQUE L’INFORMATIQUE
Reproduction interdite
Reproduction interdite
12
QU’EST-CEQUE L’INFORMATIQUE
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
Reproduction interdite
Reproduction interdite
14
DOMAINE D’APPLICATION DE L’INFORMATIQUE
Muhammad Ibn
Sciences : prévisions, météo, simulation ...
Musa Al-Khwarizmi
…
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 :
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é:
Reproduction interdite
Reproduction interdite
17
QUE SIGNIFIE LE « TERME » TRAITEMENT
Reproduction interdite
Reproduction interdite
18
QU’EST-CE QU’UN ORDINATEUR ?
Reproduction interdite
Reproduction interdite
19
QU’EST-CE QU’UN ORDINATEUR ?
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)
Reproduction interdite
Reproduction interdite
24
LE PROCESSEUR (CPU, UCT)
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
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
Reproduction interdite
Reproduction interdite
29
RESOLUTION D’UN PROBLEME REEL AVEC UN PROGRAMME INFORMATIQUE
Reproduction interdite
Reproduction interdite
30
QU’Est-ce QU’UN ALGORITHME INFORMATIQUE
Reproduction interdite
Reproduction interdite
31
QU’Est-ce QU’UN ALGORITHME INFORMATIQUE
Muhammad Ibn
Musa Al-Khwarizmi
Un algorithme a pour but de résoudre un problème et donc de
produire un résultat.
Reproduction interdite
Reproduction interdite
32
POURQUOI UTILISER UN ALGORITHME
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.
Reproduction interdite
Reproduction interdite
36
QU’EST-CE QU’UN BON ALGORITHME ?
Reproduction interdite
Reproduction interdite
37
PROPRIETES D’UN ALGORITHME
Reproduction interdite
Reproduction interdite
38
Convention D’ECRITURE : L’ORGANIGRAMME
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
Reproduction interdite
Reproduction interdite
41
Convention D’ECRITURE : le pseudo-code ou LDA
Reproduction interdite
Reproduction interdite
42
Convention D’ECRITURE : le pseudo-code ou LDA
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
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 :
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 :
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
Reproduction interdite
Reproduction interdite
53
Les types NUMERIQUES
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
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
Reproduction interdite
Reproduction interdite
56
Les constantes
Reproduction interdite
Reproduction interdite
57
LES Expressions
Reproduction interdite
Reproduction interdite
58
OPERATEURS ARITHMETIQUES
Opérateurs arithmétiques :
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
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
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
Reproduction interdite
Reproduction interdite
63
Les types d’affectation : Type 1
Possibilité d’affecter une valeur de même type à
une variable
Identificateur valeur
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
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
Reproduction interdite
Reproduction interdite
69
EXERCICE SIMPLE SUR L’affectation
Reproduction interdite
Reproduction interdite
70
Instructions d’ENTREES / SORTIES
L’interaction
Le dialogue
La communication avec la machine
Reproduction interdite
Reproduction interdite
71
Instructions d’ENTREES / SORTIES
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
Reproduction interdite
Reproduction interdite
73
Instructions d’ENTREES / SORTIES
Reproduction interdite
Reproduction interdite
74
Instructions d’ENTREES / SORTIES
Reproduction interdite
Reproduction interdite
75
Lecture
Syntaxe Exemples
Muhammad Ibn
Musa Al-Khwarizmi
Lire(a)
Lire(nom_variable) Lire(TVA)
Lire(note)
Reproduction interdite
Reproduction interdite
76
ecriture
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.
Reproduction interdite
Reproduction interdite
81
INTRODUCTION
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
Muhammad Ibn
DEBUT
Musa Al-Khwarizmi
action 1
action 2
…
action n
FIN
Reproduction interdite
Reproduction interdite
84
LA SEQUENCE
Reproduction interdite
Reproduction interdite
85
LA SELECTION (STRUCTURE CONDITIONELLE)
Reproduction interdite
Reproduction interdite
86
LA SELECTION (STRUCTURE CONDITIONELLE)
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
Muhammad Ibn
Musa Al-Khwarizmi Si la condition est fausse, se sont les instructions
2 qui seront exécutées.
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
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
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
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
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)
Reproduction interdite
Reproduction interdite
102
EXERCICE
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 »
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
Reproduction interdite
Reproduction interdite
118
LA boucle « TANTQUE…FAIRE »
Reproduction interdite
Reproduction interdite
119
LA boucle « TANTQUE…FAIRE »
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, …
Reproduction interdite
Reproduction interdite
120
LA boucle « TANT QUE … FAIRE » : REMARQUES
Reproduction interdite
Reproduction interdite
121
LA boucle « TANT QUE … FAIRE » : REMARQUES
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
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
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
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.
Reproduction interdite
Reproduction interdite
129
DEROULEMENT DE La boucle « POUR …FAIRE »
Reproduction interdite
Reproduction interdite
131
La boucle « POUR…FAIRE » : EXEMPLE 1
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
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)
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
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)
Reproduction interdite
Reproduction interdite
141
CHOIX D’UN TYPE DE BOUCLE (1)
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
Reproduction interdite
Reproduction interdite
146
PRIORITE DES OPERATEURS ARITHMETIQUES
Priorité des opérateurs
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
FINSELON
Reproduction interdite
Reproduction interdite
152
INSTRUCTION REPETITIVE « TANTQUE »
Initialisation
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 »
FINPOUR
Reproduction interdite
Reproduction interdite
155
REMARQUES
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
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
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
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
Reproduction interdite
Reproduction interdite
167
ALGORITHMES & PROGRAMMATION I
Muhammad Ibn
Musa Al-Khwarizmi CHAPITRE VBIS
tableaux
Reproduction interdite
Reproduction interdite
168
EXEMPLE INTRODUCTIF
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
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
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.
Reproduction interdite
Reproduction interdite
173
TABLEAUX : REMARQUES
Un tableau peut être représenté graphiquement par (exemple
Note[15]) :
Muhammad Ibn
Musa Al-Khwarizmi
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)
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)
Reproduction interdite
Reproduction interdite
179
TABLEAUX : EXEMPLE (2)
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
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
Reproduction interdite
Reproduction interdite
183
TABLEAUX A DEUX DIMENSIONS
Reproduction interdite
Reproduction interdite
184
LECTURE D’UNE MATRICE
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
Syntaxe :
Reproduction interdite
Reproduction interdite
191
Tableaux à N dimensions
Muhammad Ibn
La manipulation d’un tableau à plusieurs dimensions suit le
Musa Al-Khwarizmi
même principe que celle des tableaux à deux 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 ».
Reproduction interdite
Reproduction interdite
194
LES CARACTERES
Reproduction interdite
Reproduction interdite
195
QU’Est-ce QUE LE CODE ASCII ?
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 ?
Reproduction interdite
Reproduction interdite
198
QU’Est-ce QUE LE CODE ASCII ?
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
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
Reproduction interdite
Reproduction interdite
208
EXERCICE
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.
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
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
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
Reproduction interdite
Reproduction interdite
215
PROCEDURES ET FONCTIONS STANDARDS SUR LES CHAINES
2. Fonctions standards
Reproduction interdite
Reproduction interdite
216
EXERCICE
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
Reproduction interdite
Reproduction interdite
220
INTRODUCTION
Reproduction interdite
Reproduction interdite
221
LES PROCEDURES
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
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
Reproduction interdite
Reproduction interdite
226
L’APPEL D’UNE PROCEDURE
Reproduction interdite
Reproduction interdite
227
EXEMPLE
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)
Reproduction interdite
Reproduction interdite
230
REMARQUES
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.
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.
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
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
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
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
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
Reproduction interdite
Reproduction interdite
246
PORTEE DES VARIABLES
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.
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
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 :
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
Reproduction interdite
Reproduction interdite
251
EXERCICE (CORRIGE)
SI (n > 1) ALORS
Retourner (n * Fact(n-1))
SINON
Retourner 1
FINSI
FINFONCTION
Reproduction interdite
Reproduction interdite
252
commentaires
Reproduction interdite
Reproduction interdite
253
NOTE
Reproduction interdite
Reproduction interdite
254
EXERCICE
Muhammad Ibn
Musa Al-Khwarizmi
Reproduction interdite
Reproduction interdite
255
AVANTAGES DES PROCEDURES & FONCTIONS
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
Syntaxe de la déclaration :
Muhammad Ibn
<identificateur champ> :
<type>
...
<identificateur champ> :
<type>
<identificateur champ> :
<type>
FINSTRUCTURE (ENREGISTREMENT)
Reproduction interdite
Reproduction interdite
259
EXEMPLE
Reproduction interdite
Reproduction interdite
260
ACCES AU CHAMPS
Syntaxe : <identificateur>.<identificateur champ>
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
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 :
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)
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 :
mesures.nb vaut 5
mesures.temp[3] vaut 6.3
Reproduction interdite
Reproduction interdite
269
LES TYPES ENUMERES
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
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
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.
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
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: 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
Reproduction interdite
Reproduction interdite
281
FLOT (FICHIER LOGIQUE)
Reproduction interdite
Reproduction interdite
282
FLOT (FICHIER LOGIQUE)
FFouvrir(”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 :
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
Reproduction interdite
Reproduction interdite
286
AUTRES FONCTIONS
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
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
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 :
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
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
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)
Variables
Fe : Fetud
et : Etudiant (* variable tampon *)
Reproduction interdite
Reproduction interdite
299
MANIPULATION DES FICHIERS A ORGANISATION SEQUENTIELLE
Ouvrir(NomFichier, mode)
Muhammad Ibn
Musa Al-Khwarizmi
Reproduction interdite
Reproduction interdite
300
MANIPULATION DES FICHIERS A ORGANISATION SEQUENTIELLE
Lire(NomFichier, fenêtre)
Fermer(NomFichier)
Muhammad Ibn
Musa Al-Khwarizmi Remarque :
Reproduction interdite
Reproduction interdite
302
CREATION D’UN FICHIER A ORGANISATION SEQUENTIELLE
Reproduction interdite
Reproduction interdite
303
CREATION D’UN FICHIER A ORGANISATION SEQUENTIELLE
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
Reproduction interdite
Reproduction interdite
306
LES FICHIERS TEXTES
Reproduction interdite
Reproduction interdite
307
LES FICHIERS TEXTES
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 :
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
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
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
Muhammad Ibn Si l’employé est trouvé, l’algorithme affiche son nom, son
Musa Al-Khwarizmi
prénom et son grade
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
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
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)
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
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
Variable x : x
entier
10
DEBUT
100
x10
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
Reproduction interdite
Reproduction interdite
331
VARIABLES STATIQUES / VARIABLES DYNAMIQUES
Reproduction interdite
Reproduction interdite
332
NOTION DE POINTEUR
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
Reproduction interdite
Reproduction interdite
334
NOTION DE POINTEUR
Reproduction interdite
Reproduction interdite
335
EXERCICE 1
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).
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
2) Manipulation de la variable
dynamique
P^ 5
Muhammad Ibn
Musa Al-Khwarizmi
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.
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
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^
Allouer(ptx1) Ecrire(ptx2^)
Lire(ptx1^) Libérer(ptx2)
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
Reproduction interdite
Reproduction interdite
345
VARIABLE DYNAMIQUE DE TYPE STRUCTURE
Type Date = STRUCTURE (ENREGISTREMENT)
J, m, a : entier
FINSTRUCTURE (ENREGISTREMENT)
pDate = pointeur vers Date
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
Libérer(P)
Reproduction interdite
Reproduction interdite
347
EXERCICE 2
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.
Reproduction interdite
Reproduction interdite
351
Exemple
Reproduction interdite
Reproduction interdite
352
Définition d’une liste LINEAIRE CHAINEE
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
Reproduction interdite
Reproduction interdite
355
MODELE SUR LES LISTES
Primitives Exemples d’appels Rôle
Reproduction interdite
Reproduction interdite
356
OPERATIONS ELEMENTAIRES
1) Initialisation d’un pointeur : (Allouer)
P P
Init(P)
? NI
Muhammad Ibn L
Musa Al-Khwarizmi
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
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
Reproduction interdite
Reproduction interdite
364
EXERCICES D’APPLICATION DU MODELE
Reproduction interdite
Reproduction interdite
365
EXERCICES D’APPLICATION DU MODELE(CORRIGE)
S Q P
Allouer(S)
Aff_Val(S,2)
QS …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
QSuiv(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
QSuiv(P) …ligne 7
Reproduction interdite
Reproduction interdite
369
EXERCICES
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
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
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 :
Muhammad Ibn
Musa Al-Khwarizmi
Fonction Pile_Vide (P : Pile) : Booléen, Renvoie la valeur
vrai si la pile est vide.
Reproduction interdite
Reproduction interdite
380
MANIPULATION D’UNE PILE
Reproduction interdite
Reproduction interdite
381
MANIPULATION D’UNE PILE
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
Reproduction interdite
Reproduction interdite
385
LES FILES
Types
Liste = ^Cellule
Cellule = STRUCTURE (ENREGISTREMENT)
Elem : Entier
Suiv : Liste
Muhammad Ibn FINSTRUCTURE (ENREGISTREMENT)
Musa Al-Khwarizmi
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 :
Reproduction interdite
Reproduction interdite
387
MANIPULATION D’UNE FILE
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
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)
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
Reproduction interdite
Reproduction interdite
395
OBJECTIFS
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)
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
Muhammad Ibn
Musa Al-Khwarizmi
Meilleur cas (Temps minimum 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 :
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
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).
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
xx+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
kk+1
FINSI
FINTANTQUE
Retourner(res)
FINFONCTION
Reproduction interdite
Reproduction interdite
421
EXERCICE INTRODUCTIF (SOLUTION 2)
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
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
Reproduction interdite
Reproduction interdite
425
DEFINITION DE LA COMPLEXITE D’UN ALGORITHME
Définition
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
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
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
Muhammad Ibn
Musa Al-Khwarizmi
Exemple 3 : Que vaut le coût de l’algorithme B
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
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
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