Vous êtes sur la page 1sur 54

MINISTERE

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:

OLFA HAMROUNI, TECHNOLOGUE

EN INFORMATIQUE

PUBLIC:
NIVEAU

VOLUME

TECHNICIEN SUPERIEUR EN

HORAIRE HEBDOMADAIRE:

4.5H

CI

INFORMATIQUE

Par: mme Olfa HAMROUNI JEMLI

ECHEANCIER DES SEANCES DE COURS


BUT

DU COURS:

Savoir analyser un problme et crire l'algorithme correspondant.

DATE
Semaine 1

COMPETENCES A ACQUERIR PAR L'ETUDIANT


- Dfinir un ordinateur
- Citer les tapes de rsolution d'un
problme
- Connatre
et
dfinir
la
notion
d'algorithmique
Semaine 2 - Dfinir et manipuler une variable et une
constante
- Savoir faire la diffrence entre une
variable et une constante
- Enumrer les types de base
Semaine 3 - Connatre la structure gnrale d'un
algorithme
- Manipuler l'instruction d'affectation et
les instructions d'entre/sortie
Semaine 4 - Connatre l'utilit des instructions
conditionnelles
- Acqurir les formes conditionnelles et
savoir distinguer entre elles
Semaine 5 - Connatre l'utilit des instructions
+
itratives
Semaine 6 - Acqurir les formes itratives et savoir
distinguer entre elles
Semaine 7 - Dfinir la programmation modulaire
+
- Connatre et manipuler les sousSemaine 8 programmes: procdures et fonctions
Semaine 9 - Manipuler les tableaux unidimensionnels
+
et bidimensionnels
Semaine 10 - Dfinir l'action de tri
- Comprendre et crire l'algorithme du tri
+
Semaine 11 par slection
- Comprendre et crire l'algorithme du tri
par insertion

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

Par: mme Olfa HAMROUNI JEMLI

- Comprendre et crire l'algorithme du tri


bulle
- Comprendre et crire l'algorithme de la
recherche squentielle
- Comprendre et crire l'algorithme de la
recherche dichotomique
Semaine 12 - Manipuler les chanes de caractres
Note de cours
+
Tableau
Semaine 13
Support de TD
Note de cours
Semaine 14 - Connatre l'utilit des structures
Tableau
- Dfinir des structures simples
+
Semaine 15 - Savoir dclarer une variable de type Support de TD
structure simple et accder ses
membres
- Dfinir des structures complexes
- Savoir dclarer une variable de type
structure complexe et accder ses
membres

3 sur 54

Par: mme Olfa HAMROUNI JEMLI

PLAN DU COURS

Chap1: Introduction gnrale


Chap2: Premiers lments de la programmation
I.

Notion de variable et les types de base

II.

Structure gnrale d'un algorithme

III. Instruction d'affectation


IV. Instructions d'entre et de sortie
Chap3: Instructions conditionnelles
Chap4: Instructions itratives ou rptitives
Chap5: Sous programmes
Chap6: Tableaux
Chap7: Chanes de caractres
Chap8: Type structure

4 sur 54

Par: mme Olfa HAMROUNI JEMLI

Chapitre 1: INTRODUCTION GENERALE


Objectif du chapitre: Prsenter la notion d'algorithme et d'algorithmique
Plan du chapitre:
I.

Dfinition d'un ordinateur

II.

Les tapes de rsolution d'un problme

III.

Dfinition d'un algorithme

IV.

De l'algorithme au programme

I. DEFINITION D'UN ORDINATEUR


Un ordinateur est un ensemble de circuits lectroniques qui traite l'information grce un programme
qu'il mmorise, communique et archive des informations.
Le traitement de l'information se fait automatiquement et vise rsoudre un problme bien dfini.
Les diffrentes fonctions correspondent, en fait, 3 constituants de l'ordinateur:
-

la mmoire centrale

l'unit centrale

les priphriques

La mmoire centrale contient les programmes

systmes ncessaires au bon fonctionnement de

l'ordinateur, et les programmes utilisateurs rpondant un besoin particulier et rsolvant un


problme rencontr par le dit utilisateur. Ces programmes auront besoin d'un ensemble de donnes
afin d'tre excuts et fournir les rsultats escompts, ces donnes existent galement dans la mmoire
centrale.
L'unit centrale va s'occuper de l'excution des programmes logs dans la mmoire centrale. Elle est
constitue de:
-

