Vous êtes sur la page 1sur 4

Departement´

STPI

Lundi 11 Avril 2011

I3 - Algorithmique

Duree´

: 1h30

Documents autorises´ : AUCUN (calculatrice comprise)

Remarques :

– Veuillez lire attentivement les questions avant de repondre.´

– Le bareme`

– Rendez une copie propre.

– N’utilisez pas de crayon a` papier.

donne´ est un bareme`

indicatif qui pourra evoluer´

lors de la correction.

1 Comprehension´

du cours (10 points)

La figure 1 presente´

l’analyse decendante (vue en cours) du probleme`

de transformation d’une chaˆıne de ca-

racteres` (representant´ peut-etreˆ un reel´ positif de la forme ”partie entiere”` ou ”partie entiere,partie`
racteres` (representant´
peut-etreˆ
un reel´
positif de la forme ”partie entiere”`
ou ”partie entiere,partie`
decimale”´
avec au moins un chiffre dans partie entiere`
et partie decimale´
) en reel.´
Réel
Chaine de caractères
chaineEnRéel
Booléen
Naturel
Chaine de Caractères
positionVirgule
Naturel
décalerVirguleVersGauche
Réel
Réel
Naturel
Chaine de caractères
chaineEnNaturel
Booléen
Chaine de caractères
positionCaractère
Naturel
Réel
Caractère
puissanceNaturel
Réel
Naturel
Naturel
Caractère
caractèreEnNaturel
Booléen

FIGURE 1 – Analyse descendante

tel que les (sous-)problemes`

:

positionVirgule permet d’obtenir la position du caractere`

virgule n’est pas presente´

;

virgule (’,’) dans une chaˆıne ch. Il retourne 0 si la

chaineEnNaturel permet d’essayer de transformer une chaˆıne ch representant´

decalerVirguleVersGauche´

positionCaractere`

un naturel en un naturel ;

permet de decaler´

la virgule d’un reel´

x de n rangs vers la gauche ;

permet d’obtenir la position d’un caractere`

c dans une chaˆıne ch. Il retourne 0 si le caractere`

n’est pas present´

;

caractereEnNaturel`

puissanceNaturel permet d’elever´

permet d’essayer de transformer un caractere`

un reel´

c en un naturel ;

x a` une puissance n naturel.

1.1 Conception preliminaire´

Donnez la signature des fonctions et procedures´ analyse descendante.

correspondant aux (sous-)problemes`

identifies´

par cette

1

1.2

Conception detaill´

ee´

On suppose que l’on possede`

fonction longueur (uneChaine : Chaine de caracteres) : Naturel

fonction iemeCaractere (uneChaine : Chaine de caracteres, position : Naturel) : Caractere

fonction sousChaine (uneChaine : Chaine de caracteres, debut,fin : Naturel) : Caractere

les fonctions suivantes :

1. Donnez le corps la procedure/fonction´ du (sous-)probleme` positionCaractere qui retourne la premiere` position d’un caractere` c s’il est present´ dans la chaˆıne ch (la position du premier caractere` de la chaˆıne ch vaut 1) et 0 sinon.

2. Donnez le corps de la procedure/fonction´

chaineEnR´eel qui permet de transfor-

du (sous-)probleme`

mer une chaˆıne ch en reel´

en sachant s’il y a eu ou pas une erreur.

2 Developpement´

limite´ (6 points)

Lorsque x est proche de 0, (1 + x) a peut etreˆ

approxime´ a` l’aide du developpement´

limite´ suivant :

1 +

n

i=1

i

j=1 (a j + 1) i!

x

i

Donnez le corps de la fonction suivante qui calcule une approximation de (1 + x) a jusqu’au rang n :

fonction unPlusXExpA (x,a : Reel, n : Naturel) : Reel

Votre algorithme devra respecter les deux conditions suivantes :

– sa complexite´ doit etreˆ

– vous utiliserez uniquement des variables locales et les parametres` cune autre fonction, pas d’analyse descendante).

en O(n) ;

formels donnes´ (vous n’utiliserez au-

3 Erreurs dans un programme Pascal (4 points)

Soit le programme pascal suivant :

1 program c h i f f r e m e n t C e
1
program
c h i f f r e m e n t C e s a r ;
2
3
f u n c ti o n
c a r a c t e r e A d m i s s i b l e ( u n C a r a c t e r e
:
Char )
:
Boolean ;
4
begin
5
c a r a c t e r e A d m i s s i b l e :=
( u n C a r a ct e r e >= ’A’
and
u n C a r a ct e r e <= ’Z ’ )
or
(
u n C a r a ct e r e
>=’ a ’
and
unCaractere
<=’ z ’ )
or
( u n Ca r ac t e r e = ’
’ )
6
end ;
7
8
f u n c ti o n
d e c a l a g e ( u n C a r a c t e r e
:
Char )
:
I n t e g e r
;
9
begin
10
i f
(
u n C a r a ct e r e >= ’A ’ )
and
( u n C a r a ct e r e <= ’Z ’ )
then
11
d e c a l a g e : = ( o r d ( u n C a r a c t e r e )−o r d ( ’A ’ ) )
12
e l s e
13
i f
( u n C a r a ct e r e >= ’ a ’
)
and
( u n C a r a ct e r e <= ’ z
’ )
then
14
d e c a l a g e : = 2 6 + (
o r d
(
u n C a r a c t e r e )−o r d
(
’ a
’ )
)
15
e l s e
16
d e c a l a g e := 5 2
17
end ;
18
19
f u n c ti o n
c h i f f r e r P h r a s e
(
u n e P h r a s e
:
S t r i n g ;
u neCle
:
Char )
:
C hai ne ;
20
var
21
r e s u l t a t
:
S t r i n g
;
22
l e D e c a l a g e
:
I n t e g e r ;
23
b e gin
24
r e s u l t a t : = ’ ’
;
25
l e D e c a l a g e : = d e c a l a g e
( u neCle ) ;
26
f o r
i : = 1
t o
l
e n g t h ( u n e P h r a s e
)
do
27
i f
c a r a c t e r e A d m i s s i b l e ( u n e P h r a s e [ i
] )
then
28
r e s u l t a t : = r e s u l t a t + c h i f f r e r C a r a c t e r e ( u n e P h r a s e [ i ] , l e D e c a l a g e
)
;

2

29 c h i f f r e r P h r a s e
29
c h i f f r e r P h r a s e : =
r e s u l t a t
30
end ;
31
32
f u n c ti o n
c h i f f r e r C a r a c t e r e ( u n C a r a c t e r e
:
Char
;
u nD e c al a g e
:
I n t e g e r )
:
Char ;
33
var
34
r e s u l t a t
:
Char ;
35
i
:
I n t e g e r
;
36
b e gin
37
r e s u
l
t
a
t : = u n C a r a c t e r e ;
38
f o r
i
:
=
1 .
t o
u nD e c al a g e
do
39
r e s u l t a t
o f
40
41
c a s e
’Z ’
:
r e s u l t a t : =
’ a
;
’ z
:
r e s u l t a t : =
;
42
:
r e s u l t a t : =
’A ’
43
e l s e
r e s u l t a t : = s u c c
;
( r e s u l t a t )
44
end ;
45
c h i f f r e r C a r a c t e r e : = r e s u l t a t
46
end ;
47
48
f u n c ti o n
finDeProgramme ( u n e P h r a s e
:
S t r i n g )
:
Boolean ;
49
b e gin
50
finDeProgramme : = (
u p c a s e
(
u n e P h r a s e
) = ’ FIN .
’ )
51
end ;
52
53
f u n c ti o n
o b t e n i r P h r a s e
( )
:
S t r i n g
;
54
var
55
r e s u l t a t
:
I n t e g e r ;
56
b e gin
57
w ri t e
( ’ Message
a
c h i f f r e r
:
’ )
;
58
r e a dl n
( r e s u l t a t )
;
59
o b t e n i r P h r a s e : =
r e s u l t a t
60
end ;
61
62
f u n c ti o n
o b t e n i r C l e
:
Char ;
63
var
64
r e s u l t a t
:
Char ;
65
b e gin
66
w ri t e
( ’ La
c l e
:
’ )
;
67
r e p e a t
68
r e a dl n
(
r e s u l t a t )
;
69
u n t i l
c a r a c t e r e A d m i s s i b l e
(
r e s u l t a t )
;
70
o b t e n i r C l e
: = r e s u l t a t
71
end ;
72
73
pr ocedure
m a c hi n e A C hi f f r e r
( )
;
74
var
75
l a C l e
:
Char ;
76
l a P h r a s e
:
S t r i n g
;
77
b e gin
78
l a C l e : = o b t e n i r C l e
( )
;
79
l a P h r a s e : =
o b t e n i r P h r a s e
( )
;
80
w hil e
n o t
finDeProgramme ( l a P h r a s e )
do
81
b e gin
82
w r i t e l n ( c h i f f r e r P h r a s e (
l a P h r a s e , l a C l e
) )
;
83
l a P h r a s e : = o b t e n i r P h r a s e
( )
;
84
end
85
end ;
86
87
b e gin
88
m a c hi n e AC hi f f r e r ( )
89
end ;
Sa compilation donne les informations suivantes :
1
$ fpc chiffrementCesar . pas
2
Free Pascal Compiler version 2.4.0 −2 [2010/03/06] for x86 64
3
Copyright ( c )
1993−2009 by
F l o r i a n
Klaempfl
4
T a r g e t OS: Li n u x f o r x86 −64

3

5

Compiling

chiffrementCesar . pas

 

6

chiffrementCesar . pas (5 ,44)

Error :

 

Operation

”and”

not

 

supported

for

types

”Char”

 

and

”Char”

7

chiffrementCesar . pas (5 ,87)

Error :

 

Operation

”and”

not

 

supported

for

types

”Char”

 

and

”Char”

8

chiffrementCesar . pas (19 ,68)

Error :

I d e n t i f i e r

not

found

 

9

chiffrementCesar

.

pas

(26

,9)

Error :

 

I d e n t i f i e r

not

found

” Chaine ” ” i ”

10

c h i f f r e m e n t C e s a r

.

p a s

( 2 7 , 4 1 )

E r r o r

:

I d e n t i f i e r

n ot

 

11

c h i f f r e m e n t C e s a r

.

p a s

( 2 8 , 3 9 )

E r r o r

:

I d e n t i f i e r

n ot

n ot

f o u n d f o u n d

” i ” ”

c h i f f r e r C a r a c t e r e

12

c h i f f r e m e n t C e s a r

.

p a s

( 2 8 , 5 1 )

E r r o r

:

I d e n t i f i e r

f o u n d

” i ”

13

c h i f f r e m e n t C e s a r

.

p a s

( 3 8

, 1 1 )

E r r o r

:

I n c o m p a t i b l e

t y p e s

:

g ot

S i n g l e ”

e x p e ct e d

 

SmallInt ”

14

c h i f f r e m e n t C e s a r ShortString ”

.

p a s

( 5 9

, 1 9 )

E r r o r

:

I n c o m p a t i b l e

t y p e s

:

g ot

S m a l l I n t

e x p e ct e d

15

c h i f f r e m e n t C e s a r

.

p a s

( 8 2 , 4 5 )

E r r o r

:

Can ’

t

r e a d

w r i t e

v a r i a b l e s

o f

t h i s

t y p e

 

16

c h i f f r e m e n t C e s a r

.

p a s

( 8 9 , 4 )

F a

t

a

l

:

S y nt a x

o r e r r o r ,

” . ”

e x p e ct e d

b ut

” ; ”

f o u n d

17

F a

t

a l :

C o m pil ati o n

a b o r t e d

 

18

$

Justifiez chacune des erreurs et proposez une correction.

4