Vous êtes sur la page 1sur 16

LYCEE PRIVE HANNIBAL PROFESSEUR: Mr Bayahi Raouf

DISCIPLINE : Informatique

Chapitre 6 LES STRUCTURES DE DONNEES


Activit 1 :
On se propose de calculer et afficher le primtre dun cercle de rayon donn R de type entier.
On vous demande dtablir la grille danalyse et le tableau de dclaration des objets.

Analyse
Grille danalyse
NOM :
S L.D.E O.U
. Rsultat =
.
. ..
. ..
. .
..
.
Fin
Tableau de dclaration des objets
Objet Nature / Type
. ..
. ..
. ..
I. Les objets
Un programme est une suite dinstructions permettant de manipuler des
objets. Un objet est une case mmoire dont sa gestion est prise en charge par
le programme qui lutilise.
Un objet peut tre :
Une constante
Une variable

I.1 Les constantes


Une constante est une zone mmoire dans laquelle est stocke une valeur.
Comme son nom lindique, cette valeur restera la mme pendant toutes les
priodes dexcution du programme. Une constante est caractrise par :

-1-
Son nom (unique, simple, parlant, efficace, sans accent ni caractres
spciaux).
Sa valeur.
Exemple : Pi = 3.14 {real} Y = false {boolean} T = 'm'
{char}
A = 147 {integer} C = 'salut' {string}
Tableau de dclaration des objets
Objet Nature / Type
Pi Constante = 3.14

En pascal, la dclaration dune constante se fait comme suit :


CONST nom_constante = valeur_constante ;

Exemple : CONST Pi = 3.14 ;


Remarque : la valeur prise par la constante nous informe sur le type de cette
constante.
I.2 Les variables
Comme son nom lindique, une variable est une zone mmoire qui peut
changer de valeur dune excution une autre.
Toute variable est caractrise par :
Son nom (unique, simple, parlant, efficace, sans accent ni caractres
spciaux).
Son type : qui dcrit son utilisation.
Son contenu : qui reprsente les diffrentes valeurs au cours de
lexcution.
Exemple :
Tableau de dclaration des objets
Objet Nature / Type
A Entier
R Rel
C Caractre
CH Chane de caractres
Remarque : lopration permettant de changer le contenu dune variable est
appele affectation quon la dsigne par le symbole.

Activit 2 :

-2-
Soit la squence daffectations suivante :
1) x 10
2) y 2
3) z x
4) x y
5) y z
Q1/ Donner le rsultat dexcution de cette squence en compltant le tableau
suivant :
Trace de la squence
N de x Y z
linstruction
1
2
3
4
5
Q2/ Quelles sont les valeurs finales de x et y ?
Rponse :
..
Q3/ Quel est le rle de cette squence ?
Rponse :
..
Q4/ Quel est le rle de la variable z ?
Rponse :
..

..

En pascal, la dclaration dune variable se fait comme suit :


VAR nom_variable : type_variable ;

Exemple : A : INTEGER ; R : REAL ; C : CHAR ; CH : STRING ;


II. Types des objets
II.1 Les types simples prdfinis
A /Le type entier (INTEGER)
Les valeurs de type entier forment un sous- ensemble de Z (entiers relatifs).
Signalons que les valeurs prises par les variables de ce type ne correspondent
pas lensemble infini que lon rencontre en mathmatiques. Des bornes
infrieures et suprieures, sont en fait fixes par le constructeur de la machine

-3-
et qui sont relies aux nombres doctets (1 octet = 8 bits) ou de bits utiliss
pour reprsenter ces entiers.
Si les entiers par exemple sont reprsents sur n bits, lensemble des
entiers positifs et ngatifs sera :
-2 n-1
entier 2 n-1
-1
Pour n= 16 (cas de la plupart des micro-ordinateurs), on a :
-2 16-1
entier 2 16-1
-1
-32768 entier +32767
Les types entiers prdfinis
Type Limites [MinEnt, Nombres de
En En pascal MaxEnt] bits
algorithme
Entier court SHORTINT [-128, +127] Sign 8
Octet BYTE [0, 255] Non sign 8
Entier INTEGER [-32768, +32767] Sign 16
Mot WORD [0, 65535] Non sign 16
Entier long LONGINT [-231, +231-1] Sign 32
Exemple de nombres entiers : -32520 0 29560 10 -50
6
Remarque : quand il y a dbordement au del des valeurs MinEnt et MaxEnt,
les calculs deviennent errons.
Exemple : soit x une variable de type entier
X 20500
X X + 15000 la valeur finale de X est 35500, dpasse lintervalle [-
32768, +32767]

