Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
DE L'ENSEIGNEMENT
SUPERIEUR
ET DE LA
RECHERCHE TECHNOLOGIQUE
DIRECTION GENERALE DES ETUDES TECHNOLOGIQUES
ISET DJERBA
DEPARTEMENT INFORMATIQUE
COURS:
ALGORITHMIQUE
ET STRUCTURES DE DONNEES
PAR:
EN INFORMATIQUE
PUBLIC:
NIVEAU
VOLUME
TECHNICIEN SUPERIEUR EN
HORAIRE HEBDOMADAIRE:
4.5H
CI
INFORMATIQUE
DU COURS:
DATE
Semaine 1
MOYENS PEDAGOGIQUES
Note de cours
Tableau
Support de TD
Note de cours
Tableau
Support de TD
Note de cours
Tableau
Support de TD
Note de cours
Tableau
Support de TD
Note de cours
Tableau
Support de TD
Note de cours
Tableau
Support de TD
Note de cours
Tableau
Support de TD
2 sur 54
3 sur 54
PLAN DU COURS
II.
4 sur 54
II.
III.
IV.
De l'algorithme au programme
la mmoire centrale
l'unit centrale
les priphriques
l'unit arithmtique et logique (UAL) qui s'occupe de toutes les oprations arithmtiques et
l'unit de commande (UC) qui excute les programmes instructions par instructions en
les priphriques d'entre assurant l'entre des donnes partir de l'utilisateur (exemples: clavier,
les priphriques de sortie assurant la sortie des donnes vers l'utilisateur (exemples: imprimante,
5 sur 54
Les priphriques d'entre et de sortie assurant l'entre et la sortie des donnes partir et vers
l'utilisateur (exemples: disque dur, bande magntique, disquette, cd-rom groups sous le nom
mmoire auxiliaire ou mmoire de masse ou mmoire secondaire, modem, etc.)
Voici ci-dessous un schma simplifi d'un ordinateur:
Unit centrale
- UAL
-
Mmoire centrale
UC
Priphriques d'entre
Priphriques de sortie
Priphriques d'entre et
de sortie
l'existence d'un problme rsoudre. Ainsi, la rsolution d'un problme passe par 3 tapes:
-
l'analyse qui consiste collecter les donnes ncessaires pour la rsolution du problme
l'laboration de l'algorithme qui s'agit de l'ensemble d'tapes suivre pour rsoudre le problme
Exemple:
Problme: confection d'une robe par une couturire
-
La pr-analyse: il s'agit de prparer une robe pour une cliente pour une date d
L'analyse: il s'agit de collecter les donnes ncessaires pour commencer la confection de la robe:
o
Le modle
Le style de la robe (longue, courte, cintre, ample, avec col ou non, etc.)
Le tissu
La date d
Etc.
6 sur 54
prparer le patron
7 sur 54
Algorithme
EDITION
COMPILATION
OUI
Erreur syntaxique
NON
OUI
Erreur smantique
NON
EXECUTION
OUI
Erreur de logique
NON
Rsultat fourni
COMPILATION : C est la phase de dtection des erreurs dans un programme. Ces erreurs
sont de type syntaxique et smantique.
Les erreurs syntaxiques sont des erreurs gnres par le compilateur s il n y a pas un respect
de la syntaxe du langage de programmation avec lequel est crit le programme compil.
8 sur 54
Les erreurs smantiques sont gnres si le programme effectue des oprations illgales ou
interdites (Exp : division par zro, affectation d une valeur n appartenant pas au domaine
une variable, etc.).
9 sur 54
il ne doit pas contenir des caractres spciaux (sauf le tiret de soulignement (_))
Exemple:
: une variable dsignant le montant d'une facture
Montant
Note2Math
2. NOTION DE CONSTANTE
Une constante possde les mmes caractristiques qu'une variable sauf que la valeur ne change pas au
cours de l'excution du programme.
Exemple:
-
10 sur 54
Const PI=3.14 permet de donner la valeur 3.14 la constante PI d'une manire absolue, on ne pourrait
pas changer la valeur de PI au cours de l'excution d'un programme.
-
Const Taux=0.25 permet de donner la valeur 0.25 la constante Taux d'une manire absolue, on ne
pourrait pas changer la valeur de Taux au cours de l'excution d'un programme.
1. TYPE ENTIER
Le type entier comprend les valeurs numriques entires, positives ou ngatives. Les oprations
arithmtiques effectues sur ces nombres sont:
L'addition (+), la soustraction (-), la division rlle (/), la division entire (Div), la multiplication (*), le
reste de la division (mod) et l'oppos unaire (-).
Exemple:
X: entier
Age: entier
Annee, mois, jour: entier
2. TYPE
REEL
Le type rel comprend les valeurs dcimales positives ou ngatives. Les oprations appliques sur le
type entier sont valables pour le type rel.
Exemple:
X: rel
3. TYPE CARACTERE
Une variable de type caractre accepte les 26 lettres latines majuscules et les 26 lettres minuscules, les
10 chiffres arabes et les caractres spciaux. Ces valeurs sont dlimites par 2 apostrophes.
Exemple:
C: caractre
C1, C2: caractre
11 sur 54
5. TYPE BOOLEEN
Il s'appelle aussi type logique et il accepte deux valeurs: vrai ou faux (true ou false).
Il y a 2 types d'oprateurs qui s'appliquent sur les variables de type boolen:
-
Les oprateurs logiques qui s'appliquent sur les variables de type boolen sont:
-
ET pour la conjonction
OU pour la disjonction
Le tableau suivant rsume le rsultat de l'application de ces oprateurs sur deux variables var1 et
var2.
var1
var2
NON var1
var1 ET var2
var1 ou var2
Vrai
Vrai
Faux
Vrai
Vrai
Vrai
Faux
Faux
Faux
Vrai
Faux
Vrai
Vrai
Faux
Vrai
Faux
Faux
Vrai
Faux
Faux
Les oprateurs de comparaison qui s'appliquent sur les variables de type boolen sont:
-
<
>
<=
>=
<>
III.
et
d'instructions.
Sa structure gnrale ressemble la suivante:
ALGORITHME <Nom_Algorithme>
DEBUT
<Dclaration de types>
<Dclaration de constantes et de variables>
<instructions>
FIN
12 sur 54
IV.
INSTRUCTION D'AFFECTATION
Le rle d'une affectation consiste placer une valeur dans une variable. La notation a l'allure suivante:
<Variable> valeur
Ou
<Variable> <expression>
Exemple:
A5
B A+2
Exercice1:
Donner, pour chaque instruction la valeur contenue dans chaque variable.
Instructions
Contenu de A
Contenu de B
Contenu de C
A1
B A+3
B5
C A+B
A2
C B-A
1 Cas des expressions numriques:
Une expression numrique peut contenir des constantes, des variables, des oprateurs numriques (+,
-, *, /, Div, mod, - unaire) et des parenthses. L'ordre de priorit de ces oprateurs est rsum dans le
tableau suivant:
Oprateurs
Ordre d'valuation
NON
- unaire
De droite gauche
* / Div Mod
De gauche droite
De gauche droite
Contenu de A
Contenu de B
Contenu de C
Contenu de X
A1
B2
C3
X A+B+C
X (A+B)*C
X A+B/C
X (A+B)/C
13 sur 54
Exercice 3
Soient 2 variables var1 et var2 dclares comme des entiers. Ecrire un algorithme pour placer dans
var1 la valeur 30 et dans var2 la valeur 45, puis changer les valeurs des 2 variables.
V. INSTRUCTIONS D'ENTREE/SORTIE
Pour communiquer avec un programme, nous serons amens utiliser un priphrique d'entre pour
transmettre des informations (donnes) et un priphrique de sortie pour afficher certaines
informations (rsultats).
1. INSTRUCTION D'ECRITURE
Elle est appele aussi instructions de sortie. L'instruction d'criture "crire" a pour rle d'afficher des
informations sous une forme comprhensible sur un priphrique de sortie. En gnral, le
priphrique de sortie utilis est l'cran.
Ecrire (var) a affiche sur l'cran le contenu de la variable var
Ecrire (100) a affiche sur l'cran 100
Ecrire ("Bonjour") a affiche sur l'cran le texte Bonjour var
Ecrire ("Bonjour", var) a affiche sur l'cran le texte Bonjour puis le contenu de la variable var
Exercice 1
Ecrire un algorithme Affich_Double qui met dans la variable entire val la valeur 4 et met dans la
variable double le double de val puis affiche val et double.
SOLUTION
ALGORITHME Affich_Double
DEBUT
val, double: entier
val 4
double val * 2
Ecrire (" Le double de: ", val, "est: ", double)
FIN
Exercice 2
Ecrire un algorithme qui met dans les variables entires X et Y les valeurs 3 et 15 et affiche leur
somme et leur produit.
SOLUTION
ALGORITHME SommeProduit
DEBUT
X, Y: entier
X3
Y 15
14 sur 54
2. INSTRUCTION DE LECTURE
Elle est appele aussi instruction d'entre. L'instruction de lecture "lire" a pour rle de permettre
l'utilisateur d'entrer des valeurs au programme partir de l'entre standard. En gnral, l'entre
standard est le clavier.
lire (var) a lire une valeur partir du clavier et la mettre dans la variable var
Exercice 1
Ecrire un algorithme qui lit une valeur entire et qui affiche son carr.
SOLUTION:
ALGORITHME carre
DEBUT
Val: entier
Ecrire ("donner une valeur entire:")
Lire (val)
Ecrire ("le carr de", val, "est: ",val * val)
FIN
Exercice 2
Ecrire un algorithme qui lit
-
le taux de la TVA
15 sur 54
I. INTRODUCTION
Les instructions d'affectation, d'entre et de sortie sont insuffisantes pour confronter des situations
traitant des conditions. On aura besoin alors de choisir entre 2 ou plusieurs traitements selon la
ralisation ou non d'une certaine condition d'o la notion de traitement conditionnel.
La partie Traitement est compose d'une ou de plusieurs instruction(s). Cette partie est excute si
expression_logique est vraie.
Exemple:
Ecrire un algorithme Verif_moyenne permettant de lire la moyenne d'un tudiant et d'afficher russite
si la moyenne est suprieure ou gale 10.
ALGORITHME Verif_moyenne
DEBUT
Moyenne: rel
Ecrire ("Saisir une moyenne:")
Lire (moyenne)
Si moyenne >= 10 alors
Ecrire ("russite")
Fin si
FIN
16 sur 54
III.
La partie Traitements_A est compose d'une ou de plusieurs instruction(s). Cette partie est excute si
expression_logique est vraie. Dans le cas contraire (expression_logique est fausse), c'est la partie
Traitements_B qui sera traite.
Exemple:
Ecrire un algorithme Verif_moyenne permettant de lire la moyenne d'un tudiant et d'afficher russite
si la moyenne est suprieure ou gale 10 et redoublement sinon.
ALGORITHME Verif_moyenne
DEBUT
Moyenne: rel
Ecrire ("Saisir une moyenne:")
Lire (moyenne)
Si moyenne >= 10 alors crire ("russite")
Sinon
crire ("redoublement")
Fin si
FIN
IV.
<expression_logique_2>
alors
<Traitements_B>
sinon si <expression_logique_3> alors
<Traitement_C>
sinon
..
Fin si
17 sur 54
La partie Traitements_A est compose d'une ou de plusieurs instruction(s). Cette partie est excute si
expression_logique_1 est vraie. Dans le cas contraire (expression_logique_1 est fausse), un test sera fait
pour expression_logique_2. Si elle est vraie alors la partie Traitements_B sera traite, sinon
(expression_logique_2 est fausse), un teste sera fait pour expression_logique_3. Si elle est vraie alors
la partie Traitements_C sera traite sinon on termine les test qui suivent et ainsi de suite.
Exemple:
Ecrire un algorithme Verif_moyenne permettant de lire la moyenne d'un tudiant et d'afficher:
-
ALGORITHME Verif_moyenne
DEBUT
Moyenne:rel
Ecrire ("Saisir une moyenne:")
Lire (moyenne)
Si (moyenne >=0) et (moyenne <10) alors
crire ("redoublement")
Sinon
Si (moyenne >=10) et (moyenne <12) alors
crire ("Mention passable")
sinon
si (moyenne >=12) et (moyenne <14) alors
crire ("Mention Assez bien")
sinon
si (moyenne >=14) et (moyenne <16) alors
crire ("Mention Bien")
sinon
si (moyenne >=16) et (moyenne<=20) alors
crire ("Mention Trs bien")
sinon
crire ("la moyenne doit tre entre 0 et 20")
Fin si
FIN
18 sur 54
Exercice 1
Donner les crans d'affichage si l'utilisateur entre les moyennes suivantes:
Moyenne
Ecran d'affichage
16.57
10.59
9.20
18
31
14.25
12.01
0
15.02
11.99
13.01
Exercice 2
En se basant sur le tableau suivant, crire un algorithme qui lit le montant d'une facture et affiche le
montant de la remise et le montant payer:
Montant facture
Taux remise
< 2000
1%
>= 5000
2%
19 sur 54
Si le jour est 8 ou 10 du mois alors il s'agit du premier niveau qui va s'inscrire, si le jour est le 11 du
mois alors, c'est le deuxime niveau, si le jour est 12, 13 ou 14 alors il s'agit du troisime et quatrime
niveau, si le jour est le 15 du mois alors il s'agit du cinquime niveau, si un autre alors pas
d'inscription.
SOLUTION:
ALGORITHME Inscription
DEBUT
Jour: entier
Ecrire ("Saisir un jour:")
Lire (jour)
Selon (jour)
8, 10: crire ("Inscription du niveau 1")
11 : crire ("Inscription du niveau 2")
12, 13, 14: crire ("Inscription du niveau 3 et 4")
15: crire ("Inscription du niveau 5")
Autre: crire ("pas d'inscription")
Fin selon
FIN
20 sur 54
Objectif du chapitre: connatre et manipuler les instructions itratives et savoir faire la comparaison
entre elles.
Plan du chapitre:
I. Introduction
II. Instruction Rpter
III. Instruction Pour
IV. Instruction Tant que
V. Comparaison des formes rptitives
I. INTRODUCTION
Les structures itratives sont utilises pour dcrire les rptitions d'une instruction ou d'une suite
d'instructions. Toute rptition d'instructions, appele aussi boucle d'instructions, doit tre finie et
celle-ci sera contrle l'aide d'une expression logique ou condition dont le changement de valeur
provoque l'arrt de la rptition ou la poursuite de l'excution de ces instructions.
On distingue 3 formes de boucles: boucle rpter, boucle pour et boucle tant que.
Exemple
Ecrire un algorithme permettant de lire une valeur entire strictement infrieure 100.
SOLUTION
ALGORITHME Lire_Valeur_Inf_100
DEBUT
Val: entier
Rpter
Ecrire ("Donner une valeur infrieure 100:")
Lire (val)
21 sur 54
22 sur 54
SOLUTION:
ALGORITHME Afficher_Bonjour
DEBUT
Inutile
i: entier
pour i de 1 50
pas=1 faire
crire ("Bonjour")
Fin pour
FIN
Remarque: L'instruction pour est conseille si on connat le nombre de rptition effectuer.
Exercice
Rcrire l'algorithme Somme avec la forme pour.
SOLUTION:
ALGORITHME Somme
DEBUT
i, s: entier
s0
pour i de 1 10 faire
ss+i
Fin pour
crire ("La somme est:", s)
FIN
Exemple:
Rcrire l'algorithme Afficher_Bonjour avec la version Tant que.
SOLUTION
ALGORITHME Afficher_Bonjour
DEBUT
i: entier
i1
Tant que i <= 50 faire
23 sur 54
Ecrire ("Bonjour")
ii+1
Fin Tant que
FIN
Remarque:
-
L'instruction Tant que est excute si est seulement si la condition d'entre est vraie
L'instruction Tant que ne peut pas excuter la partie <Traitements> si la condition d'entre est, ds
le dbut, fausse.
Exercice
Rcrire l'algorithme Somme avec la version Tant que.
SOLUTION
ALGORITHME Somme
DEBUT
i, s: entier
s0
i1
Tant que i <= 10 faire
ss+i
ii+1
Fin tant que
crire ("La somme est:", s)
FIN
Sinon si on veut excuter un traitement au moins une fois alors on utilise REPETER
24 sur 54
Vrai
Nombre de rptitions
connu
Faux
Vrai
Boucle POUR
Faux
Excution au moins 1 fois
Boucle REPETER
25 sur 54
Chapitre 5: SOUS-PRIOGRAMMES
I. INTRODUCTION
La conception d'un algorithme procde en gnral par des affinements successifs. On dcompose le
problme rsoudre en sous-problmes, puis ces derniers leur tour, jusqu' obtenir des problmes
faciles rsoudre. Pour chacun des sous-problmes, on crit un module appel sous-programme.
Ainsi, la rsolution du problme sera compose d'un algorithme principal et d'un certain nombre de
sous-problmes. L'algorithme principal a pour but d'organiser l'enchanement des sous-programmes.
L'intrt de l'analyse modulaire est:
-
Minimiser
rutilisation.
26 sur 54
2. SYNTAXE
La syntaxe de dfinition d'une fonction est:
FONCTION <Nom_Fonction> (<Paramtres_Avec_Types_Et_Genres>) :<Type_Valeur_Retour>
Dbut Fonction
<Dclaration des variables>
<Instructions>
Retourner <Resultat>
Fin Fonction
La syntaxe de dfinition d'une procdure est:
PROCEDURE <Nom_Procdure> (<Paramtres_Avec_Types_Et_Genres>)
Dbut procdure
<Dclaration des variables>
<Instructions>
Fin procdure
Un paramtre donn: il s'agit d'un paramtre qui contient une valeur avant l'excution du
sous-programme. En cours d'excution, la valeur ne change pas et reste inchange jusqu' la
fin de l'excution. On le symbolise par DON.
Un paramtre rsultat: il s'agit d'un paramtre qui ne contient pas de valeur avant l'excution
du sous-programme. En cours d'excution, une valeur est affecte ce paramtre afin d'tre
garde pour la fin d'excution. On le symbolise par RES.
Un paramtre donn/rsultat: il s'agit d'un paramtre qui contient une valeur avant
l'excution du sous-programme. Cette valeur change en cours d'excution. Le paramtre aura
une valeur la fin qui n'est pas gale celle de dbut d'excution. On le symbolise par
DONRES.
27 sur 54
Gnralement, c'est l'algorithme principal qui appelle ou invoque des sous-programmes. D'o, il est
baptis l'appelant et le sous-programme est nomm l'appel. Cependant, un sous-programme peut
appeler un autre sous-programme. Par la suite, le sous-programme qui appelle est l'appelant et celui
qui a subit l'appel est l'appel.
Lors de l'appel d'un sous-programme, deux formes de paramtres entrent en jeu : les paramtres
formels et les paramtres effectifs.
Les paramtres spcifis dans la dfinition de la fonction sont qualifis de paramtres formels, par
contre les paramtres qui seront transmis la fonction lors de l appel sont appels des paramtres
effectifs.
Remarque : Les paramtres formels et les paramtres effectifs doivent correspondre en nombre, en
type et en ordre. Les noms peuvent se diffrer.
V. APPLICATIONS
Exemple1
Ecrire une fonction qui permet de calculer le carr d'un entier a donn
Retourner C
Fin Fonction
Retourner a * a
Exemple2
Ecrire une fonction qui calcule la somme de deux entiers a et b
FONCTION Somme (DON a entier, DON b entier):entier
Dbut Fonction
s: entier
s a+b
Ou bien
Retourner s
Retourner a + b
Fin Fonction
Exemple3
Ecrire une procdure qui permet de lire 2 entiers a et b
28 sur 54
Ou bien
Lire(b)
Lire (a,b)
Fin Procdure
Exemple 4
Ecrire une procdure qui permute 2 variables entires a et b
PROCEDURE Permuter (DONRES a: entier, DONRES b: entier)
Dbut Procdure
Aux: entier
Auxf a
A fb
B f Aux
Fin Procdure
Exemple 5
Appelez les sous-programmes vues auparavant pour crire un algorithme TEST permettant de:
-
calculer la somme de x et y
ALGORITHME TEST
DEBUT
x, y, Som, CX, CY: entier
Lecture (x,y)
Som Somme(x, y)
29 sur 54
30 sur 54
Chapitre 6: TABLEAUX
I. INTRODUCTION
1 Dfinition:
Un tableau est une structure de donnes forme d'lments de mme type, que nous pouvons accder
grce un indice.
En effet, un tableau n'est qu'une succession de botes ou cases ou zones mmoires assurant le
rangement de plusieurs lments du mme domaine (mme type).
Exemple:
1
7
2
-7
1
A
3
2
2
B
4
3
3
B
5
4
6
5
7
6
31 sur 54
Les deux exemples ci-dessus sont des tableaux une seule dimension ou unidimensionnels. Un
tableau unidimensionnel est compos d'une seule ligne et de plusieurs colonnes. Le nombre de
colonne indique la taille ou la longueur du tableau.
2. ACCES A
32 sur 54
Fin Procdure
4. ALGORITHMES DE TRI
a. DEFINITION
On dsigne par tri, l'opration qui consiste ordonner une suite de valeurs suivant une relation
d'ordre (ordre croissant et dcroissant).
Il y a plusieurs faons ou techniques pour effectuer un tri. On va considrer 3 tris:
-
tri bulle
33 sur 54
tu Exemple
Soit le tableau suivant, trions-le par slection suivant un ordre croissant.
1
20
2
4
3
43
4
-1
5
5
6
2
7
0
8
10
9
5
10
12
11
14
12
9
13
8
14
-2
Etape 1
1
20
Ind
3
43
4
-1
5
5
6
2
7
0
8
10
9
5
10
12
11
14
12
9
13
8
14
-2
Min =
Etape 2
1
10
11
12
13
14
10
11
12
13
14
10
11
12
13
14
10
11
12
13
14
Ind =
Min =
Etape 3
1
Ind =
Min =
Etape 4
1
ind =
Min =
Etape 5
1
34 sur 54
ind =
Min =
Etape 6
1
10
11
12
13
14
10
11
12
13
14
10
11
12
13
14
10
11
12
13
14
10
11
12
13
14
10
11
12
13
14
10
11
12
13
14
ind =
Min =
Etape 7
1
ind =
Min =
Etape 8
1
Ind =
Min =
Etape 9
1
ind =
Min =
Etape 10
1
ind =
Min =
Etape 11
1
ind =
Min =
Etape 12
1
ind =
35 sur 54
Min =
Etape 13
1
10
11
12
13
14
ind =
Min =
tu Algorithme
ALGORITHME Tri_Selection
DEBUT
T: tableau [1..14] de entier
i, min,ind, temp: entier
Pour ind de 1 13 faire
min ind
pour i de ind + 1 14 faire
si T[i] < T[min] alors
min i
fin si
fin pour
temp T[ind]
T[ind] T[min]
T[min] temp
Fin pour
FIN
tu Exemple
Soit le tableau suivant, trions-le par insertion suivant un ordre croissant.
1
20
2
4
3
43
4
-1
5
5
6
2
7
0
8
10
9
5
10
12
11
14
12
9
13
8
14
-2
36 sur 54
Etape 1
1
2
4
20
3
43
4
-1
5
5
6
2
7
0
8
10
9
5
10
12
11
14
12
9
13
8
14
-2
Ind =
j
Etape 2
1
10
11
12
13
14
10
11
12
13
14
10
11
12
13
14
10
11
12
13
14
10
11
12
13
14
10
11
12
13
14
Ind =
j
Etape 3
1
Ind =
j
Etape 4
1
Ind =
j
Etape 5
1
Ind =
j
Etape 6
1
Ind =
j
Etape 7
1
Ind =
j
37 sur 54
Etape 8
1
10
11
12
13
14
10
11
12
13
14
10
11
12
13
14
10
11
12
13
14
10
11
12
13
14
10
11
12
13
14
Ind =
j
Etape 9
1
Ind =
j
Etape 10
1
Ind =
j
Etape 11
1
Ind =
j
Etape 12
1
Ind =
j
Etape 13
1
Ind =
j
tu Algorithme
ALGORITHME Tri_Insertion
DEBUT
T: tableau [1..14] de entier
temp, ind, j: entier
pour ind de 2 14 faire
38 sur 54
temp T[ind]
j ind 1
Tant que j > 0 et T[j] > temp faire
T[j + 1] T[j]
jj
d. TRI A BULLE
tu Principe de tri
Le principe du tri bulle consiste parcourir l'ensemble du tableau, depuis sa fin jusqu' son dbut,
en comparant deux lments conscutifs et en les inversant s'ils sont mal classs. On se retrouve ainsi
avec le plus petit lment plac en tte du tableau (cas de tri croissant et le plus grand en tte de
tableau s'il s'agit d'un tri dcroissant).
On renouvelle une telle opration (appele passe) avec les n
soit l'avant dernier lment ait t class (le dernier tant alors obligatoirement sa place)
soit qu'aucune permutation n'ait eu lieu pendant la dernire passe (ce qui prouve alors que
l'ensemble du tableau est convenablement ordonn)
tu Exemple
Soit le tableau suivant, trions-le par insertion suivant un ordre croissant.
1
20
2
4
3
43
-1
Etape 1
1
20
2
4
3
43
4
-1
5
5
i=
permute=
Etape 2
1
i=
permute=
39 sur 54
Etape 3
1
i=
permute=
Etape 4
1
i=
permute=
tu Algorithme
ALGORITHME Tri_Bulle
DEBUT
T: tableau [1..5] de entier
i, temp: entier
permute: boolen
rpter
permute faux
pour i de 5 2 faire
si T[i - 1] > T[i] alors
permute vrai
temp T[i 1]
T[i
1] T[i]
T[i] temp
Fin si
Fin pour
Fin pour
5. ALGORITHMES DE RECHERCHE
a. DEFINITION
La recherche d'une information est une opration frquemment rencontre dans les traitements des
suites de valeurs. Il y a deux types de recherche dans un tableau:
-
recherche squentielle
recherche dichotomique
40 sur 54
b. RECHERCHE SEQUENTIELLE
La recherche squentielle a t vue dans ce cours sur un tableau non tri. Dans ce qui suit, elle va se
faire sur un tableau tri. Ainsi le parcours du tableau est partiel, il ne sera total que s'i l'lment
recherch figure la fin du tableau.
Exercice
Soit un tableau T de 40 entiers et tri suivant un ordre croissant. Ecrire une fonction qui permet de
rechercher un entier x donn. La fonction renvoie vrai si l'lment existe et faux sinon.
SOLUTION
Fonction Recherche_Seq(T: tableau[1..40] de entier, x: entier): boolen
DEBUT FONCTION
i: entier
i1
Tant que T[i] < x et i <= 40 faire
ii+1
Fin tant que
Si T[i] > x ou i > 40 alors retourner faux
Sinon retourner vrai
Fin si
FIN FONCTION
c. RECHERCHE DICHOTOMIQUE
tu Principe de la recherche
Le principe de cette recherche consiste comparer la valeur recherche l'lment central de la suite,
si ce n'est pas la bonne, un test permet de trouver dans quelle moiti de la suite on trouvera la valeur.
On continue jusqu' ce que la suite soit de taille 1.
Exemple
Soit le tableau T suivant tri suivant un ordre dcroissant. Rechercher la valeur 26.
Etape 1
1
1
2
3
3
4
4
7
5
9
6
13
7
26
8
43
9
52
10
100
11
101
Binf = 1
Bsup = 11
Mil
= 1 + 11 / 2 = 6
41 sur 54
Etape 2
1
3
4
4
7
5
9
7
26
13
8
43
9
52
10
100
11
101
Binf = 7
Bsup = 11
Mil
= 7+11 / 2 = 9
2
3
3
4
4
7
5
9
6
13
7
26
8
43
9
52
10
100
11
101
Binf = 7
Bsup = 8
Mil = 7 + 8 / 2 = 7
Trouv
!!!!!!
26 = T[7]
tu Algorithme
ALGORITHME Recherche_Dich
DEBUT
T: tableau [1..11] de entier
x, binf,bsup, mil: entier
crire ("Donner la valeur rechercher:")
lire (x)
binf 1
bsup 11
rpter
mil (binf + bsup) / 2 // il s'agit d'une division entire
si T[mil] > x alors
bsup mil 1
sinon
binf mil + 1
fin si
jusqu' T[mil] = x ou bsup < binf
si bsup < binf alors
crire ("EXISTE")
fin si
FIN
42 sur 54
43 sur 54
Activit 2:
Ecrire une procdure permettant d'afficher tous les lments de la matrice dj dfinie dans l'activit1.
Activit 3:
Ecrire une fonction permettant de calculer la somme de tous les lments de la matrice dj dfinie
dans l'activit1.
44 sur 54
I. INTRODUCTION
Une chane de caractres est considre comme un tableau de caractres. Elle est dlimite par 2
guillemets. Une chane vide est reprsente par 2 guillemets accols.
La dclaration d'une chane de caractres se fait suivant la syntaxe suivante:
<Nom_Variable_Chaine>: chaine [longueur]
Ecriture de chanes
Lecture de chanes
Pour la lecture des chanes partir de l'entre standard, on utilise la fonction lire.
Exemple:
Ch:chaine (30)
Ecrire ("Donner une chaine de caractres:")
Lire (ch)
Ecrire ("La chaine lue est:", ch)
45 sur 54
Ecrire (ch)
Ce qui va tre affich sur cran est: Bonjour
` Il est signaler qu'il est interdit de remplacer Copier_Chaine (ch,"Bonjour") par ch "Bonjour"
c. RECHERCHE
0 si chaine1=chaine2
46 sur 54
Exemple:
S1, S2: chaine(30)
crire ("Saisir 2 chaines")
Lire (S1, S2)
Si (non Comparer_Chaine (S1, S2)) alors
Ecrire ("Les 2 chanes sont gales")
Sinon crire ("les 2 chanes ne sont pas gales")
Fin si
Estalpha
EstChiffre
Rle
Vrifie si le caractre fourni en
paramtre
est
un
caractre
alphanumrique (chiffre, lettre)
Vrifie si le caractre fourni en
paramtre
est
un
caractre
alphabtique (lettre)
Vrifie si le caractre fourni en
paramtre est un caractre numrique
(chiffre)
EstMin
EstMaj
EstEspace
VersMaj
VersMin
Valeur de retour
Estalnum (caractre) retourne:
- 0
si
le
caractre
n'est
pas
alphanumrique
- <> 0 sinon
Estalpha (caractre) retourne:
- 0 si le caractre n'est pas alphabtique
- <> 0 sinon
EstChiffre (caractre) retourne:
- 0 si le caractre n'est pas un chiffre
- <> 0 sinon
EstMin (caractre) retourne:
- 0 si le caractre n'est pas une lettre
minuscule
- <> 0 sinon
EstMaj (caractre) retourne:
- 0 si le caractre n'est pas une lettre
majuscule
- <> 0 sinon
EstEspace (caractre) retourne:
- 0 si le caractre n'est pas un espace
- <> 0 sinon
VersMaj (caractre) convertit caractre en
majuscule
VersMin (caractre) convertit caractre en
minuscule
III. APPLICATION
Ecrire un algorithme qui:
- lit une chane de caractre dont la longueur ne dpasse pas 50 caractres
- calcule et affiche le nombre de caractres alphanumriques, de lettres, de chiffres, de caractres
majuscules, de caractres minuscules et d'espaces.
47 sur 54
I. DEFINITION
Une structure ou encore un enregistrement ets class parmi les types avancs. Il contient un ou
plusieurs champs groups sous le mme nom pour tre traits comme une seule entit. Ces champs
sont htrognes dans la mesure o leurs types sont diffrents.
Les champs d'une structure sont appels membres et ils peuvent avoir l'un des types dj dfinis y
compris les tableaux et les structures.
Etudiant: structure
Date: structure
Jour: entier
Mois: entier
Annee: entier
Fin structure
Fin structure
48 sur 54
49 sur 54
La variable P
prod1
Le champ code
Chaise
15
Le champ Dsignation
Le champ Prix
III.
STRUCTURES COMPLEXES
Revenons l'exemple de la structure Etudiant et supposons que l'adresse n'est pas une chane de
caractres mais elle est une structure qui est dfinie comme suit:
Adr: structure
Rue: entier
Cite chaine (20)
Gouvernorat: chaine (50)
CodePostal: entier
Pays: chaine (50)
Fin structure
Supposons de mme qu'on recourt la structure Date dj dfini pour dfinir le champ DateNaiss. La
structure Etudiant serait alors dfinie comme suit:
Etudiant: structure
Nom: chaine (50)
Prenom: chaine (25)
Adresse: Adr
DateNaiss: Date
Fin structure
Exercice:
Ecrire un algorithme permettant de crer une variable de type Etudiant et de l'affecter les informations
suivantes: (Bensaleh, Karim, (5, rue abdellah ibn raweha, kairouan, 3199, Tunisie), (12,12,1977))
ALGORITHME Essai2
DEBUT
Adr: structure
Rue: entier
Cite chaine (20)
Gouvernorat: chaine (50)
CodePostal: entier
Pays: chaine (50)
50 sur 54
Fin structure
Date: strucure
Jour: entier
Mois: entier
Annee: entier
Fin structure
Etudiant: structure
Nom: chaine (50)
Prenom: chaine (25)
Adresse: Adr
DateNaiss: Date
Fin structure
E: Etudiant
Copier_Chaine (e.Nom, "Bensaleh")
Copier_Chaine (e.Prenom, "Karim")
e.adresse.Rue5
Copier_Chaine (e.adresse.Cite, " rue abdellah ibn raweha")
Copier_Chaine (e.adresse.Gouvernorat, " Kairouan")
e.adresse.CodePotal 3199
Copier_Chaine (e.adresse.Pays, " Tunisie")
e.DateNaiss.jour 12
e.DateNaiss.mois 12
e.DateNaisse.annee 1977
Fin
Dans la mmoire centrale, la variable e de structure Etudiant sera reprsente comme suit:
51 sur 54
La variable e
e.Nom
BenSaleh
e.Prenom
Karim
e.adresse.Rue
5
e.adresse.Cite
e.adresse.Gouvernorat
3199
e.adresse.CodePostal
Tunisie
e.adresse.Pays
12
e.DateNaiss.jour
12
e.DateNaiss.mois
1977
e.DateNaiss.annee
IV.
TABLEAUX DE STRUCTURES
Nom
Nom
Nom
Nom
Nom
Prenom
Prenom
Prenom
Prenom
Prenom
Adresse
Adresse
Adresse
Adresse
Adresse
Rue
Rue
Rue
Rue
Rue
Cite
Cite
Cite
Cite
Cite
Gouvernorat
Gouvernorat
Gouvernorat
Gouvernorat
Gouvernorat
CodePostal
CodePostal
CodePostal
CodePostal
CodePostal
Pays
Pays
Pays
Pays
Pays
DateNaiss
DateNaiss
DateNaiss
DateNaiss
DateNaiss
Jour
Jour
Jour
Jour
Jour
Mois
Mois
Mois
Mois
Mois
Annee
Annee
Annee
Annee
Annee
52 sur 54
z Accder aux diffrents champs de l'tudiant existant dans la case 2 du tableau ListeEtudiants
ListeEtudiants[1].Nom permet d'accder au nom de l'tudiant n 1;
ListeEtudiants[1].Prenom permet d'accder au prnom de l'tudiant n 1;
ListeEtudiants[1].Adresse.Rue permet d'accder la rue de l'adresse de l'tudiant n 1;
ListeEtudiants[1].Adresse.Cite permet d'accder la cit de l'adresse de l'tudiant n 1;
ListeEtudiants[1].Adresse.Gouvernorat permet d'accder la gouvernorat de l'adresse de
l'tudiant n 1;
ListeEtudiants[1].Adresse.CodePostal permet d'accder au code postal de l'adresse de l'tudiant
n 1;
ListeEtudiants[1].Adresse.Pays permet d'accder au pays de l'adresse de l'tudiant n 1;
ListeEtudiants[1].DateNaiss.Jour permet d'accder au jour de la date de naissance de l'tudiant n
1;
ListeEtudiants[1].DateNaiss.Mois permet d'accder au mois de la date de naissance de l'tudiant
n 1;
ListeEtudiants[1].DateNaiss.Annee permet d'accder l'anne de la date de naissance de
l'tudiant n 1.
V. APPLICATION
Soit un tableau de structure produit. Le nombre de produits maximum est 100. Un produit est dfini
par sa rfrence, son libell, sa couleur, son prix et sa quantit en stock.
Ecrire un algorithme qui permet de:
-
remplir le tableau avec n produits dont les caractristiques sont entres par l'utilisateur.
53 sur 54
BIBLIOGRAPHIE
1 Kyle LOUDON, traduction d'Eric JACOBONI, ALGORITHMES EN C, O'Reilly & Associates, Paris
2000,2001, 2002
ISBN: 2-84177-096-6
1 ClaudeDELANNOY, EXERCICES EN LANGAGE C, Eyrolles, Quatrime tirage 2000
ISBN: 2-212-08984-8
1 Peter AITKEN & Bradley L. JONES, LE LANGAGE C, Campus Press, France 2000
ISBN: 2-7440-0838-9
1 Claude DELANNOY, PROGRAMMER EN LANGAGE C, Eyrolles 1997
ISBN: 2-212-11072-3
1 Michael GRIFFITHS, ALGORITHMIQUE ET PROGRAMMATION, Hernes, 1992
ISBN: 2-86601-323-9
1 Jacques COURTIN & Irne KOWARSKI, INITIATION A L'ALGORITHMIQUE ET AUX
STRUCTURES DE DONNEES, Dunod, 1994
ISBN: 2-10-004039-1
1 Guy PIERRA, LES BASES DE LA PROGRAMMATION ET DU GENIE LOGICIEL, Dunod, 1991
ISBN: 2-04-020722-8
1 Claude DELANNOY, LANGAGE C, Eyrolles, 1999, 2002
ISBN: 2-212-11123-1
1 Pc Poche, LANGAGE C, Micro Application, 2000, 20001
ISBN: 2-7429-2008-0
54 sur 54