l'unit arithmtique et logique (UAL) qui s'occupe de toutes les oprations arithmtiques et

logiques (addition, soustraction, multiplication, division, comparaison, etc.)


-

l'unit de commande (UC) qui excute les programmes instructions par instructions en

collaborant avec l'UAL.


Les priphriques sont les units qui assurent la relation de l'ordinateur avec le monde extrieur. Ils
se rpartissent en 3 types:
-

les priphriques d'entre assurant l'entre des donnes partir de l'utilisateur (exemples: clavier,

souris, microphone, etc.)


-

les priphriques de sortie assurant la sortie des donnes vers l'utilisateur (exemples: imprimante,

cran, haut-parleurs, etc.)

5 sur 54

Par: mme Olfa HAMROUNI JEMLI

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

II. LES ETAPES DE RESOLUTION D'UN PROBLEME


Un programme log dans la mmoire centrale avec l'ensemble de ses donnes permet de fournir, en
s'excutant,

un rsultat rpondant un besoin bien dtermin. Ce besoin est exprim suite

l'existence d'un problme rsoudre. Ainsi, la rsolution d'un problme passe par 3 tapes:
-

la pr-analyse qui consiste identifier et comprendre le problme

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

Les mesures (taille, hanche, manche, tec.)

Le style de la robe (longue, courte, cintre, ample, avec col ou non, etc.)

Le tissu

La date d

Etc.

6 sur 54

Par: mme Olfa HAMROUNI JEMLI

L'laboration de l'algorithme: il s'agit de:


o

prparer le patron

couper le tissu suivant les mesures du patron

confectionner la robe avec la machine couture

III. DEFINITION D'UN ALGORITHME


Un algorithme est un ensemble d'tapes successives, finies et ordonnes et qui visent rsoudre un
problme bien dfini.
L'algorithmique est la logique d'crire des algorithmes.
Exemples:
-

Algorithme de dmarrage d'une auto

Algorithme de retrait d'argent auprs d'un guichet automatique

Algorithme de calcul de la surface d'un rectangle

Algorithme de calcul de la moyenne de 3 notes coefficient gal 1

IV. DE L'ALGORITHME AU PROGRAMME


Pour passer d'un algorithme un programme, on suit les tapes suivantes:

7 sur 54

Par: mme Olfa HAMROUNI JEMLI

Algorithme

EDITION

COMPILATION

OUI

Erreur syntaxique

NON

OUI

Erreur smantique

NON

EXECUTION

OUI

Erreur de logique

NON

Rsultat fourni

Code binaire gnr

EDITION : C est la phase de saisie d un programme crit en un langage de programmation.

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

Par: mme Olfa HAMROUNI JEMLI

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

EXECUTION : C est la phase d excution d un programme. Ce dernier est syntaxiquement et


smantiquement correct. Au niveau de cette phase, il y a une vrification de la logique des
rsultats fournis par le programme excut. En effet, il faut vrifier si ce que fournit le
programme correspond ce qui est escompt.

9 sur 54

Par: mme Olfa HAMROUNI JEMLI

Chapitre 2: PREMIERS ELEMENTS DE L'ALGORITHMIQUE

Objectif du chapitre: connatre les concepts de base de l'algorithmique


Plan du chapitre:
I. Notion de variable et de constante
II. Types de base
III. Structure gnrale d'un algorithme
IV. Instruction d'affectation
V. Instructions d'entre/sortie

I. NOTION DE VARIABLE ET DE CONSTANTE


1. NOTION DE VARIABLE
Un programme s'excute en manipulant des donnes se trouvant dans la mmoire centrale. Une
variable est donc un nom d'un emplacement de la mmoire centrale qui contient des donnes. Ces
donnes varient au cours de l'excution du programme. Chaque variable possde un type et est
range en mmoire une adresse prcise.
D'une manire gnrale, un nom d'une variable est form d'une ou plusieurs lettres, les chiffres sont
autoriss condition de ne pas apparatre au dbut du nom.
En effet, le nom d'une variable doit respecter les 4 rgles suivantes:
-

il ne doit pas contenir d'espaces

il ne doit pas contenir des caractres spciaux (sauf le tiret de soulignement (_))

il ne doit pas tre long

il ne doit pas commencer par un chiffre