Les oprateurs arithmtiques sur les entiers


Syntaxe Rle Exemple
Toutes les comparaisons -50 < 0, 150 > 30,
+ Addition de deux entiers 35 + 20 = 55
- Soustraction de deux
100-20 = 80
entiers
* Multiplication de deux
12 * 3 = 36
entiers
DIV 25 DIV 4 = 6 ; 30 DIV 6 =
Division entire
5
MOD Reste de la division 25 MOD 4 = 1 ; 30 MOD
entire 6=0
Dans (IN) Appartenance un
10 Dans [0, 10]
intervalle

En pascal, la dclaration dune variable entire se fait comme suit :


VAR nom_variable : INTEGER ;
-4-
Exemple :
VAR R, S, P : INTEGER ;
B /Le type rel (REAL)
Les valeurs de type rel forment un sousensemble de lensemble R .
Les types rels prdfinis
Nombre de
Occupation en
Type Valeurs autorises chiffres
mmoire
significatifs
SINGLE [1.5*10 , 3.4*10 ]
-45 38
7 chiffres 4 octets
REAL [-2.9*10 , 1.7*10 ]
-39 38
11 chiffres 6 octets
DOUBLE [5.0*10 -324
,1.7*10 ]
308
15 chiffres 8 octets
[3.4*10-4932, 1.1*1
EXTENDED 19 chiffres 10 octets
04932]
COMP [-9.2*1018, 9.2*1018] 20 chiffres 8 octets
Exemple : 0.0 2.0 -1.5 3.104 -14.5
Le nombre rel 3.104 (30000) peut scrira aussi 3E+4 ; 3 reprsente la
mantisse du nombre et +4 constitue lexposant qui doit tre entier. La lettre E
se lit dix puissance .

Les oprateurs arithmtiques sur les rels


Syntax Rle Exemple
e
Toutes les comparaisons 2.4 < 2.6, -1.5 > -3.7,
+ Addition 3.5 + 2.2 = 5.7
- Soustraction 10.9-2.1 = 8.8
* Multiplication 1.5 * 3 = 4.5
/ 25 / 4 = 6.25 ; 12.5 / 5 =
Division relle
2.5

En pascal, la dclaration dune variable relle se fait comme suit :


VAR nom_variable : REAL ;

Exemple :
VAR
X, Y : REAL ;

Les oprateurs arithmtiques et leurs priorits


Soit lopration suivante :
C : rsultat
C=A+B avecA et B : oprandes
+ : oprateur
Oprateur

-5-
Dsignation de Priorit En En Pascal Type des
lopration des algorithme oprandes
oprateurs
Parenthses 1 () () Tout type
Multiplication X * Entier ou rel
Division relle / / Rel
Division entire 2 DIV DIV Entier
Reste de la MOD MOD Entier
division entire
Addition + + Entier ou rel
Soustraction 3 - - Entier ou rel
Egale = = Tout type
ordonn
Diffrent <> Tout type
4 ordonn
Infrieur < < Tout type
ordonn
Suprieur > > Tout type
ordonn
Infrieur ou <= Tout type
gale ordonn
Suprieur ou >= Tout type
gale ordonn
Lappartenance 5 DANS IN Type scalaire

Remarque : les oprateurs de mme niveau de priorit seront valus de


gauche vers la droite (vous pouvez utiliser les parenthses pour modifier
lordre dvaluation des expressions). Exemple:
Evaluer les expressions suivantes :
1/ 120 + 12 * 5 3

Vous pouvez modifier cet ordre en ajoutant des parenthses. Lexpression
120+12*(5 3) sera value de la manire suivante :

..
2/ 6 + 2 * 5 DIV 3

..
3/ 6 + 4 * 7 2 * (8 MOD 3+5)

..

Les fonctions arithmtiques standard


Syntaxe en Syntax Rle de la Type de Type Exemples
algorithme e en fonction x de
Pascal rsult
at

