Академический Документы
Профессиональный Документы
Культура Документы
Développement et
Applications Informatique
Langage de programmation
structurée
ESSADDOUKI Mostafa
essaddouki@gmail.com
Programme
I. Logiciels d’application
II. Langage de programmation structurée
1. Algorithmique
2. Langage c
3. Structures de données dynamique
III. Langage de programmation orientée
objet (java)
2
Chapitre 1 :Langage de programmation structurée
ALGORITHMIQUE
Algorithmique
CODAGE DE
L’INFORMATION
ESSADDOUKI Mostafa
essaddouki@gmail.com
CODAGE DE L’INFORMATION
v Introduction
v Capacité Mémoire
Algorithmique
v Langage et Traducteurs
5
Introduction
CODAGE DE L’INFORMATION
6
Introduction
CODAGE DE L’INFORMATION
¥ Langage machine
¥ Langage binaire: l’information est exprimée et
manipulée sous forme d’une suite de bits.
7
Introduction
CODAGE DE L’INFORMATION
¥ Application (10110101) ??
8
Capacité Mémoire
9
Capacité Mémoire
CODAGE DE L’INFORMATION
2. Unités de mesures
¥ 1 bit = 1 ou 0
¥ 8 bits = 1 Octet
¥ D’après la table précédente, chaque caractère est donc
représenté par un ensemble de 8 bits 1 ( 1 bit = 0 ou 1 ).
Cet ensemble de 8 bits est appelé un Octet ( byte).
¥ L’unité de mesure de la capacité est par conséquent
l’Octet.
¥ 1 Kilooctet = 1 Ko = 1024 octets
¥ 1 Migaoctet = 1 Mo = 1024 Ko
¥ 1 Gigaoctet = 1 Go = 1024 Mo
10
Langage et Traducteurs
CODAGE DE L’INFORMATION
a. Langage Evolué :
Dans le but de faciliter l’accès de l’Informatique à un plus grand nombre
de personne, on a été amené à créer des langages dont les mots sont
proches d’une langue parlée (Souvent Anglais).
Ces langages présentent l’avantage d’être universels dans la mesure ou ils
ne dépendent pas de la machine qui les utilise. Ces langages évolués ont
été généralement crée en fonction d’une orientation donnée.
11
Langage et Traducteurs
CODAGE DE L’INFORMATION
1. Traducteurs:
Tout programme écrit en langage évolué doit être traduit en
langage machine afin de pouvoir être exécuté.
On distingue 2 catégories de traducteurs ( programme spécial
qui permet le passage du langage évolué vers le langage
machine ).
12
Langage et Traducteurs
CODAGE DE L’INFORMATION
1. Traducteurs:
a. Interpréteurs
Les Interpréteurs permettent de traduire et d’exécuter
chaque ligne du programme source, les Interpréteurs sont
souvent utilisés dans la mise au point d’un programme.
13
Langage et Traducteurs
CODAGE DE L’INFORMATION
1. Traducteurs:
a. Compilateurs
Le programme source est traduit entièrement en langage
machine ce qui permet d’obtenir un programme Objet,
quant celui-ci est dépourvu d’erreurs, il est alors exécuté.
14
Faut-il être matheux pour
être bon en algorithmique ?
La maîtrise de l’algorithmique nécessite deux
qualités :
Algorithmique
v Intuition
15
Faut-il être matheux pour être bon en algorithmique
Intuition
q il faut avoir une certaine intuition, car
aucune recette ne permet de savoir a priori
quelles instructions permettront d’obtenir
le résultat voulu. C’est là, si l’on y tient,
qu’intervient la forme « d’intelligence »
?
17
Algorithmique et
programmation
Pourquoi apprendre l’algorithmique pour
apprendre à programmer ? En quoi a-t-on
Algorithmique
18
Algorithmique et
programmation
¥ Parce que l’algorithmique exprime les
instructions résolvant un problème donné
Algorithmique
19
Avec quelles conventions
écrit-on un algorithme ?
Historiquement, plusieurs types de notations
ont représenté des algorithmes :
Algorithmique
¥ Pseudo-code
20
Algorigramme
L’algorigramme est la
représentation graphique
de l’algorithme, il permet
de représenter chaque
opération élémentaire au
moyen d’un symbole
graphique normalisé.
21
Avec quelles conventions écrit-on un algorithme ?
Algorigramme
22
Avec quelles conventions écrit-on un algorithme ?
Pseudo-code
¥ Ce mode de représentation consiste à
exprimer en langage naturel, mais selon une
disposition particulière et des mots choisis.
¥ Ce pseudo-code est susceptible de varier
légèrement d’un livre (ou d’un enseignant) à un
autre. C’est bien normal : le pseudo-code,
encore une fois, est purement conventionnel.
¥ Le pseudo-code se prête mieux que
l’algorigramme à la description des structures
complexes existant dans les langages de haut
niveau.
23
Algorithmique
Introduction
ESSADDOUKI Mostafa
essaddouki@gmail.com
Introduction
25
Introduction
26
Introduction
27
Définition
¥ Algorithmique:
¥ Définition1: désigne l'ensemble des règles et des
techniques qui sont impliquées dans la définition
et la conception des algorithmes.
¥ Définition2: l'algorithmique c'est de savoir
comment lire, écrire, évaluer et optimiser des
algorithmes.
28
Définition
¥ Algorithme:
¥ Définition1: Un algorithme décrit une méthode de
résolution de problème programmable sur
machine.
¥ Définition2 : Un algorithme est un ensemble
d'opérations de calcul élémentaires, organisé selon
des règles précises dans le but de résoudre un
problème donné. Pour chaque donnée du
problème, l'algorithme retourne une réponse
après un nombre fini d'opérations(+,-,/,<,>,...).
29
Définition
30
Méthodologie
31
Méthodologie
32
Méthodologie
¥ Comment on programme?
On utilise un pseudo-langage, comportant toutes les
structures de base d'un langage de programmation
34
La séquence d’instructions
¥ S'habiller
35
Structures Alternatives
¥ Sinon
¥ Mettre sa tenue de travail
¥ Aller travailler
¥ Fin Si
36
Structure répétitive
37
Pourquoi faire des
algorithmes
¥ la rédaction des algorithmes permet plusieurs
choses :
¥ d'être compréhensible par tout informaticien
même s'il ne connait pas le langage du programme
¥ de vérifier la complexité du programme et donc
de l'optimiser
¥ de faire ressortir de manière compréhensible les
cas d'utilisations
38
Notions de Base
39
Comment faire des
algorithmes
¥ les algorithmes sont rédigés dans un langage à mi-chemin
entre le français et les langages de programmation, dit
Notions de Base
pseudo-code .
¥ En programmation, le pseudo-code est une façon de
décrire un algorithme sans référence à un langage de
programmation particulier. L'écriture en pseudo-code
permet souvent de bien prendre toute la mesure de la
difficulté de l'implémentation de l'algorithme, et de
développer une démarche structurée dans la construction
de celui-ci.
40
Comment faire des
algorithmes(suite)
¥ La raison d’être d’un algorithme est de
résoudre un problème. La plus grande
Notions de Base
42
Les variables(suite)
Une variable possède 3 attributs :
Une valeur
Notions de Base
43
Les variables(suite)
Nom de la variable
Notions de Base
44
Les variables(suite)
Nom de la variable
Exemple
Notions de Base
◦
Je veux mémoriser l'âge d'une personne dans une variable, j'ai le
choix de l'appeler :
a
âge
age
ageDeLaPersonneDontJeSuisEntrainDeParler
◦ Remarque :
Le premier cas est trop court, si je n'ai pas lu la description plus
haut, je suis totalement perdu. Le deuxième cas ne convient pas
non plus car on évitera tout caractère accentué dans les noms de
variable. Le dernier cas est certes très précis, mais tellement long
qu'il en devient illisible. Bref, le troisième cas semble le plus
approprié
45
Les variables(suite)
Type de la variable
Notions de Base
46
Les variables(suite)
Type de la variable
Entier : il s'agit des variables destinées à contenir
Notions de Base
◦
un nombre entier positif ou négatif.
◦ Réel : il s'agit des variables numériques qui ne sont
pas des entiers, c'est à dire qui comportent des
décimales
◦ Caractère : Les variables de type caractère
contiennent des caractères alphabétiques ou
numériques seul(ex: ‘c’)
◦ Booléen : Les variables qui prennent les valeurs
(vrai ou faux) ou les valeurs (oui ou non).
47
Les variables(suite)
Type de la variable
Chaîne de caractères : représentant un
Notions de Base
◦
texte, contenant un ou plusieurs caractères(ex:
’’Bonjour tout le monde’’)
◦ Tous les traducteurs de langages prennent en compte
cette notion de type par des instructions de déclaration
de type
◦ Exemple:
Variable Moyenne : réel;(Moyenne en numérique)
Variable NbreEtudiant : entier; (NbreEtudiant en
numérique)
Variable c1, lettre, z : caractère;
48
Les variables(suite)
49
Les variables(suite)
51
Les instructions
L’instruction d’affectation
◦ L’instruction d’affectation permet de manipuler les valeurs
Notions de Base
des variables. Son rôle consiste à placer une valeur dans une
variable.
◦ Notation X=Y ou bien X:=Y ou bien XßY
◦ Exemple :
1. affecter une valeur à une variable
X:=5, On charge la variable X avec la valeur 5
2. Affecter le contenu d’une variable à une autre variable
X:=Y , On charge X avec le contenu de Y
Y représente :
• Constante ou Nom d’une variable ou
Expression logique
X et Y doivent être de même type
52
Les instructions(suite)
L’instruction d’affectation
Notions de Base
X Y
3 4
11
53
Les instructions(suite)
Les instructions d’Entrée/Sortie
◦ Un programme est amené à :
Notions de Base
54
Syntaxe général de
l’algorithme
Le moule d’un algorithme
Un algorithme comportera :
Notions de Base
◦
Une partie déclaration
Une partie encadrée par ’’début’’ ’’ fin’’ où sont
décrites les actions
Algorithme Nom_de_l_algorithme :
Déclaration;
Debut
Actions;
Fin
55
Syntaxe général de
l’algorithme(suite)
Le moule d’un algorithme
Notions de Base
56
Syntaxe général de
l’algorithme(suite)
Exemple :
Algorithme toto
Notions de Base
/* les constantes: il est obligatoire de leur donner une valeur dès leur
déclaration */
CONST titi ß 10 : entier
tutu ß "bonjour!" : chaîne
// les variables au sens strict déclarations
VAR riri, fifi : réels
loulou : chaîne
Debut
<Instruction1>;
<Instruction2>;
….
<Instruction3>; Corps de l’algorithme
Fin
57
Des Questions ?
58
Exercices : Instructions
Exercice 1:
Écrire un algorithme qui permet de saisir des
valeurs pour A et B , faire la somme et afficher le
résultat?
Exercice 2:
Écrire un algorithme qui permet de calculer et
afficher la surface d’un cercle?
59
Exercices :
Instructions(suite)
¥ Exercice 3
Écrire un algorithme qui permet de calculer et
afficher le salaire brut d’un ouvrier connaissant le
nombre d’heure et le tarif d’horaire?
¥ Exercice 4
Écrire un algorithme qui fait la conversion d’une
somme d’argent donnée en DH, en une somme
d’argent en Euro?
60
Les structures de contrôles
Le branchement conditionnel
Le branchement conditionnel Aide à Structurer un
Notions de Base
ensemble d’instructions
Syntaxe 1 :
Si <conditions> alors
<Instruction1>
…
<Instruction N>
Fsi
Exemple :
Si (a<b) alors
maxßb;
minßa;
Fsi 61
Les structures de
contrôles(suite)
Le branchement conditionnel
Notions de Base
Syntaxe :
Si <expression booléenne> alors
<Instruction1>
…
<Instruction N>
Sinon Exemple :
<Instruction1> Si (a<b) alors
… maxßb
<Instruction N> Sinon
Fsi maxßa
Fsi 62
Les structures de
contrôles(suite)
Qu’est ce qu’une condition ?
une condition est composée de trois éléments :
Notions de Base
◦
une valeur, un opérateur de comparaison, une autre
valeur
◦ Les valeurs peuvent être a priori de n’importe quel type
(numériques, caractères…). Mais si l’on veut que la
comparaison ait un sens, il faut que les deux valeurs de
la comparaison soient du même type !
◦ Les opérateurs de comparaison sont :
= égal à, <> différent de
< strictement plus petit que, > strictement plus grand
que, <= plus petit ou égal à, >= plus grand ou égal à…
63
Les structures de
contrôles(suite)
¥ Exemple:
Notions de Base
64
Les structures de
contrôles(suite)
Conditions composées:
◦ Certains problèmes exigent parfois de formuler des
Notions de Base
65
Les structures de
contrôles(suite)
¥ le NON inverse une condition : NON(Condition1) est
VRAI si Condition1 est FAUX, et il sera FAUX si
Notions de Base
C1 ou C2 C2 Vrai C2 Faux
C1 Vrai Vrai Vrai
C1 Faux Vrai Faux
66
Les structures de
contrôles(suite)
C1 xor C2 C2 Vrai C2 Faux
C1 Vrai Faux Vrai
Notions de Base
Non C1
C1 Vrai Faux
¥ Exercice : C1 Faux Vrai
¥ Écrire un algorithme qui demande deux nombres à
l’utilisateur et l’informe ensuite si leur produit est
négatif ou positif (on laisse de côté le cas où le
produit est nul). Attention toutefois : on ne doit
pas calculer le produit des deux nombres.
67
Exercices : structures de
contrôles
¥ Exercice 1:
¥ On désire comparer deux valeurs ,Écrire un
algorithme qui affiche la plus grande des deux?
¥ Exercice 2:
¥ Écrire un algorithme qui affiche le salaire brut d’un
ouvrier sachant que les heures supplémentaires de
172 heures sont payées à 50% de tarifs d’horaire en
plus?
68
Exercices : structures de
contrôles
¥ Exercice 4:
Calculer le montant de la facture d’un client ayant commandé
une quantité d’un produit avec un prix unitaire hors taxe
¥ Le taux de T.V.A est : 20%
¥ Les frais de transport sont 0.8 DH de Km , Le client est disposé
du frais de transport si le montant est supérieur 4500 DH
¥ Exercice 5:
Une bibliothèque fait des réductions sur l’achat des livres :
¥ 25% pour les étudiants.
¥ 15% pour les enseignants
Écrire un algorithme qui calcule et affiche le prix à payer selon le
type du client?
69
Exercices : structures de
contrôles
¥ Exercice 6:
Écrire un algorithme qui calcule et affiche le maximum
de trois nombre A,B et C ?
¥ Exercice 7:
Écrire un algorithme qui permet de résoudre
l’équation du premier degré : aX+b=0?
¥ Exercice 8:
Écrire un algorithme qui permet de résoudre une
équation de second degré : aX²+bX+c=0 ?
70
Exercices : structures de
contrôles
¥ Exercice 9:
Écrire un algorithme qui lie trois nombre A,B et C , puis il
détermine si l’un est égal à la somme de 2 autres sinon il
affiche un message « pas de solution »?
71
Les structures de
contrôles(suite)
Le choix multiple
Variable i:entier;
Notions de Base
Lire(i);
CAS i VAUT
1 : Instruction(s) 1
2 : Instruction(s) 2
3 : Instruction(s) 3
…
n : Instruction(s) n
Autre : Instructions
FINCAS
72
Exercices : structures de
contrôles
¥ Exercice 10:
Écrire un algorithme qui à partir d’un nombre
compris entre 1 et 7 affiche le jour
correspendant?
73
Les structures de
contrôles(suite)
Tests imbriqués:
◦ un algorithme doit donner l’état de l’eau selon sa
Notions de Base
74
Les structures de
contrôles(suite)
Tests imbriqués: deuxième solution qui
imbrique le test
Notions de Base
75
Les structures de
contrôles(suite)
¥ Exercice:
Notions de Base
76
Les structures de
contrôles(suite)
Variables Booléennes:
◦ Il existe des variables (les booléennes) susceptibles
Notions de Base
77
Les structures de
contrôles(suite)
¥ Si A Alors
Ecrire( “C’est de la glace“)
Notions de Base
Sinon
Si B Alors
Ecrire “C’est du liquide”
Sinon
Ecrire “C’est de la vapeur”
Finsi
Finsi
Fin
¥ Dans une condition composée employant à la fois
l’opérateur ET et l’opérateur OU, la présence de
parenthèses possède une influence sur le résultat.
78
Exercice: Les structures de
contrôles
¥ Ecrivez un algorithme qui lira au clavier l’heure
et les minutes, et il affichera l’heure qu’il sera
une minute plus tard.
¥ Par exemple, si l'utilisateur tape 21 puis 32,
l'algorithme doit répondre : "Dans une minute,
il sera 21 heure(s) 33".
¥ NB : on suppose que l'utilisateur entre une
heure valide. Pas besoin donc de la vérifier.
79
Structure répétitive
¥ A quoi cela sert-il donc ?
Prenons le cas d’une saisie au clavier (une lecture),
Notions de Base
¥
où par exemple, le programme pose une question à
laquelle l’utilisateur doit répondre par O (Oui) ou
N (Non). Mais tôt ou tard, l’utilisateur, risque de
taper autre chose que la réponse attendue.
¥ Alors, dans tout l’algorithme on met en place ce
qu’on appelle un contrôle de saisie, afin de
vérifier que les données entrées au clavier
correspondent bien à celles attendues par
l’algorithme.
80
Structure répétitive(suite)
¥ A quoi cela sert-il donc ?
¥ On pourrait essayer avec une structure de contrôle SI.
Notions de Base
81
Structure répétitive(suite)
¥
entre une valeur correcte à la deuxième demande,
c’est parfait.
¥ Par contre, s’il commet une deuxième erreur, il
faudrait rajouter un SI. Et ainsi de suite, on peut
rajouter des centaines de SI, et écrire un
algorithme lourd.
¥ La solution consistant à aligner des SI n’est pas
correcte dans ce cas. La seule issue est d’utiliser
une structure de boucle.
82
Structure répétitive(suite)
A quoi cela sert-il donc ?
◦ Qui ce présente ainsi: TantQue booléen Faire
Notions de Base
…
Instructions
…
FinTantQue
Le principe est simple : l’algorithme arrive sur la ligne du TantQue. Il
examine alors la valeur du booléen (qui, je le rappelle, peut être une
variable booléenne ou, plus fréquemment, une condition). Si cette valeur
est VRAI, l’algorithme exécute les instructions qui suivent, jusqu’à ce qu’il
rencontre la ligne FinTantQue. Il retourne ensuite sur la ligne du TantQue,
procède au même examen, et ainsi de suite. Le cycle ne s’arrête que
lorsque le booléen prend la valeur FAUX.
83
Structure répétitive(suite)
¥ A quoi cela sert-il donc ?
¥ Illustration avec notre problème de contrôle de saisie. Une
Notions de Base
¥
84
Structure répétitive(suite)
¥ A quoi cela sert-il donc ?
¥ Une deuxième approximation de la solution, avec affectation, consiste à
écrire :
Notions de Base
¥
85
Structure répétitive(suite)
¥ Pour
86
Structure répétitive(suite)
Tant que
Les répétitives où la condition d’arrêt est
Notions de Base
placée au début.
◦ Syntaxe :
Tant que <expression logique> faire
<séquence d’instructions>
Ftantque
TantQue condition
actions
FTantQue
Ce qui signifie : tant que la condition est vraie,
on exécute les actions.
87
Des Questions ?
88
Exercices
90
Structure répétitive(suite)
¥
fixée une fois pour toute.
¥ Syntaxe :
¥ Pour Compteur = Initial à Final Pas
ValeurDuPas
…
Instructions
…
Compteur suivant (n’est pas indispensable)
FPour
92
Structure répétitive(suite)
¥ la progression du compteur est laissée à votre libre disposition.
Dans la plupart des cas, on a besoin d’une variable qui augmente
Notions de Base
93
Structure répétitive(suite)
94
Structure répétitive(suite)
95
Structure répétitive(suite)
Répéter..Jusqu’à :
la condition d’arrêt est placée à la fin
Notions de Base
◦ Syntaxe :
Répéter
<séquence d’instructions>
Jusqu’à <expression logique>
Frépéter
◦ Exemple :
Num1:=1
Répéter
Ecrire (“Passage numéro : “, Num1)
Num1 = Num1 + 1
Jusqu’à (Num1 >= 15 )
96
Des Questions ?
97
Exercices
98
Exercices
99
Devoir N° 1
¥ Une salle de cinéma désire automatiser la gestion de la billetterie
pour chaque client qui se présente, on calcule le prix du billet en
fonction des données suivantes:
¥ NF : Numéro du film
¥ Age : Age de spectateur
¥ Le prix normal de la facture est de 30 DH, cependant des remises
peuvent être accorder en fonction du critères suivants :
¥ NF=2 ou Age < 15 remise de 50%
¥ NF=2 et Age >75 remise 25%
¥ NF=3 et Age < 15 entrée refusée
¥ Écrire un algorithme qui permet de calculer et décider le prix à
payer pou chaque client qui se présente . on arrête la saisie par
"non"
100
Devoir N°2
¥ Une entreprise désire automatisée la gestion de paie de
son personnel. Pour chaque employé, on doit introduire
le nom, le prénom, le salaire de base(SB), le nombre
d'enfant et l'ancienneté(ANC).
¥ Un prix de 100 DH est accordé pour chaque
enfant .
¥ Si ancienneté<=10 ans et SB < 1000 DH une prime de 50% du
SB
¥ Si l'ancienneté est 10 ans < ANC <20 ans et SB > 1000 DH
prime de 70% du SB
¥ Calculer le salaire brute (SB+ le prime + les enfants) et
afficher le nom, prénom, l'ancienneté , SB, prime et le
salaire brute
101
Notions de base
Les tableaux
ESSADDOUKI Mostafa
essaddouki@gmail.com
Les tableaux
103
Les tableaux(suite)
104
Les tableaux(suite)
105
Les tableaux(suite)
106
Les tableaux(suite)
¥ Remarque générale : l’indice qui sert à désigner les
éléments d’un tableau peut être exprimé directement
comme un nombre en clair, mais il peut être aussi une
variable, ou une expression calculée.
¥ La valeur d’un indice doit toujours :
¥ être égale au moins à 0 (dans quelques rares langages, le
premier élément d’un tableau porte l’indice 1). Mais nous avons
choisi ici de commencer la numérotation des indices à zéro,
comme c’est le cas en langage C.
¥ être un nombre entier. Quel que soit le langage.
¥ être inférieure ou égale au nombre d’éléments du
tableau (moins 1, si l’on commence la numérotation à
zéro).
107
Exercices
110
Exercices
¥ Que produit l’algorithme suivant ?
Tableau N(7) en Entier
Variables i, k en Entier
Début
N(0) ← 1
Pour k ← 1 à 6
N(k) ← N(k-1) + 2
FPour
Pour i ← 0 à 6
Ecrire N(i)
FPour
Fin
¥ Peut-on simplifier cet algorithme avec le même résultat ?
111
Notions de sous-algorithme
Définition
◦ Un sous-algorithme est un élément d’algorithme nommé et
éventuellement paramétré que l’on définit afin de pouvoir
ensuite l’appeler par son nom en affectant, s’il y a lieu, des
valeurs aux paramètres.
◦ Intérêt :
Réaliser un découpage d’une tâche en sous-tâche.
Effectuer une seule description d’une tâche commune
Concevoir une application de manière descendante en entrant de plus
en plus dans les détails
◦ Structure : un sous-algorithme est composé
D’une tête nom sous-algorithme, paramètres(arguments) avec leur
type
D’un corps des déclarations d’objets locaux aux sous-algorithme,
instructions à exécuter
112
Notions de sous-algorithme
◦ Sous-algorithme Nom(liste
Nom des paramètres)
déclarations des variables locales
Début
Corps du sous-algorihtme
Fin
◦ Algorithme Nom
Déclaration des variables
Début
Instructions
Appel du sous-algorithme
Instructions
Fin
113
Procédures & Fonctions
Procédures
◦ Syntaxe
Procédure nom_procédure(var:type;var:type)
Variable interne
Début procédure
Instructions
Finprocédure
114
Procédures & Fonctions
Fonctions
◦ Syntaxe
Fonction nom_fonction(var:type;var:type):type
Variable interne;
Début fonction
Instructions;
Retourner variable;
Fin fonction
115
Procédure & Fonction
Rep1,Rep2 : caractère
Fonction RepOuiNon() : caractères
variable Rep ← ""
TantQue Rep <> "Oui" et Rep <> "Non"
Ecrire( "Tapez Oui ou Non")
Lire (Rep)
FinTantQue
Renvoyer Rep
Fin
Début
Ecrire( "Etes-vous marié ?")
Rep1 ← RepOuiNon()
Ecrire( "Avez-vous des enfants ?" )
Rep2 ← RepOuiNon()
Fin
116
EXERCICES
Exercices
¥ EX0
¥ Ecrire un algorithme qui lit une valeur qlq x et qui
détermine la valeur de l’expression :
1+x+x2+…+x20
¥ EX1
¥ Ecrire une procédure qui lit N éléments en paramètre et
retourne la somme de ces éléments dans une variable
somme.
¥ EX2
¥ Ecrire une fonction entière statistique qui lit 100
notes et retourne le nombre de notes comprises
entre 10 et 20 compris
118
Exercices
EX3
◦ Ecrire un algorithme qui permet de faire les
traitements suivants :
Soit un tableau T de N entiers
1. Remplir les N cases du tableau
2. Compter le nombre des éléments non nuls
3. Trouver le plus grand éléments du tableau et le
mettre dans la variable MAX
4. Rechercher la place du plus petit élément et le
mettre dans la variable position.
119
Exercices
¥ EX4
¥ Ecrire un algorithme qui cherche dans un tableau non
trié si un nombre x existe au moins une fois.
¥ EX5
¥ Ecrire un algorithme qui cherche dans un tableau trié si
un nombre x existe au moins une fois.
¥ EX6
¥ Ecrire un algorithme qui permet de lire les âges de 25
120
Exercices
¥ EX7
¥ Le tableau factures contient N constantes de factures,
le tableau PAYES de N booléens indique si chacune
des factures a été réglées ou pas, on veut recopier
séquentiellement dans un 3ème tableau
RESTESAPAYES, les sommes restant dues.
121
Récursivité
¥ Un algorithme est dit récursif lorsqu’il intervient dans sa
description, c’est-à-dire lorsqu’il est défini en fonction de lui-
même.
¥ Exemple: x0 = 1, xn = x*xn-1 si n≥1
Fonction fact(x : entier, n : entier):entier
Variable Résultat : entier;
Début
Si(n=0) alors
Résultat =1;
Sinon
Résultat = x*fact(x,n-1);
Fsi
Renvoyer Résultat;
Fin
122
Méthodes de Tri élémentaires
•Définition
•Tri par sélection
•Tri par bulles
•Tri par insertion
ESSADDOUKI Mostafa
essaddouki@gmail.com
Définition
125
Tri par sélection(suite)
Le sous-algorithme suivant est une implantation de ce processus. Pour tout i entre 1 et
N-1, on échange T[i] avec l’élément de valeur minimal parmi T[i]….T[N] :
Pocédure TriSelection(T:
TriSelection 1…N: entier; N: entier)
Var i, j, min, q:entier;
Début
pour i de 1 jusqu’à N faire
min=i; A mesure que l’indice i progresse vers
pour j de i+1 jusqu’à N faire la droite du fichier, les éléments situés à
Si(T[j]<T[min]) alors sa gauche ont pris leur position
min=j; définitive et le tableau est trié lorsque
Fsi l’indice i atteint l’extrémité droite
Fpour
q=T[min];T[min]=T[i];T[i]=q;
Fpour
Finprocédure
126
Tri par sélection(suite)
127
Tri par bulle
128
Tri par bulle(suite)
/* Procédure de tri bulle */
procedure triBulle(entier[] tab)
entier i, k; entier tmp;
pour (i de N à 2 en décrémentant de 1) faire
pour (k de 1 à i-1 en incrémentant de 1) faire
si (tab[k] > tab[k+1]) alors
tmp <- tab[k];
tab[k] <- tab[k+1];
tab[k+1] <- tmp;
fin si
fin pour
fin pour
fin procedure
129
Tri par bulle(suite)
¥ Le nombre de comparaisons dans la procédure de tri bulle est le
même que pour le tri par sélection :
¥ Le nombre d'échanges quant à lui dépend de l'ordre des éléments
dans le tableau :
¥ dans le meilleur des cas, le tableau initial est trié et il n'y a pas d'échange à
faire ;
¥ en moyenne, on montre que le nombre d'échanges est de :
¥ dans le pire des cas, les entiers du tableau sont initialement donnés
dans l'ordre décroissant. Dans ce cas, on effectue l'échange à
chaque comparaison, c'est-à-dire que le nombre d'échanges est
alors de :
130
Tri par insertion
¥ Cette méthode de tri est très différente de la méthode de tri par
sélection et s'apparente à celle utilisée pour trier ses cartes dans
un jeu : on prend une carte, tab[1], puis la deuxième, tab[2], que l'on
place en fonction de la première, ensuite la troisième tab[3] que
l'on insère à sa place en fonction des deux premières et ainsi de
suite. Le principe général est donc de considérer que les (i-1)
premières cartes, tab[1],..., tab[i-1] sont triées et de placer la ie
carte, tab[i], à sa place parmi les (i-1) déjà triées, et ce jusqu'à ce
que i = N.
¥ Pour placer tab[i], on utilise une variable intermédiaire tmp pour
conserver sa valeur qu'on compare successivement à chaque
élément tab[i-1],tab[i-2],... qu'on déplace vers la droite tant que sa
valeur est supérieure à celle de tmp. On affecte alors à
l'emplacement dans le tableau laissé libre par ce décalage la valeur
de tmp.
131
Tri par insertion(suite)
132
Tri par insertion(suite)
133