Exemple:
: une variable dsignant le montant d'une facture

Montant

NumCarteEtud: une variable dsignant le numro de la carte d'un tudiant

Note2Math

: Une variable dsignant la 2me note de la matire mathmatique

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

PI est une constante.

10 sur 54

Par: mme Olfa HAMROUNI JEMLI

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

Taux est une constante

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.

II. TYPES DE BASE


Lors de l'utilisation d'une variable, nous devons spcifier si cette variable tait destine contenir des
valeurs telles que 123 ou 12.45 ou "bonjour". Donc, nous devons spcifier le type de la variable.
Un type impose des limites que a soit:
-

dans les valeurs que peut prendre cette variable

dans l'ensemble des oprations ralisables sur les variables de ce type.

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

4. TYPE CHAINE DE CARACTERES


Les chanes de caractres sont dlimites par des guillemets. Exemples: "ali","123","vrai".
Exemple:

11 sur 54

Par: mme Olfa HAMROUNI JEMLI

Nom: chane de caractre

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

Les oprateurs de comparaison

Les oprateurs logiques qui s'appliquent sur les variables de type boolen sont:
-

NON pour la ngation

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.

STRUCTURE GENERALE D'UN ALGORITHME

Un algorithme est compos d'une suite de dclaration de types, de variables, de constantes

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

Par: mme Olfa HAMROUNI JEMLI

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

Il est noter que les parenthses sont plus prioritaires.


Exercice 2
Remplir le tableau suivant:
Instructions

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

Par: mme Olfa HAMROUNI JEMLI

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

Par: mme Olfa HAMROUNI JEMLI

Ecrire (" la somme est:", X + Y)


Ecrire ("le produit est:", X * Y)
FIN

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 prix hors taxe d'un article

le nombre d'articles achets

le taux de la TVA

Et qui affiche le montant total toute taxe comprise.


SOLUTION:
ALGORITHME montant
DEBUT
PHT, TAUX: rel
NBRE: entier
Ecrire ("donner le prix hors taxe d'un article, le nombre d'articles achets et le taux de la TVA")
Lire (PHT)
Lire (NBRE)
Lire (TAUX)
Ecrire ("le montant total est:", (PHT*NBRE) * (1+TAUX))
FIN

15 sur 54

Par: mme Olfa HAMROUNI JEMLI

Chapitre 3: INSTRUCTIONS CONDITIONNELLES

Objectif du chapitre: connatre et manipuler les instructions conditionnelles


Plan du chapitre:
I. Introduction
II. Instruction conditionnelle un choix
III. Instruction conditionnelle deux choix
IV. Instruction conditionnelle imbrique
V. Instruction conditionnelle aux choix multiples

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.

II. INSTRUCTION CONDITIONNELLE A UN CHOIX


La forme gnrale de cette instruction est:
Si <expression_logique> alors
<Traitements>
Fin si

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

Par: mme Olfa HAMROUNI JEMLI

III.

INSTRUCTION CONDITIONNELLE A DEUX CHOIX

La forme gnrale de cette instruction est:


Si <expression_logique> alors
<Traitements_A>
Sinon
<Traitements_B>
Fin si

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.

INSTRUCTION CONDITIONNELLE IMBRIQUEE

La forme gnrale de cette instruction est:


Si <expression_logique_1> alors
<Traitements_A>
sinon
si

<expression_logique_2>

alors

<Traitements_B>
sinon si <expression_logique_3> alors
<Traitement_C>
sinon

..

Fin si

17 sur 54

Par: mme Olfa HAMROUNI JEMLI

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

Redoublement si la moyenne est entre 0 et 10

Mention passable si la moyenne est entre 10 et 12

Mention assez bien si la moyenne est entre 12 et 14

Mention bien si la moyenne est entre 14 et 16

Mention trs bien si la moyenne est entre 16 et 20

Un message indiquant d'entrer une moyenne entre 0 et 20

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

Par: mme Olfa HAMROUNI JEMLI

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

<= 2000 et > 5000

1%

>= 5000

2%

V. INSTRUCTION CONDITIONNELLE AUX CHOIX MULTIPLES


La forme gnrale de cette instruction est:
Selon (var)
Valeur 1: <Traitement_1>
Valeur 2: <Traitement_2>
Valeur n: <Traitement_n>
Autre: <Autre_Traitement>
Fin selon
Exercice
Ecrire un algorithme Inscription permettant de lire un jour et d'afficher le niveau s'inscrire pendant
ce jour.