-6-
Abs (x) ABS (x) Retourne la valeur Entier Mme R := ABS (-10) ; R= 10.
absolue de x. ou rel type R := ABS (-5.5) ; R= 5.5.
que x
Arrondi (x) ROUND Retourne lentier le Rel Entier R := ROUND (8.4) ; R=
(x) plus proche de x. 8.
R := ROUND (8.5) ; R=
9.
R := ROUND (8.7) ; R=
9.
Carr (x) SQR (x) Retourne le carr Entier Mme R := SQR (3) ; R= 9.
de x. ou rel type R:= SQR (3.5); R=
que x 12.25.
Cos (x) COS (x) Retourne le cosinus Rel Rel R:= COS (PI/2); R= 0.
de x (x en radians). R:= COS (PI); R= -1.
ent (x) int (x) Retourne la partie Rel Entier Int(2.5)=2
entire de x Int(-3.5)=-4
RacineCarr SQRT(x Retourne la racine Rel Rel R:= SQRT (4); R= 2.
(x) ) carre de x si x est R:= SQRT (40.5); R=
positif sinon il 6.36.
provoque une
erreur.
Sin (x) SIN (x) Retourne le sinus Rel Rel R:= SIN (PI/2); R= 1.
de x (x en radians) R:= SIN (PI); R= 0.
Tronc (x) TRUNC Retourne un entier, Rel Entier R:= TRUNC (-1.5); R=
(x) en ignorant la -1.
partie dcimale de R:= TRUNC (9.5); R= 9.
x.
Ala(x) Rando Retourne un rel entier rel
m(x) alatoire entre 0 et
n
Exemples:
1/ Soit x une variable qui a pour valeur lexpression suivante :
x carr (abs (-2))

Aprs avoir excut cette instruction, la valeur finale de x est gale .

2/ Soit y une variable qui a pour valeur lexpression suivante :

y Arrondi (RacineCarr (4+3*4) + tronc (-12-1.8/2))





Aprs avoir excut cette instruction, la valeur finale de y est gale .
C / Le type Boolen (BOOLEAN)
Appel aussi type logique (du nom du mathmaticien la Boole, qui en a
dveloppe une algbre).
La valeur dune variable boolenne peut prendre comme valeur soit VRAI
(TRUE) soit FAUX (FALSE).
Chaque variable boolenne est stocke en mmoire sur 1 octet.
-7-
Les oprateurs logiques sur les boolens
Syntaxe en Syntaxe en Rle Exemple
algo Pascal
Toutes les comparaisons avec FAUX < VRAI (FALSE < TRUE)
ET AND ET logique X Y X ET Y
(conjonction) Vrai Vrai .
Vrai Faux .
Faux Vrai .
Faux Faux .
OU OR OU logique X Y X OU Y
(disjonction) Vrai Vrai .
Vrai Faux .
Faux Vrai .
Faux Faux .
OUex XOR OU exclusif X XOR Y est vrai si X et Y
nont pas la mme valeur
logique.
NON NON NON logique X NON (X)
Vrai .
Faux .

Les oprateurs logiques et leurs priorits


Dsignation Priorit des Oprateur Type
de lopration oprateurs En En Pascal oprande
algorithme
Ngation 1 NON NOT Boolen
logique
Conjonction ET 2 ET AND Boolen
Disjonction OU 3 OU OR Boolen
OU exclusif OUex XOR Boolen
Exemples :
Evaluer les expressions logiques suivantes :
1/ (-2 <3) ET (5 < 0)
..
2/ NON (4 >-5) ET (10 > 8)
..
3/ (3*2+1 < 9) OU (6 MOD 2 > 9)
..

En pascal, la dclaration dune variable boolenne se fait comme suit :


VAR nom_variable : BOOLEAN;
Exemple :
VAR
Trouve, ok : BOOLEAN ;

-8-
D/ Le type caractre (CHAR)
Il est rserv aux variables contenant un et un seul caractre. Il sagira en
loccurrence des lettres (minuscules et majuscules), des chiffres, des signes de
ponctuation et des symboles spciaux.
Pour reprsenter un caractre en Pascal, on peut placer sa valeur entre 2
apostrophes (ex:'a','+', ...).
Il est possible de dterminer les successeur / prdcesseur / position dun
caractre dans la liste des codes ASCII (voir livre page 200). Ainsi le successeur
de "B" est "C", son prdcesseur "A" et son code ASCII 66.
Un caractre est stock sur un octet.
Lespace est un caractre blanc .
Les oprateurs sur les caractres
Syntaxe Rle Exemple
Toutes les comparaisons "A" < "B", "y" > "d",
DANS (IN) Appartenance un "C" DANS ["A","Z"]
intervalle

En pascal, la dclaration dune variable de type caractre se fait comme suit :


VAR nom_variable : CHAR;
Exemple :
VAR
CAR, C1, C2 : CHAR ;

Les fonctions prdfinies sur les caractres


