Énoncé Écrire une marche à suivre qui permet d'insérer un entier A dans un tableau T à N éléments à la position P (N, T, P et A sont des données). I) Préanalyse : Données : ..............- Le nombre d'éléments de T (N=6); ..............- Un tableau T à N éléments de types entiers ;
| 17 | 33 | 50 | 10 | 12 | 15 | ? | ? | ? | ? | |
|---|---|---|---|---|---|---|---|---|---|---|
|
1
|
2
|
P= 3
|
4
|
5
|
N=6
|
7
|
8
|
9
|
NMAX=10
|
.............- La position d'insertion P (P=3); ..............- La valeur à insérer A (A=99).
Résultat :
| T | 17 | 33 | 50 | 10 | 12 | 15 | ? | ? | ? | |
|---|---|---|---|---|---|---|---|---|---|---|
|
1
|
2
|
P= 3
|
4
|
5
|
6
|
N=7
|
8
|
9
|
NMAX=10
|
Étape
1 : Décaler, d'une case à droite, les éléments de T à
partir de la position N à la position d'insertion P :
Pas 1:...............T[N+1]ß
T[N]. ............(T[7]ß
T[6])
| 17 | 33 | 50 | 10 | 12 | ? | ? | ? | |||
|---|---|---|---|---|---|---|---|---|---|---|
|
1
|
2
|
P= 3
|
4
|
5
|
N=6
|
7
|
8
|
9
|
NMAX=10
|
Pas 2: T[N] ß T[N-1] (T[6] ß T[5])
| T | 17 | 33 | 50 | 10 | 15 | ? | ? | ? | ||
|---|---|---|---|---|---|---|---|---|---|---|
|
1
|
2
|
P= 3
|
4
|
5
|
N=6
|
7
|
8
|
9
|
NMAX=10
|
Pas 3: T[N-1]ß T[N-2] (T[5]ß T[4])
| T | 17 | 33 | 50 | 12 | 15 | |||||
|---|---|---|---|---|---|---|---|---|---|---|
|
1
|
1
|
2
|
P= 3
|
4
|
5
|
N=6
|
7
|
8
|
9
|
NMAX=10
|
etc Jusqu'à T[P+1]ß T[P] (T[4]ß T[3])
| T | 17 | 33 | 10 | 12 | 15 | ? | ? | ? | ||
|---|---|---|---|---|---|---|---|---|---|---|
|
1
|
2
|
P= 3
|
4
|
5
|
N=6
|
7
|
8
|
9
|
NMAX=10
|
Étape 2 :
insérer la valeur de A dans T à la position P :
T[P]ß
A
(T[3]ß
99).........
| T | 17 | 33 | 50 | 10 | 12 | 15 | ? | ? | ? | |
|---|---|---|---|---|---|---|---|---|---|---|
|
1
|
2
|
P= 3
|
4
|
5
|
N=6
|
7
|
8
|
9
|
NMAX=10
|
Le nombre d'éléments devient ( N ß N+1) c'est à dire N=6+1................................................................................... .Les noms des modules (sous-programmes) Saisir (Lire) le nombre d'éléments de T .................................................... Proc Lecture(N) Remplir le tableau T par N éléments ........................................................ Proc Remplir(N,T) Lire la valeur à insérer A .......................................................................... Proc Saisie(A) Lire la position d'insertion de l'entier A ..................................................... Proc Position(P) Décaler à droite les valeurs du tableau T de position N à la position P....... Proc Decaler(P,N,T) Incrémenter une fois la valeur de N.......................................................... FN Incrementer(N) Insérer la valeur de A dans le tableau T à la position P.............................. Proc Inserer(P,A,,T) Afficher le tableau T après insertion.......................................................... Proc Affiche(N,T) II) Analyses & Algorithmes : 1) Analyse du programme principal
|
Nom : Inserer_element |
||
|
S.
|
LDE
|
O.U.
|
|
8 7 1 6 3 4 5 2 9 |
Résultats : Proc Affiche ( N , T) N ß FN Incrementer ( N ) Proc Lecture( N ) Proc Inserer ( P , A ,Td ) Proc Position ( N , P ) Proc Saisie ( A ) Proc Decaler ( P , N ,T ) Proc Remplir ( N , T ) Fin Inserer_element |
P Affiche, Saisie Decaler, Remplir Incrementer Lecture Inserer Position |
Tableau de déclaration des objets :
|
O.U.
|
Nature / Type
|
Rôle
|
|
P
|
variable / Entier
|
La position d'insertion |
|
A
|
variable / Entier
|
La valeur à insérer |
|
N
|
variable / Entier
|
Le nombre d'éléments dans T avant puis après insertion |
|
T
|
variable / Tab
|
Tableau des valeurs
à l'état initial, après le décalage des éléments puis après insertion |
|
Lecture
|
Procédure
|
Lecture de N |
|
Remplir
|
Procédure
|
Remplir le tableau T par des valeurs |
|
Position
|
Procédure
|
Lecture de la position d'insertion |
|
Saisie
|
Procédure
|
Lecture de la valeur à insérer |
|
Decaler
|
Procédure
|
Décaler les éléments
du tableau d'une case à droite à partir de la position p |
|
Incrementer
|
Fonction / Entier
|
Incrémenter une fois la valeur de N (N+1) |
|
Inserer
|
Procédure
|
Insérer la valeur de A à la position P |
|
Affiche
|
Procédure
|
Afficher les valeurs du tableau après insertion |
Nouveau Type Tab = Tableau de NMax entiers NMax est une constante égale à 10
Algorithme du programme principal :
| 0- 1- 2- 3- 4- 5- 6- 7- 8- 9- |
Début
Inserer_element Proc Lecture( N ) Proc Remplir ( N , T ) Proc Position ( N , P ) Proc Saisie ( A ) Proc Decaler ( P , N ,T ) Proc Inserer ( P , A ,T ) N ß FN Incrementer ( N ) Proc Affiche ( N , T ) Fin Inserer_element |
2) Analyse de la procédure Lecture
|
DEF PROC Lecture (Var N : Entier) |
||
|
S.
|
LDE
|
O.U.
|
|
1
2 |
Résultat
: Répéter Lire(N) Jusqu'à N dans [1 .. Nmax ] Fin Lecture |
|
Algorithme de la procédure Lecture
| 0- 1- 2- |
DEF PROC
Lecture
(Var N : Entier) Répeter
Lire( N )
Jusqu'à
N dans [1 .. Nmax]Fin Lecture |
3) Analyse de la procédure Remplir
|
DEF PROC Remplir ( N : Entier ; Var T : Tab ) |
||
|
S.
|
LDE
|
O.U.
|
|
1
2
|
Résultat
: Pour I de 1 à N Faire Lire(T[I]) Fin Pour Fin Remplir |
I
|
Tableau de déclaration des objets :
|
O.U.
|
Nature
/ Type
|
Rôle
|
|
I
|
Variable
/ Entier
|
Compteur |
Algorithme de la procédure Remplir :
| 0- 1-
|
DEF PROC
Remplir
( N : Entier ; Var T : Tab ) Pour I de 1 à N Faire
Lire( T[I]
)
Fin RemplirFin Pour |
4) Analyse de la procédure Position
|
DEF PROC Position ( N : Entier ; Var P : Entier ) |
||
|
S.
|
LDE
|
O.U.
|
|
1
2 |
Résultat
: Répeter Lire(P) Jusqu'à P dans [ 1 .. N ] Fin Position |
|
Algorithme de la procédure Position :
| 0- 1-
|
DEF PROC
Position
( N : Entier ; Var P : Entier ) Répeter
Lire( P )
Jusqu'à
P dans [1 .. N]Fin Position |
5) Analyse de la procédure Saisie
|
DEF PROC Saisie ( Var A : Entier ) |
||
|
S.
|
LDE
|
O.U.
|
|
1
2
|
Résultat
: Lire(A) Fin Saisie |
|
Algorithme de la procédure Saisie :
| 0- 1- 2- |
DEF PROC
Saisie
( Var A : Entier )
Lire( A)
Fin Saisie |
6) Analyse de la procédure Decaler :
|
DEF PROC Decaler ( P , N : Entier ; Var T : TAB ) |
||
|
S.
|
LDE
|
O.U.
|
|
1
2 |
Résultat
: Pour I de (N+1) à (P+1) Faire T[I] ß T[I-1] Fin Pour Fin Decaler |
|
Tableau de déclaration des objets :
|
O.U.
|
Nature /
Type
|
Rôle
|
|
I
|
Variable
/ Entier
|
Compteur |
Algorithme de la procédure Decaler :
| 0- 1-
|
DEF PROC
Decaler
( P , N : Entier ; Var T :
TAB ) Pour I de (N+1) à (P+1) Faire
T[I] ß
T[I-1]
Fin PourFin Decaler |
7) Analyse de la procédure Inserer :
|
DEF PROC Inserer ( P , A : Entier ; Var T : Tab) |
||
|
S.
|
LDE
|
O.U.
|
|
1
2
|
Résultat
: T[P]
ß
A Fin Position |
|
Algorithme de la procédure Inserer :
| 0- 1- 2- |
DEF PROC
Inserer
( P , A , N : Entier ;
Var T : Tab)
T[P] ß
A
Fin Inserer |
8) Analyse de la Fonction Incrementer :
|
DEF FN Incrementer ( N : Entier ) : Entier |
||
|
S.
|
LDE
|
O.U.
|
|
1
2
|
Résultat
: Incrementer ß
N + 1 Fin Incrementer |
|
Algorithme de la Fonction Incrementer :
| 0- 1- 2- |
DEF FN
Incrementer
( N : Entier ) : Entier
Incrementer
ß
N + 1
Fin Incrementer |
9) Analyse de la procédure Affiche :
|
DEF PROC Affiche ( N : Entier ; T : Tab ) |
||
|
S.
|
LDE
|
O.U.
|
|
1 |
Résultat
:Pour I de 1 à N Faire Ecrire ( T[I] ) Fin Pour Fin Affiche |
I |
Tableau de déclaration des objets :
|
O.U.
|
Nature
/ Type
|
Rôle
|
|
I
|
Variable
/ Entier
|
Compteur |
Algorithme de la procédure Affiche :
| 0- 1-
|
DEF PROC
Affiche
( N : Entier ;
T : Tab ) Pour I de 1 à N faire
Ecrire
( T[I]
)
Fin PourFin Affiche |
III) Traduction en Turbo Pascal :
Program Inserer_element ;
Const NMax = 10 ;
Type Tab = ARRAY [1..Nmax] Of Integer ;
Var T : Tab ;
N,P,A
: Integer ;
{----------------------------------------------------}
PROCEDURE Lecture ( Var N : Integer ) ;
Begin
Repeat
Write('N=');
Readln ( N ) ;
Until N in [ 1 .. Nmax ] ;
End ;
{----------------------------------------------------}
PROCEDURE Remplir ( N : Integer ; Var T : Tab ) ;
Var I : Integer ;
Begin
For
I : = 1 To N Do
Begin
Write('T[',I,']=');
Readln ( T[I]
) ;
End;
End ;
{----------------------------------------------------}
PROCEDURE Position ( N : Integer ; Var P : Integer ) ;
Begin
Repeat
Write('P=');
Readln ( P ) ;
Until N in [ 1 .. N] ;
End ;
{----------------------------------------------------}
PROCEDURE Saisie ( Var A : Integer ) ;
Begin
Write('A=');
Readln
( A ) ;
End ;
{----------------------------------------------------}
PROCEDURE Decaler ( P , N : Integer ; Var T : TAB ) ;
Var I : Integer ;
Begin
For
I : = (N+1) To (P+1) Do
T[I]
:
= T[I-1] ;
End;
{----------------------------------------------------}
PROCEDURE Inserer ( P , A : Integer ; Var T : Tab) ;
Begin
T[P] : = A;
End ;
{----------------------------------------------------}
FUNCTION Incrementer ( N : Integer ) : Integer ;
Begin
Incrementer :
= N + 1
;
End ;
{----------------------------------------------------}
PROCEDURE Affiche ( N : Integer ; T : Tab ) ;
Var I : Integer ;
Begin
For I : = 1 To N Do
Writeln ( 'T[',I,']=', T[I] ) ;
End;
{===================================}
Begin
Lecture( N );
Remplir ( N , T );
Position ( N , P );
Saisie ( A );
Decaler ( P , N , T );
Inserer ( P , A , T );
N := Incrementer ( N );
Affiche ( N , T );
End.
{===================================}
| Page d'index | Série Les tableaux | Haut |