19 sur 54

Par: mme Olfa HAMROUNI JEMLI

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

Par: mme Olfa HAMROUNI JEMLI

Chapitre 4: INSTRUCTIONS ITERATIVES OU REPETITIVES

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.

II. INSTRUCTION REPETER


La forme gnrale de cette instruction est:
Rpter
<Traitements>
jusqu' <Condition_D_Arrt>

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

Par: mme Olfa HAMROUNI JEMLI

Jusqu' val < 100


FIN
Remarque: l'instruction rpter est excute avant d'valuer la condition donc elle est excute au
moins une fois.
Exercice
Ecrire un algorithme Somme permettant de faire la somme des 10 premires valeurs entires partir
de la valeur 1.
SOLUTION
ALGORITHME Somme
DEBUT
i, s: entier
i1
s0
rpter
ss+i
ii+1
jusqu' i > 10
crire ("La somme est:", s)
FIN

III. INSTRUCTION POUR


La forme gnrale de cette instruction est:
Pour <var> de <vi> <vf> pas= <p>
Faire
<Traitements>
Fin pour
Remarque:
- La condition d'entre dpend de vf. Il s'agit d'une relation entre le compteur var et vf.
- Le passage la valeur suivante du compteur dpend du pas. Il s'agit d'une relation entre le
compteur var et le pas p.
- Si on n'attribue pas une valeur de p alors, par dfaut c'est la valeur 1.
Exemple
Ecrire un algorithme permettant d'afficher le texte Bonjour 50 fois.

22 sur 54

Par: mme Olfa HAMROUNI JEMLI

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

IV. INSTRUCTION TANT QUE


La forme gnrale de cette instruction est:
Tant que <Condition_Entre> faire
<Traitements>
Fin tant que

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

Par: mme Olfa HAMROUNI JEMLI

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

V. COMPARAISON DES FORMES REPETITIVES


Pour choisir lesquelles des formes utiliser, il est conseill de suivre la dmarche suivante:
-

Si on connat le nombre de rptitions alors il est prfrable d'utiliser POUR

Sinon si on veut excuter un traitement au moins une fois alors on utilise REPETER

Sinon, on utilise tant que

La figure suivante rsume la manire de choisir une forme rptitive:

24 sur 54

Par: mme Olfa HAMROUNI JEMLI

Vrai

Nombre de rptitions
connu

Faux

Vrai
Boucle POUR

Faux
Excution au moins 1 fois

Boucle REPETER

Boucle TANT QUE

25 sur 54

Par: mme Olfa HAMROUNI JEMLI

Chapitre 5: SOUS-PRIOGRAMMES

Objectif du chapitre: manipuler les procdures et les fonctions.


Plan du chapitre:
I. Introduction
II. Dfinition et syntaxe
III. Genres des paramtres
IV. Appel de sous-programmes
V. Applications

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

Rpartir les difficults entre les diffrents sous problmes

Faciliter la rsolution d'un problme complexe

Amliorer la qualit d'criture du programme principal

Minimiser

l'criture du code source dans la mesure o on utilise la technique de la

rutilisation.

II. DEFINITION ET SYNTAXE