Syntaxe Syntaxe Rle de la Type de x Type de Exemples
en en Pascal fonction rsultat
algorithm
e
CHR (N) CHR (N) Retourne le Entier Caractre R := CHR (65) ; R sera gale A.
caractre R := CHR (97) ; R sera gale a.
dont le code
ASCII est N.
ORD (C) ORD (C) Retourne le Caractre Entier R := ORD ('D') ; R sera gale 68.
code ASCII du R := ORD ('%') ; R sera gale
caractre C. 37.

-9-
PRED (C) PRED (C) Retourne le Scalaire Mme type N :=PRED (4) ; N sera gale 3.
prdcesseur de C R :=PRED ('D') ; R sera gale
de C (cest 'C'.
dire qui
prcde C).
SUCC (C) SUCC (C) Retourne le Scalaire Mme type N := SUCC (3) ; N sera gale 4.
successeur que x R:= SUCC ('C'); R sera gale 'D'.
de C (cest
dire qui suit
C).
MAJUS UPCASE Convertir le Caractre Caractre R:= UPCASE ('e'); R sera gale
(C) (C) caractre C 'E'.
en majuscule R:= UPCASE ('F'); R sera gale
sil est 'F'.
possible.
Remarque :
"x" : dsigne le caractre x.
x : dsigne une variable.
4 : dsigne lentier4.
"4": dsigne le caractre 4.
CHR (ORD (c) )= c
ORD (CHR (n) )= n
Exemple :
1/ Soit x une variable qui a pour valeur lexpression suivante :
x MAJUS (CHR (PRED(110)))

Aprs avoir excut cette instruction, la valeur finale de x est gale .
Remarques :
une variable de type scalaire est une information qui possde un
successeur et un prdcesseur.
Le type entier et caractre sont des types scalaires.
Les types scalaires bnficient de 2 fonctions Succ et Pred.
Exemple :
Succ (B) = C
Pred (5) = 4
II.2 Les types structurs
A /Le type chane de caractres (STRING)
Une variable de type chane de caractres peut contenir :
soit une suite de caractres (un mot, une phrase, ...),
soit un caractre (mais dont, par exemple, il est impossible de
dterminer le suivant),
soit aucun caractre (on parle alors de chane vide).
Cependant, Pascal permet aussi de prciser la taille maximale que pourra
avoir la chane qui sera affecte la variable. En l'absence de prcision de
longueur, Pascal rserve automatiquement la taille maximale 255 caractres.

- 10 -
Une chane de caractres est dlimite par deux guillemets en algorithme et
deux apostrophes en Pascal.

Exemple :
Tableau de dclaration des objets
Objet Nature / Type
Ident_chai Chane[longueu
ne r]

Nom Chane [20]


Adresse Chane de
caractres

En pascal, la dclaration dune variable de type chane de caractres e se fait


comme suit :
VAR nom_variable : STRING;
Exemple :
VAR
Nom : STRING[20] ;
Adresse : STRING ;

Accs aux lments dune chane de caractres


Pour accder en lecture et en criture au iime lment dune chane de
caractres, il suffit de donner le nom de la chane suivi de lindice i entre deux
crochets avec 1 i long (nom_chane).
Exemple :
Soit CH une variable de type chane de caractres.
CH "Enseignant"
Dans la RAM, la chane "Enseignant" est stocke de la manire suivante :

CH E n S e i g n a N t
1 2 3 4 5 6 7 8 9 10

CH[1] donne "E"


CH[2] donne "n"
CH[5] donne "i"
CH[11] "e" CH devient "Enseignante"
Les oprateurs sur les chanes de caractres
Syntax Rle Exemple
e
Toutes les comparaisons "Cours" < "cours",
+ Concatnation de deux ou "Cours" + " " + " exercices" = "Cours
plusieurs chanes exercices"

- 11 -
- 12 -
Les fonctions standard sur les chanes de caractres
Syntaxe en algo Syntaxe en Pascal Rle de la fonction Exemples
Long (ch) LENGTH (ch) Retourne un entier reprsentant la L := LENGTH ('Algorithme') ; L= .
longueur de la chane ch. L := LENGTH ('Pascal') ; L= .
Concat (ch1, ch2, CONCAT(ch1, ch2, Retourne une chane qui est la somme de CH := CONCAT ('micro-', 'ordinateur') ;
, chn) ,chn) plusieurs chanes dans lordre. CH=
''.
CH := CONCAT ('Turbo', ' ', 'Pascal') ;
CH= '.'.
Sous_chane COPY (ch,p,n) Retourne une sous chane de longueur N CH := COPY ('Baccalaurat',1,3) ;
(ch,p,n) partir de la position p dans ch. CH= ''.
CH := COPY ('micro-ordinateur',7,10) ;
CH= ''.
Pos (ch1,ch2) POS (ch1,ch2) Retourne un entier reprsentant la P := POS('m', 'programmation') ; P=
position de la premire occurrence de la ..
chane ch1. Si ch1 nest pas dans ch2, elle P := POS('r', 'programmation') ; P=
retourne 0. .
P := POS('R', 'programmation') ; P=