1. DEFINITION
Un sous-programme est une unit fonctionnelle forme d'un bloc d'instructions et ventuellement
paramtr, que l'on dclare afin de pouvoir l'appeler par son nom en affectant des valeurs ses
paramtres (s'ils existent). Les donnes fournies au sous-programme et les rsultats produits par ce
dernier sont appels des arguments ou des paramtres.
Un sous-programme peut tre une procdure ou une fonction.

Une procdure est un sous-programme ayant un nombre de paramtres, contenant un certain

nombre d'instructions et admettant zro ou plusieurs rsultats.

Une fonction est un sous-programme ayant un nombre de paramtres, contenant un certain

nombre d'instructions et admettant au maximum un rsultat unique affect son nom.

26 sur 54

Par: mme Olfa HAMROUNI JEMLI

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

III. GENRES DES PARAMETRES


Il existe trois genres de paramtres:
-

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.

IV. APPEL DE SOUS-PROGRAMME


L'appel d'une fonction se fait comme suit:
<Var> <Nom_Fonction>(<Parametres_Effectifs>)
ou
crire(<Nom_Fonction>(<Parametres_Effectifs>))
L'appel d'une procdure se fait comme suit:
<Nom_Procedure>(<Parametres_Effectifs>)

27 sur 54

Par: mme Olfa HAMROUNI JEMLI

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

Type de la valeur de retour

FONCTION Carre (DON a: entier): entier


Dbut Fonction
C: entier
Ca*a

Paramtre de genre donne et son type


Nom de la fonction
Ou bien

Retourner C
Fin Fonction

Retourner a * a

Variable locale et son type


Renvoi du rsultat

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

Par: mme Olfa HAMROUNI JEMLI

PROCEDURE Lecture (RES a entier, RES b entier)


Dbut Procdure
Ecrire ("Donner deux entiers:")
Lire(a)

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

lire deux entiers x et y

calculer la somme de x et y

calculer le carr de x et le carr de y

ALGORITHME TEST
DEBUT
x, y, Som, CX, CY: entier
Lecture (x,y)
Som Somme(x, y)

Variables globales et leurs types


Appel de la procdure Lecture avec des paramtres effectifs x et y
Appel de la fonction Somme avec des paramtres effectifs x et y
Le rsultat calcul par la fonction Somme serait conserv dans la variable Som

Ecrire ("la somme des deux valeurs entres est:", Som)


CX Carre(x)

Appel de la fonction Carre avec un paramtre effectif x


Le rsultat calcul par la fonction Carre serait conserv dans la variable CX

Ecrire ("Le carr de x est:", CX)


CY Carre(y)

Appel de la fonction Carre avec un paramtre effectif y


Le rsultat calcul par la fonction Carre serait conserv dans la variable CY

29 sur 54

Par: mme Olfa HAMROUNI JEMLI

Ecrire ("Le carr de y est:", CY)


FIN
algorithme TEST a appel les fonctions Somme et Carre et la procdure Lecture, donc il est nomm
appelant. Par contre, les deux fonctions et la procdure ont subit l action de l invocation, donc elles
sont nommes, les appels.

30 sur 54

Par: mme Olfa HAMROUNI JEMLI

Chapitre 6: TABLEAUX

Objectif du chapitre: manipuler les tableaux.


Plan du chapitre:
I. Introduction
II. Tableaux une dimension
III. Tableaux deux dimensions

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

Tableau de 7 cases contenant des


entiers

Tableau de 5 cases contenant des


caractres
1 Caractristiques:
Un tableau est caractris par:
- un nom: un identificateur du tableau
- Le type de ses lments qui peut tre un entier, un rel, un caractre, une chane de caractres, un
autre tableau ou un type compos.
- L'indice qui est l'indicateur assurant le parcours des cases du tableau une une. L'indice peut tre
tout type dont les lments possdent un successeur (les types scalaires). En gnral, un indice est
de type entier.

II. TABLEAUX A UNE DIMENSION

31 sur 54

Par: mme Olfa HAMROUNI JEMLI

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.

1. DECLARATION D'UN TABLEAU


La syntaxe gnrale de dclaration d'un tableau unidimensionnel est la suivante:
<Nom_Tableau> tableau [<Borne_Inf>..<Borne_Sup>] de <Type_Element>

Remarque: <Borne_Inf> et <Borne_Sup> est un intervalle de valeurs scalaires. En gnral, il s'agit de


valeurs entires. Il est ajouter qu'un tableau n'a de sens que si la borne Borne_Inf soit infrieure ou
gale la borne Borne_Sup.
Exemples:
Notes: tableau [1..30] de rel
TabCar: tableau [1..26] de caractres
TabEntier: tableau [1..20] de entier

2. ACCES A

UN ELEMENT D'UN TABLEAU

La syntaxe gnrale pour accder un lment d'un tableau est:


<Nom_Tableau> [<Indice_De_L_Element>]
L'indice de l'lment est une valeur comprise entre Borne_Inf et Borne_Sup
Exemples
Accs au 20 me lment du tableau Notes: Notes [20]
Accs au 24 me lment du tableau TabCar: TabCar [24]
Accs au 5 me lment du tableau TabEntier: TabEntier [5]

3. OPERATIONS ELEMENTAIRES SUR UN TABLEAU


a. REMPLISSAGE D'UN TABLEAU
Activit 1:
Ecrire une procdure qui permet de remplir un tableau T de 10 valeurs entires.
SOLUTION
procdure Remplissage (RES T: tableau [1..10] de entier)
Dbut Procdure
K: entier
pour k de 1 10 faire
crire ("Donner la valeur de la case ", k)
lire (T[k])
Fin pour

32 sur 54

Par: mme Olfa HAMROUNI JEMLI

Fin Procdure

b. AFFICHAGE DES ELEMENTS D'UN TABLEAU


Activit 2 :
Soit le tableau T vu l'activit 1, crire une procdure qui affiche tous ses lments.
SOLUTION
procdure Affichage (DON T: tableau [1..10] de entier)
Dbut procdure
k: entier
pour k de 1 10 faire
crire("La ", k, " me case du tableau T est:", T[k])
Fin pour
Fin procdure

c. CALCUL DE LA SOMME DES ELEMENTS D'UN TABLEAU


Activit 3 :
Soit le tableau T vu l'activit 1 et 2, crire une fonction qui calcule la somme de se lments.
SOLUTION
Fonction somme (DON T: tableau [1..10] de entier): entier
Dbut Fonction
K: entier
S0
pour k de 1 10 faire
S S + T[k]
Fin pour
Retourner S
Fin Fonction

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

tri par insertion

tri bulle

33 sur 54

Par: mme Olfa HAMROUNI JEMLI

b. TRI PAR SELECTION


tu Principe de tri
Le principe de ce tri est dfini comme suit:
- On recherche le plus grand des n lments du tableau (dans le cas d'un tri dcroissant ou le plus
petit dans le cas d'un tri croissant)
- On change cet lment avec le premier lment du tableau
- Le plus grand lment se trouve alors en premire position. On peut appliquer alors les deux
oprations prcdentes aux n 1 lments restants, puis aux n 2 lments restants et ceci jusqu'
ce qu'il ne reste plus qu'un seul lment ( le dernier lequel est alors le plus petit).

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

Par: mme Olfa HAMROUNI JEMLI

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

Par: mme Olfa HAMROUNI JEMLI

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

c. TRI PAR INSERTION


tu Principe de tri
Le principe du tri par insertion consiste insrer un par un les lments en les plaant correctement:
on insre le second lment du tableau dans sa place au niveau du sous tableau constitu du premier
lment, on insre ensuite le troisime lment du tableau dans sa place au niveau du sous tableau
constitu du premier et deuxime lment et ainsi de suite jusqu'au dernier lment.

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

Par: mme Olfa HAMROUNI JEMLI

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

Par: mme Olfa HAMROUNI JEMLI

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

Par: mme Olfa HAMROUNI JEMLI

temp T[ind]
j ind 1
Tant que j > 0 et T[j] > temp faire
T[j + 1] T[j]
jj

Fin tant que


T[j + 1] temp
Fin pour
FIN

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

1lments restants, puis les n

lments restants et ainsi de suite jusqu' ce que:


-

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

Par: mme Olfa HAMROUNI JEMLI

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

jusqu' non (permute)


FIN

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

Par: mme Olfa HAMROUNI JEMLI

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

26 > T[6] donc 26 existera dans la partie du tableau allant de 7 11.

41 sur 54

Par: mme Olfa HAMROUNI JEMLI

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

26 > T[9] donc 26 existera dans la partie du tableau allant de 7 8.


Etape 3
1
1

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 PAS")

sinon si T[mil] = x alors

crire ("EXISTE")

fin si
FIN

42 sur 54

Par: mme Olfa HAMROUNI JEMLI

III. TABLEAUX A DEUX DIMENSIONS


1. DECLARATION D'UN TABLEAU BIDIMENSIONNEL
Un tableau bidimensionnel est appel aussi matrice. Elle est compose de lignes et de colonnes. La
syntaxe de dclaration d'une matrice est:
<Nom_Matrice>: tableau [<Bligne1>..<Bligne2>] [<Bcolonne1>..<Bcolonne2>] de <Type_Elements>

Remarque: <Bligne1>..<Bligne2> et <Bcolonne1>..<Bcolonne2> sont des intervalles de valeurs


scalaires. En gnral, il s'agit de valeurs entires. Il est ajouter qu'une matrice n'a de sens que si la
borne Bligne1 soit infrieure ou gale la borne Bligne2 et la borne Bcolonne1 soit infrieure ou gale
la borne Bcolonne2.
Exemples:
Matrice1: tableau [1..30] [1..20] de rel
MatriceCar: tableau [1..26] [1..5] de caractres
MatriceEnt: tableau [1..4] [1..5] de entier

2. ACCES A UN ELEMENT D'UNE MATRICE


La syntaxe gnrale pour accder un lment d'une matrice est:
<Nom_Matrice> [indice1] [indice2]
Avec:
indice1 est compris entre Bligne1 et Bligne2
indice2 est compris entre Bcolonne1 et Bcolonne2

3. OPERATIONS ELEMENTAIRES SUR UNE MATRICE


a. REMPLISSAGE D'UNE MATRICE
Activit 1:
Ecrire une procdure permettant de remplir une matrice M d'entiers 3 lignes et 2 colonnes.
SOLUTION
procdure Remplissage_Matrice (RES M: tableau [1..3][1..2] de entier)
Dbut Procdure
i, j: entier
pour i de 1 3 faire
pour j de 1 2 faire
crire("Donner la valeur de la", i, " me ligne et", j, " me colonne ")
lire (M[i][j])
Fin pour
Fin pour
Fin Procdure

43 sur 54

Par: mme Olfa HAMROUNI JEMLI

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

Par: mme Olfa HAMROUNI JEMLI

Chapitre 7: CHAINES DE CARACTERES

Objectif du chapitre: manipuler les chaines de caractres.


Plan du chapitre:
I. Introduction
II. Oprations lmentaires sur les chaines de caractres
III. Applications

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]

II. OPERATIONS ELEMENTAIRES SUR LES CHAINES DE CARACTERES


a. ENTREE ET SORTIE STANDARD DE CHAINES
-

Ecriture de chanes

Pour l'criture de chanes sur la sortie standard, on utilise la fonction crire.


-

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)

b. COPIE D'UNE CHAINE DE CARACTERES DANS UNE AUTRE


La fonction Copier_chaine copie le contenu d'une chane de caractres (chaine_source) vers une autre
chane (chaine_destination).
La sysntaxe est:
Copier_chaine (chaine_destination, chaine_source)
Exemple:
Ch: chaine (30)
Copier_Chaine (ch,"Bonjour")

45 sur 54

Par: mme Olfa HAMROUNI JEMLI

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

DE LA LONGUEUR D'UNE CHAINE

La fonction Longueur_chaine renvoie le nombre de caractres contenus dans une chane.


La syntaxe est:
Longueur_Chaine (chaine)
Exemple:
Ch: chaine (30)
L:entier
Copier_Chaine (ch,"Bonjour")
L Longueur_Chaine (ch)
Ecrire (L)
Ce qui va tre affich sur cran est: 7

d. AJOUT DU CONTENU D'UNE CHAINE A UNE AUTRE


Il peut tre ncessaire d'ajouter le contenu d'une chane de caractres celui d'une autre chane. Si, par
exemple, une chane contient un nom de fichier et une autre chane un nom de dossier, il est possible,
en les rassemblant, de donner le chemin d'accs au fichier. Ce mcanisme d'addition de chanes porte,
en algorithmique et programmation, le nom de concatnation de chanes de caractres. La fonction qui
assure ce mcanisme est: Concatner_Chaine. Sa syntaxe est:
Concatner_Chaine (chaine_Destination, chaine_source)
Le rsultat de la concatnation va se trouver au niveau de la chane destination.
Exemple:
Nom_Fichier: chaine (14)
Extension: chaine (5)
Copier_Chaine (Nom_Fichier,"Projet")
Copier_Chaine (extension,".doc")
Concatner_Chaine (Nom_Fichier, extension);
crire ("Le nom complet du fichier est: ", Nom_Fichier);
Ce qui va tre affich sur cran est: Projet.doc