Les procdures standard sur les chanes de caractres
Syntaxe en algo Syntaxe en Pascal Rle de la fonction Exemples
Efface (ch,p,n) DELETE (ch,p,n) Enlve n caractres de la chane ch partir CH := 'programmation' ;
de la position p. DELETE ('programmation',8,6) ;
CH= '..'
Insre (ch1,ch2,p) INSERT (ch1,ch2,p) Insre la chane ch1 dans la chane ch2 CH1 := '-' ;
partir de la position p. Le caractre np et CH2 := 'Hautparleurs'
les suivants seront dcals vers la droite. INSERT (CH1,CH2,5) ;
CH2=
'..'
Convch (n,ch) STR (n,ch) Convertit une valeur numrique en une STR (2002, CH) ;
chane de caractres et laffecte la variable CH= '..'
ch. STR (15.54, CH) ;
CH= '1.5540000000E+01'
Valeur (ch,d,pe) VAL (ch,n, pe) Convertit une chane ch en une valeur VAL ('2003',n,pe) ; n= . et
numrique et laffecte la variable n. Le pe=.
paramtre pe est une variable entire qui VAL ('06/08/1970', n,pe) ; n= et
contiendra la position de lerreur. pe= ( le caractre / nest pas un
chiffre).

- 14 -
B /Les tableaux
Activit :
on veut calculer puis trier par ordre croissant les moyennes de 30 lves. Nous
utiliserons 30 variables diffrentes de type rel moy 1, moy 2, moy 3, moy
30. Nous remarquons que ce nombre de variables deviendra plus grand si nous
avons un nombre important dlves.
Quelle est donc la solution ?

Pour rsoudre ce problme, on propose de dclarer un tableau de 30 lments


pour stocker les moyennes au lieu d'utiliser 30 variables diffrentes.
Ces moyennes se distinguent avec des indices allant de 1 30
MOY 15.5 15.4 14.9 13. 12.9 9.7 9.4
7 3 8 5 0 8 8
1 2 3 4 5 29 30

15.57 correspond au 1r lment du tableau MOY


14.98 correspond au 3me lment du tableau MOY
9.48 correspond au 30me lment du tableau MOY

Dfinition
Un tableau est une structure de donnes permettant de ranger un nombre
fixe dlments de mme type. Chaque lment du tableau est dsign par un
indice qui doit tre forcment de type scalaire (entier, caractre).
Un tableau est caractris par :
Son nom (identificateur)
Le nombre de ses lments et
Le type de ses lments.

Tableau de dclaration des objets


Objet Nature / Type
Ident_tabl Tableau de
eau taille et de type
lment
MOY Tableau de 30
rels

En pascal, la dclaration dun tableau se fait comme suit :


VAR Ident_tableau : ARRAY [borne_inf..borne_sup] OF type_lment;

Exemple : la dclaration du tableau MOY est la suivante :


VAR

- 15 -
MOY : ARRAY [1..30] OF REAL ;

Accs aux lments dun tableau


Pour accder en lecture ou en criture au iime lment dun tableau, il suffit
de donner lidentificateur du tableau suivi de lindice i entre deux crochets
(avec borne_inf i borne_sup).
Exemple :
MOY[1] donne 15.57
MOY[3] donne 14.98
MOY [29] 9.80 MOY[29] devient 9.80

Remarques :

les types simples ne permettent pas de mmoriser plus d'une information


par variable, l'exception de type STRING. Pour stocker plusieurs donnes
de mme type dans une mme variable, il faut faire appel au type ARRAY.
On peut lire, crire et modifier un lment dun tableau.

Les oprations possibles sur un lment du tableau sont les mmes que
celles dfinies sur une variable de mme type.

Il est possible de dclarer le type dun tableau.

Exemple :
Tableau de dclaration de nouveaux types

Type
TAB = tableau de 30 rels

Classe = tableau de 30 chanes de


caractres
Tableau de dclaration des objets

Nature /
Objet
Type
MOY TAB
NOM Classe

- 16 -