e. COMPARAISON DE DEUX CHAINES DE CARACTERES


Pour tester l'galit de deux chanes, il y a la fonction Comparer_Chaine. Cette dernire dtermine en
plus, si une chane et plus grande qu'une autre, et ceci, par exemple, des fins de tri. Cette fonction
admet 2 paramtres chaine1 et chaine2.
Comparer_Chaine est une fonction qui retourne:
-

0 si chaine1=chaine2

46 sur 54

Par: mme Olfa HAMROUNI JEMLI

une valeur positive si chaine1 > chaine2

une valeur ngative si chaine1 < chaine2.

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

f. VERIFICATION DU TYPE DE CARACTERE


Il existe des fonctions qui permettent de vrifier le type d'un caractre (majuscule, minuscule, chiffre,
etc.). Le tableau ci-dessous rsume quelques fonctions:
Fonction
Estalnum

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

Vrifie si le caractre fourni en


paramtre est une lettre minuscule

EstMaj

Vrifie si le caractre fourni en


paramtre est une lettre majuscule

EstEspace

Vrifie si le caractre fourni en


paramtre est un espace

VersMaj
VersMin

Convertit un caractre, fourni en


paramtre, en majuscule
Convertit un caractre, fourni en
paramtre, en minuscule

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

Par: mme Olfa HAMROUNI JEMLI

Chapitre 8: TYPE STRUCTURE

Objectif du chapitre: manipuler le type structure


Plan du chapitre:
I. Dfinition
II. Structures simples
III. Structures complexes
IV. Tableaux de structures
V. Application

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.

II. STRUCTURES SIMPLES


1. DEFINITION
On dfinit le type structure comme suit:
<Nom_Structure>: structure
Membre 1: type
Membre n: type
Fin structure
Exemples:
z Dfinition de la structure Etudiant:

z Dfinition de la structure Date

Etudiant: structure

Date: structure

Nom: chaine (50)

Jour: entier

Prenom: chaine (25)

Mois: entier

Adresse: chaine (50)

Annee: entier

DateNaiss: chaine (10)

Fin structure

Fin structure

48 sur 54

Par: mme Olfa HAMROUNI JEMLI

z Dfinition de la structure produit


Produit: structure
Code: chaine (6)
Designation: chaine (50)
Prix: rel
Fin structure

2. DECLARATION D'UNE VARIABLE DE TYPE STRUCTURE SIMPLE


P: Produit permet de dclarer une varible P de type Produit.
E1, E2: Etudiant permet de dclarer 2 varables E1 et E2 de type Etudiant.

3. ACCES AUX MEMBRES D'UNE STRUCTURE SIMPLE


Pour faire rfrence un membre particulier, on spare le nom de la variable de type la structure
concerne de celui du membre vis, avec l'oprateur (.).
Exemples:
p.code permet d'accder au champ code du produit p,
p.prix permet d'accder au champ prix du produit p,
e1.nom permet d'accder au champ nom de l'tudiant e1,
e2.adresse permet d'accder au champ adresse de l'tudiant e2.
Exercice
Ecrire un algorithme permettant de crer une variable p de type la structure produit et de l'affecter les
informations suivantes: (prod1, chaise, 15).
SOLUTION
ALGORITHME Essai
DEBUT
Produit: structure
Code: chaine (6)
Designation: chaine (50)
Prix: rel
Fin structure
P: produit
Copier_Chaine (p.code, "prod1")
Copier_Chaine (p.designation, "chaise")
p.prix 15
FIN
Dans la mmoire centrale, la variable p de structure produit sera reprsente comme suit:

49 sur 54

Par: mme Olfa HAMROUNI JEMLI

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

Par: mme Olfa HAMROUNI JEMLI

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

Par: mme Olfa HAMROUNI JEMLI

La variable e

e.Nom
BenSaleh

e.Prenom

Karim
e.adresse.Rue
5
e.adresse.Cite

Rue abdellah ibn raweha


Kairouan

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

La syntaxe de dfinition d'un tableau de structures est la suivante:


<Nom_Tableau>: tableau [1..<Nombre_Elements>] de <Nom_structure>
Exemple
z Dfinir un tableau de 5 tudiants en se rfrant la structure Etudiant dj dfinie.
SOLUTION
ListeEtudiants: tableau [1..5] de Etudiant
La reprsentation, dans la mmoire centrale, de ce tableau est:
1

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

Par: mme Olfa HAMROUNI JEMLI

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

demander de l'utilisateur de lire un nombre n<=100

remplir le tableau avec n produits dont les caractristiques sont entres par l'utilisateur.

Calculer et afficher la quantit moyenne stocke

Calculer et afficher la rfrence du produit qui a le plus grand prix

53 sur 54

Par: mme Olfa HAMROUNI JEMLI

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

Vous aimerez peut-être aussi