Documente Academic
Documente Profesional
Documente Cultură
et Fonctions
Mme Saoussen Maloul
I- Les entres :
Cette opration permet de lire ou de saisir une valeur provenant du clavier ou un autre priphrique.
Analyse
Algorithme
Pascal
Syntaxe gnrale
Var= Donne
Lire (Var)
Readln(Var);Read(Var);
Exemple
X=Donne
Lire(X)
Readln(X); Read(X);
X, Y : Donne
Lire(X, Y)
Readln(X, Y); Read(X, Y);
Remarque : La lecture de plusieurs variables de type chane la fois est non fonctionnelle.
II-
Laffectation :
Cette opration consiste attribuer une valeur une variable. Cette valeur doit tre de mme type ou de type
compatible avec cette variable.
Analyse et Algorithme
Pascal
Syntaxe gnrale
Var
Valeur
Var := Valeur;
Exemple
Moy
(Dc+2*DS)/3
Moy:= (Dc+2*DS)/3;
IV-
Formatage de laffichage :
Par dfaut, lcran est divis en colonnes de 10 caractres de largeur. Laffichage des nombres se fait partir
de la droite.
- Le type Entier:
Write (valeur_entire : n)
gauche sil y a peu de chiffres.
Exemple: Write (123 :5)
- Le type Rel:
* Write (valeur_relle)
Exemple: Write (124.568)
* Write (valeur_relle : n)
Exemple: Write (124.568 :7)
* Write (valeur_relle : n : d)
Exemple: Write (124.568 :6 :2)
Write (124.568 :5 :2)
Write (124.568 :7 :2)
* Write (valeur_relle : 0 : d)
Exemple: Write (124.568 :0 :4)
-1-
LPS- 4 Maths 3
-Pag | 1
e
Remarques :
Remarques:
Remarques :
-1-
1. Les Procdures :
Les procdures sont des sous-programmes qui peuvent avoir 0 ou plusieurs
rsultats de type simple ou compose.
En Analyse :
En pascal :
Def Proc nom_proc(pf1,pf2 : type1 ; var
Procedure nom_proc( pf1, pf2 : type1 ; var
pf3 :type2 ;) Rsultat = le(s) resultat(s) de
pf3 : type2 ; ) ;
la procdure (Les paramtres prcds par
Const
var)
..;
Traitement
Type
_1
...; Var
.
..;
Traitement
Function
_n
;
Fin nom_procedure
Procedure
..;
En algorithme utiliser le mme
Begi
entte suivi par lensemble des
n
traitements
Remarque :
; End ;
Une procdure paramtre est un sous-programme qui utilise des
paramtres pour faire passer des informations entre la procdure
appele et le programme appelant.
Les difrents types de paramtres :
Les paramtres formels : figurent dans l'en-tte de la dclaration de la
procdure et sont utiliss dans les instructions de la procdure et l
seulement. Ils correspondent des variables locales.
Pag
e
Pag
e
Les fonctions :
Une fonction est un sous-programme qui renvoie une valeur dun seul type. Ce
type sera celui de la fonction.
Def FN nom_fonction (pf1,pf2,
:type1 ;
pf3:type2 ;) : type
rsultat Rsultat =
nom_fonction
nom_fonctionRs
.
.
. Fin
nom_fonction
Function
nom_fonction
(pf1,pf2,
:type1 ;
pf1,pf2, :type2 ;) : type rsultat ;
{Dclaration des objets locaux}
Begin
. ;
Nom_fonction :
=rs ; End ;
Remarques :
Pour les fonctions on utilise uniquement le mode de passage par valeur
A la fn de la partie instruction il faut afecter le rsultat au nom de la
fonction
Les instructions sont excutes la demande de lappelant par une instruction
dappel.
Une fonction peut tre appele dans une :
App
el
Action dAfectation
Action dafichage
Instruction
Conditionnelle
Expression
Arithmtique
Algorithme
V FN nom_F(P_eff)
Ecrire (FN nom_F(P_eff))
Si FN nom_F(P_eff) <0
alors
V
FN nom_F(P_eff)*2
Pasc
al
V := nom_F(P_ef)
;
writeln (nom_F(P_ef)) ;
if nom_F(P_ef) <0 then
V := nom_F(P_eff)*2 ;
Exercice 1 :
Pour chacun des cas suivants donner lalgorithme et le code Pascal dun
sous programme qui permet de :
1) Saisir un caractre alphabtique.
2) Saisir une chane de caractre non vide et de longueur maximale
gale 20.
3) Vrifier est-ce quune chane de caractre donne est alphabtique ou
non.
4) Remplir un tableau T par N lments tris dans lordre croissant.
5) Remplir un tableau T par N lments dune manire alatoire (0 N
100).
6) Aficher un tableau T de N lments.
7) Compter l'occurrence (nombre d'apparition) d'un caractre dans une
chane.
8) Vrifier la prsence d'un caractre dans une chane.
9) Dterminer le maximum dun tableau.
10) Inverser une chane de caractre.
NB : Pour chacun des exercices la solution doit comporter au moins deux modules.
Exercice 2 :
Soit la fonction Traitement suivante crite en Pascal :
FUNCTION Traitement (d,f :integer;T:tab): ..;
VAR
. ;
BEGIN
Indmin: =d;
For i: = d+1 to f do
IF T[i] <
T[indmin]
THEN Begin
Indmin:
= i; End;
Traitement: = indmin;
END;
1.
3.
6
Quel est le rle de cette fonction ?
Exercice 3 :
Soit l'Algorithme suivant :
0)
1)
2.
"i" "e"
7
8
Exercice 4 :
Soit la fonction boolenne VERIF
suivante : FUNCTION VERIF (Ch:
string): ..; Var
.;
.;
Begin
Test: =
False; Vc:
= 0;
Repeat
Vc: = Vc+1;
If Not (Upcase (Ch [Vc] )in ['A'..'Z']) Then
Begin
Test: = True;
En
d;
Until (Test) or (Vc = Length (Ch));
. ;
End;
1. Complter les pointills par les donnes manquantes.
2. Quel est le rle de cette fonction ?
Exercice 5 :
Soit lalgorithme de la fonction suivante :
0)
1)
(p<>0) faire
Eface (ch, p, 1)
...
...
Fin tant
que
2) Traitement ..
3) Fin Traitement
Cette fonction permet de calculer le nombre des mots dans
une phrase ch. On suppose que :
o La phrase ch ne commence pas par un espace
o La phrase ch ne se termine pas par un espace
o Entre deux mots de la phrase ch il y a un espace unique
a. Complter les points par le code convenable.
b. Transformer la fonction Traitement en une procdure Traitement.
Exercice 6 :
function inconnu (.........:..........;................):..................;
var
......................................;
......................................;
begi
tr:=(1=0) ; i:=0;
n
repeat
i:=i+1;
tr:=(ch[i]=c);
until (i=length(ch))
or (tr);
inconnu:=..........................
......; end;
1) complter les pointilles par les donnes marquantes.
2) dterminer le rsultat retourn par la fonction pour chacun des cas
suivants :
a. inconnu ('algorithme', 'g')
b. inconnu ( 'pascal' ,'H')
c. inconnu ( '1H5','5')
3) donner le rle de la fonction inconnu
4) convertir la fonction inconnue en une procdure
5) recopier et complter le tableau suivant sachant que lappel se
fait en utilisant une variable X:
Appel de la fonction
Appel de la procdure
inconnu
inconnu
.
.
.
Exercice 7 :
Ecrire un programme permettant dafficher tous les couples dentiers
(m,n) vrifiant la proprit suivante :
M [1,100] et n[2,15]
Et m figure dans lcriture du produit m.n
Exemples :
1- Si m = 20 et n= 6
Alors le produit m.n = 120 contient le nombre 20 dans ce cas le
couple (20,6) sera afich.
2- Si m = 20 et n = 12
Exercic
e8:
Sur les touches (2, 3, 4, 5, 6, 7, 8 et 9) du clavier dun tlphone
portable, sont inscrites des lettres pour crire des messages en plus des
chiffres.
Par exemple, sur la touche 5 sont inscrites les
lettre J, K et L. Pour taper la lettre J on appuie
une seule fois.
Pour taper la lettre K on tape
deux fois.
Pour taper la lettre L on appuie
trois fois.
Ecrire un programme pascal permettant de dterminer et dafficher le
nombre total dappuies sur les touches du clavier dun tlphone portable
pour saisir un mot donn de N lettres, supposes non accentues.
(4<=N<=9).
Indicatio
n:
La figure suivante donne la rpartition des lettres sur les touches du
clavier dun tlphone portable.
1
2
3
AB
DE
C
F
4
5
6
GHI
JKL
MNO
7
8
9
PQR
TUV
WXY
S
Z
*
0
#
+
Exercice 9 :
Soit l'algorithme suivant :
0)
1)
1.
Excuter cet algorithme pour p=6 puis
donner son rle.
2. Transformer la fonction Somme en une
procdure.
3.
Ecrire un algorithme d'une procdure Saisie, permettant de saisir
deux entiers positifs non nuls.
4.
En utilisant les deux modules Somme et saisie, crire un
algorithme d'un programme intitul Amis, qui permet de saisir deux
entiers positifs non nuls et d'aficher s'ils sont amis ou non. Sachant que
deux entiers m et n sont dis amis, si la somme des diviseurs de n est
gal m et inversement.
Exercice 10 :
T tant un tableau de dimension N_MAX (N_MAX = 100), remplir par N
entiers (N N_MAX).
On vous demande dcrire un programme nomm ECLATEMENT qui
permet de:
Lire un entier N strictement positif (0 < N N_MAX).
Remplir le tableau T.
clater T en deux tableaux TN (contenant J lment
ngatifs de T) et TP
(contenant K lment positifs de T).
Aficher les deux tableaux TN et TP.
Exercice
11 :
Un nombre est dit parfait sil est gal la somme de ces diviseurs
(sauf lui mme). Exemple : 6=3+2+1.
Ecrire une analyse et un algorithme du programme intitul parfait qui
permet de saisir un
entier strictement positif puis il vrifie sil
est parfait.
Exercice
12 :
La multiplication Russe est une mthode particulire permettant
la multiplication de deux entiers A et B en utilisant seulement la
multiplication par 2, la division par 2 et laddition.
Exemple : pour A =17 et B = 19, le produit de A par B se
fait comme suit :
A
B
17
19
Le premier nombre est divis par 2 (division entire) et le deuxime est
multipli par 2 : on aura
8
38
Le processus se rpte jusqu avoir dans la
premire colonne 1 :
17
19
8
38
4
76
2
152
1
304
Le rsultat est la somme des nombres de la deuxime colonne qui sont en
face des nombres impairs de la premire colonne (donc les nombres de la
deuxime colonne qui sont en face des nombres pairs de la premire
colonne seront ignors).
17
8
4
2
1
19
38
76
152
304
Ignor
Ignor
Ignor
17 * 19 = 19 + 304
= 323
On veut crire un programme qui lit deux entiers positifs non nuls
et infrieur 100, calcule et affiche le produit de deux entiers par la
mthode Russe.
u T par N chanes des caractres tel que la taille de
chacune est dans [3..20].
Exercic
Chercher et afficher tous les chanes Totalogramme
e 13 :
contenue dans T.
Soit le
programm
Une chane de caractres est dite Totalogramme si elle
e intitul
commence et se termine par la mme lettre. (Sans
info qui
permet de
distinction entre majuscule et minuscule)
:
Exemple : Pour N=6 :
Bonjour
se s
elle
Saisir Samir syTstme
t
e
m
p
o
ra
i
re
m
en
1
2
3
la taille
N dun
4
5
6
tableau
Les mots totalogramme sont : temporairement, ses, elle
T, avec
(1<N<
Exercice 14 :
15).
Exercice 15 :
Ecrire un programme qui permet de dire si deux chanes
ch1 et ch2 (non vides) sont anagrammes ou non.
De
ux
ch
an
es
so
nt
dit
es
an
anagrammes.
E
x
e
r
c
i
c
e
1
6
agr
am
me
s si
ell
es
so
nt
for
m
es
par
les
m
me
s
car
act
re
s.
Ex
em
ple
:
Chien
et Chine
sont
Tf
Une
Utilit des sous-programmes :
variable
Faciliter la tache de rsolution.
globale
viter la rptition d'un mme traitement dans un
est
programme.
dclare
dans la
Rutiliser des sous-programmes dj dfnis.
partie
Faciliter la localisation des erreurs ainsi que leurs corrections.
dclarati
on
du
program
1. Les Procdures :
me
Les procdures sont des sous-programmes qui peuvent avoir 0 ou
principal
plusieurs rsultats de type simple ou compose.
et
est
utilisable
En Analyse :
En pascal :
par
le
program
Def Proc nom_proc(pf1,pf2 : type1 ; var
Procedure nom_proc( pf1, pf2 : ty
me
:type2 ;)
pf3 : type2 ; ) ;
principal
et
les
Rsultat
= le(s) resultat(s) de la procdure (Les
Const ..;
difrent
paramtres prcds par var)
s
Type ...;
modules
Traitement_1
(sousVar ..;
program
.
mes).
Function ;
Un sousTraitement_n
program
Procedure ..;
me Fin
estnom_procedure
Begin
appel
aussi En algorithme utiliser le mme entte
;
une suivi par lensemble des traitements
Procd
End ;
ure ? ou
une
Remarque :
Fonctio
n?
Une procdure paramtre est un sous-programme qui utilise
Remarque
des paramtres pour faire passer des informations entre la
: En Turbo
procdure appele et le programme appelant.
Pascal,
la
dclaration
Les difrents types de paramtres :
d'un
sousprogramme
Les paramtres formels : fgurent dans l'en-tte de la dclaration
fgure aprs
de la procdure et sont utiliss dans les instructions de la procdure
la
et l seulement. Ils correspondent des variables locales.
dclaration
Les paramtres effectifs : fgurent dans l'instruction d'appel de la
des
procdure et sont substitus aux paramtres formels au moment de
variables
l'appel de la procdure.
globales du
Procedur Permut
programme
e Permut (T[i],T[j]
principal.
(var
);
x,y :inte
ger ) ;
Les
para
mtr
es
effect
ifs et
les
para
mtr
es
form
els
doive
nt
s'acc
order
du
point
de
vue
nomb
re,
ordre
et
type.
En
analyse :
P_ef3 =
Proc
Nom_de_la_
procdure
(P_ef1,P_ef
2,P_ef3)
In
di
q
u
e
r
la
o
u
Les fonctions :
Une fonction est un sous-programme qui renvoie une valeur dun seul
type. Ce type sera celui de la fonction.
..
P
o
u
r
le
s
f
Appel
Algorithme
. Action
dAfectatio
n
Fin
nom_fonction
Remarques
:
V
FN V :=
nom_F(P_ef) nom_F(P_ef)
;
Action
daffichage
Ecrire
(FN writeln
nom_F(P_ef) (nom_F(P_ef)
)
);
Instruction
Conditionn
elle
Si
FN if
nom_F(P_ef) nom_F(P_ef)
<0 alors
<0 then
Expression
V
FN V :=
Arithmtiqu nom_F(P_ef) nom_F(P_ef)*
e
2;
*2
Exercice 1 :
Pour chacun des cas suivants donner lalgorithme et le code Pascal dun
sous programme qui permet de :
2) Saisir une
vrai
chane de
caractre
non vide
et de
longueur
maximale
gale
20.
Sinon
Test
faux
FinSi
i i+1
0) Def Proc
Jusqu'
saisie (var
i>long(ch)
ch :
ou
chaine)
test=faux
1) Rpter
Ecrire
2) Verif
(Donner
test
une
3) Fin Verif
chaine 4) Remplir un tableau T par N entiers tris dans lordre croissant.
non vide
0) Def Proc
de
tritab(var
longueur
t : tab, n :
max 20)
Lire(ch)
1)
Jusqu'
long(ch)
dans
[1..20]
2) Fin saisie
3) Vrifer
est-ce
quune
chane de
caractre
donne
est
alphabtiq
ue ou non.
2)
3)
entier)
Ecrire
(Donner
lment 1
du
tableau)
Lire(t[1])
Pour i de 2
a n faire
Rpter
Ecrire
(Donner
T[,i,]
suprieur
, t[i-1])
Lire(t[i])
Jusqu'
(t[i]>t[i-1])
FinPour
Fin TriTab
0) Def FN
Verif (ch
chaine)
boolen 4)
1) Rpter
Si
majus(ch[i
]) dans 5) Remplir un tableau T par N entiers positif dune manire
alatoire (0 < N 100).
[A..Z]
Alors
5) Def Proc
Test
Aleatoire(var
t : tab, var
Occ(c :
n : entier)
caractre,
6) Repeter
ch :chaine) :
Ecrire
entier
(Donner
1) n 0
0<n100) 2) Pour i de 1
Lire (n)
n faire
Jusqu' n
Si ch[i]=c
dans [1..100] alors
7) Pour i de 1
n n+1
n faire
Fin Pour
T[i]alea(253) Occ n
5)
4) Fin Occ
FinPour
8)Vrifer la prsence d'un caractre dans une chane.
8) Fin Aleatoire 0) Def FN
6)Afficher
Present
un tableau
(c :
T de N
caractr
lments.
e, ch :
0) Def
Proc
Affich
e (t :
tab,
n :enti
er)
1) Pour i
de 1 a
n faire
Ecrire
(t[i],
| )
Fin
Pour
2) Fin
Affich
e
7)Compter
l'occurrenc
e (nombre
d'apparitio
n) d'un
caractre
dans une
chane.
0) Def FN
1)
2)
3)
4)
chaine) :
boolen
Test
faux
i1
Repeter
Si
(ch[i]=c)
alors
Test
vrai
FinSi
i i+1
jusqu'
i>long(c
h) ou
test=vrai
present
test
Fin
Present
0) Def FN
max (t :
tab) :
entier
1) Mt[1]
2) Pour i
de 2 n
faire
Si
t[i]>m
alors
M
t[i]
FinSi
Fin Pour
3) Max
m
4) Fin Max
10) Inver
ser une
chane de
caractre.
0) Def
Proc
Invers
e (var
ch :
chaine
)
1) Pour i
de 1
n div 2
faire
X
Ch[i]
Ch[i]
ch[ni+1]
Ch[ni+1]
x
Fin
Pour
2) Fin
Invers
e
NB : Pour chacun des exercices la solution doit comporter au moins deux
modules.
Exercice 2 :
Soit la fonction Traitement suivante crite en Pascal :
FUNCTION Traitement (d,f :integer;T:tab): Integer;
VAR
indmin, i : integer ;
BEGIN
Indmin: =d;
For i: = d+1 to f do
IF T[i] < T[indmin] THEN
Begin
Indmin: = i;
End;
Traitement: = indmin;
END;
1. Dterminer et complter le type de cette fonction ainsi que la partie
dclaration des variables locales.
2. Quelle est la valeur renvoye par la fonction Traitement si d=2, f=5
et le tableau contient les lments suivants : Traitement = 4
- 1 1
T 1 5 0
6 0 3
0
i
2 3 4 5
Exercice 3 :
Soit l'Algorithme suivant :
0) Def FN Traitement (T : Tab ; N : Entier) : Entier
1) NB 0
Pour i de 1 N Faire
Si
2) Traitement NB
3) Fin Traitement
No
n
T "T "e "c "h "n "o "l "o "g "i "e
" " " "
"
" " " " " "
1
1
11
0
(m
aju
s
(T Dtermine de nombre de consonne dans un tableau de
[i]) caractres
da
ns 2. Transformer la fonction Traitement en une procdure
0) Def Proc Traitement (T : Tab ; N : Entier ; var nb:
["A
Entier)
",
1)
NB
0
"E"
Pour i de 1 N Faire
,
"O
Si Non (majus (T [i]) dans ["A", "E", "O", "I", "U",
",
"Y"]) alors
"I"
NB NB + 1
,
"U
Fin si
",
Fin Pour
"Y"
])
2) Fin Traitement
alo
rs Exercice 4 :
Soit la fonction boolenne VERIF suivante :
NB
NB
+
1
Fin
si
Fi
n
Po
ur
U
n
t
i
l
(
T
e
s
t
)
o
r
(
V
c
=
L
e
n
g
t
h
(
C
h
)
)
;
V
e
r
i
f
:
=
t
e
s
t
;
End;
Exercice 5 :
Soit lalgorithme de la fonction suivante :
0) Def FN Traitement (ch : chaine) : entier
1) P pos ( , ch), Nb 0
Tant que (p<>0) faire
Eface (ch, p, 1)
Nb nb+1
P pos ( , ch)
Fin tant que
2) Traitement nb+1
3) Fin Traitement
Cette fonction permet de calculer le nombre des mots dans une phrase
ch.
On suppose que :
o La phrase ch ne commence pas par un espace
o La phrase ch ne se termine pas par un espace
o Entre deux mots de la phrase ch il y a un espace unique
a. Complter les points par le code convenable.
b. Transformer la fonction Traitement en une procdure Traitement.
0) Def Proc Traitement (ch : chaine ; nb : entier)
1) P pos ( , ch)
2) Nb 0
3) Tant que (p<>0) faire
Efface (ch, p, 1)
nb nb+1
p pos ( , ch)
Fin Tant que
4) nb nb+1
5)Fin Traitement
Exercice 6 :
function
inconnu
(ch:string;
c:char):bo
olean;
var
i:inte
ger;
var
tr:bo
olean;
i:integer;
tr:boolean;
begin
begin
tr:=(1
=0) ; i:=0;
tr:=(1=0) ;
repe
i:=0;
at
i
repeat
i:=i+1;
:=i+1
;
tr:=(ch[i]=c);
t
r:=(ch
[i]=c);
until
(i=length(ch
)) or (tr);
inconnu:=tr
;
end;
1) comp
lter
les
pointi
lles
par
les
donn
es
marq
uant
es.
2) dter
mine
r le
rsult
at
retou
Inconnu(ch,
c,x) ;
Exercice 7 :
Ecrire un programme permettant dafficher tous les couples dentiers
(m,n) vrifant la proprit suivante :
M [1,100] et n[2,15]
Et m fgure dans lcriture du produit m.n
Exemples :
1- Si m = 20 et n= 6
Alors le produit m.n = 120 contient le nombre 20 dans ce cas le
couple (20,6) sera affich.
2- Si m
= 20
et n =
12
Alors le
produit
m.n = 20
* 12 =
240 ne
contient
pas le
nombre
20.
end;
procedure couple(m,n:byte);
var
chm, chp:string;
p:byte;
begin
str(m,chm) ;
str(n*m,chp);
program
Welcome;
uses
WinCrt;
var
m,n,i,j:byt
p:=pos(chm,chp);
if p<>0 then
writeln(m,',',n,'Le couple verifie les proprits')
else
writeln('Le couple ne vrifie pas les proprits');
e;
procedure
saisie(var
m,n:byte);
begin
repeat
writeln('Do
end;
begin
saisie(m,n);
couple(m,n);
end.
nner m dans
[1..100]');
readln(m);
until m in
[1..100];
Exercice 8 :
Sur les touches (2, 3, 4, 5, 6, 7, 8 et 9) du clavier dun tlphone
portable, sont inscrites des lettres pour crire des messages en plus des
chifres.
repeat
writeln('Do
nner n dans
[2..15]');
readln(n);
until n in
[2..15];
portable
pour saisir
un mot
donn de N
lettres,
supposes
non
accentues.
(4<=N<=9)
.
var
i:byte;
test:boolean;
begin
repeat
Indication :
La fgure
suivante
donne la
rpartition
des lettres
sur les
touches du
clavier dun
tlphone
portable.
1
readln(ch);
n:=length(ch);
i:=0;
test:=true;
repeat
i:=i+1;
ABC
4
GHI
JKL
PQR
S
TUV
*+
test:=false;
until (test=false) or (i=n);
until (n in [4..9]) and test;
end;
procedure appui (ch:string;var nbr:byte;n:byte);
WXY
var
program caract;
uses WinCrt;
var
nbr,n:byte;
ch:string;
i:byte;
begin
nbr:=0;
for i:=1 to n do
begin
case upcase(ch[i]) of
'A','D','G','J','M','P','T','W':nbr:=nbr+1;
1) S 0
'B','E','H','K','N','Q','U','X':nbr:=nbr+2;
'C','F','I','L','O','R','V','Y':nbr:=nbr+3;
Si (p mod i = 0) Alors
'S','Z':nbr:=nbr+4;
S S+i
end;
FinSi
end;
Fin pour
end;
2) Somme S
3) Fin Somme
begin
rempli(n,ch);
appui(ch,nbr,n);
writeln(nbr);
end.
FinSi
FinPour
Exercice
9:
Soit
l'algorithme
suivant :
0)DE
F
FN
So
m
m
e
(p
:
en
tie
r)
:
en
tie
r
3) Fin Somme
3. Ecrire un algorithme d'une procdure Saisie, permettant de saisir
deux entiers positifs non nuls.
0) DEF Proc saisie (var x,y : entier)
1) Rpter
Ecrire (Donner deux entiers x et y positifs et non nuls)
Lire (x,y)
Jusqu' (x0) ET (y0)
2) Fin Saisie
4. En utilisant les deux modules Somme et saisie, crire un algorithme
d'un programme intitul Amis, qui permet de saisir deux entiers positifs
non nuls et d'afficher s'ils sont amis ou non. Sachant que deux entiers m
et n sont dis amis, si la somme des diviseurs de n est gal m et
inversement.
0) Debut Amis
1) Proc Saisie(m,n)
2) Sn somme(n)
3) Sm somme(m)
4) Si (sm=n) ET (sn=m) alors
Ecrir
e (m,
et
,n,
sont
deux
nomb
res
amis
)
Sino
n
uses WinCrt;
Ecrir
e (m,
et
,n,
ne
sont
pas
deux
nomb
res
amis
)
FinSI
5) FIN
Amis
const
nmax=100;
type
tab=array[1..nmax] of integer;
var
t,tn,tp:tab;
n,nn,np:byte;
procedure saisie (var n:byte);
begin
repeat
writeln('Donner n la taille du tableau');
Exercice
10 :
T tant un
tableau de
dimension
N_MAX
(N_MAX =
100),
remplir par
N entiers
(N
N_MAX).
readln(n);
until (n in [1..nmax]);
end;
procedure rempli(var t:tab;n:byte);
var
i:byte;
begin
for i:=1 to n do
begin
writeln('Donner lment T[',i,']=');
readln(t[i]);
end;
var
i:byte;
end;
begin
procedure
for i:=1 to n do
eclat
(t:tab;n:byte;
var
tn,tp:tab;var
nn,np:byte);
end;
var
begin
i:byte;
saisie(n);
begin
rempli(t,n);
nn:=0;
eclat(t,n,tn,tp,nn,np);
np:=0;
affiche (t,n);
for i:=1 to n
affiche(tn,nn);
do
affiche(tp,np) ;
if
t[i]<0
then
end.
begin
nn:=nn+1;
Exercice 11 :
tn[nn]:=t[i];
Un nombre est dit parfait sil est gal la somme de ces diviseurs (sauf
lui mme).
end
Exemple : 6=3+2+1.
else
begin
np:=np+1;
program nb_parfaits;
tp[np]:=t[i];
uses wincrt;
end;
var x:longint;
end;
procedure
begin
affiche
(t:tab;
:byte);
repeat
writeln('Sur
quel entier
naturel
voulez-vous
effectuer le
test du
nombre
parfait?');
readln(x);
until (x>0);
Exercice 12 :
end;
procedure
parfait(x:lon
gint);
var
s,d:longint;
17
19
begin
s:=0;
for d:=1
to (x div 2)
do
if x
mod d=0
then
s:=s+d;
if s=x
then
parfait')
else
17
19
38
76
152
304
writeln(x,'
Nombre
38
1
7
19
38
Ignor
76
Ignor
15
2
30
4
Ignor
a,b:byte;
r:longint;
17 * 19
19 = +
30
4
On
veut
crire
un
progr
amm
e qui
lit
deux
entier
s
positif
s non
nuls
et
infri
eur
100,
calcul
e
et
affich
e
le
produ
it de
deux
entier
s par
la
mth
ode
Russe
.
progr
am
Russe
;
uses
wincr
t;
var
=
323
begin
repeat
writeln('Donner deux entiers a et b entre 1 et 99');
readln(a,b);
until (a in [1..99]) and (b in [1..99]);
end;
Exercice 13
:
Soit le
programme
intitul info
qui permet
Samir systme
de :
Saisir
la
taille
N
dun
tablea
u T,
avec
(1<N
<15).
Rempl
ir un
tablea
uT
par N
chan
es
des
caract
res
tel
que la
taille
de
chacu
ne est
dans
[3..20
].
Cherc
her et
affich
er
tous
les
chan
es
Totalo
gram
me
conte
nue
dans
T.
temporairem
ent
Bonjou
r
ses
elle
program info;
uses wincrt;
type
tab=array[1..14] of string[20];
var
n,i:byte;
t:tab;
procedure
remplir
(n:byte;
var
t:tab);
if t[i][1]=t[i][length(t[i])] then
write(t[i],' | ');
end;
begin
for i:=1 to n
do
repeat
writeln('Donn
er la chaine
de la case ',
i);
readln(t[i]);
until
(length(t[i]) in
[3..20]) ;
end;
begin
saisie(n);
remplir(n,t);
totalo(n,t);
end.
Exercice 14 :
Un texte est dit tautogramme si tous les mots commencent par la
mme lettre.
Exemple :
Mazarin, ministre malade, mditait mme moribond malicieusement
mille malttes
On suppose que la phrase est crite correctement. (Pas despace en
double)
procedure
totalo
(n:byte;
t:tab);
begin
writeln('Les
chaines
totalogramm
es sont:');
for i:=1 to n
do
writeln('Donn
er
une
chaine');
else
tauto:=true;
end;
readln(ch);
begin
until(pos('
',ch)=0);
saisie(ch);
end;
if tauto(ch) then
function
tauto
(ch:string):bo
else
writeln(ch, ' n''est pas un tautogramme');
olean;
end.
var
c:char;
Exercice 15 :
p:byte;
Ecrire un programme qui permet de dire si deux chanes ch1 et ch2 (non
vides) sont anagrammes ou non.
begin
Deux chanes sont dites anagrammes si elles sont formes par les
c:=ch[1];
mmes caractres.
repeat
p:=pos('
',ch);
program Welcome;
uses WinCrt;
delete(ch,1,
p);
var
ch1,ch2:string;
until
(c<>ch[1])
or
(p=0);
begin
if
repeat
c<>ch[1]
then
tauto:=false
writeln('Do
nner
ch2
non vide');
readln(ch
2);
until
(length(ch1)<
>0)
and
(length(ch2)<
>0)
and
end;
begin
saisie(ch1,ch2);
if anag(ch1, ch2) then
(length(ch1)=
length(ch2));
end;
function
anag(ch1,
ch2:string):b
oolean;
var
i,p:byte;
test:boole
Exercice 16 :
Ecrire un programme qui permet de remplir un tableau T par N
caractres alphabtique (2<=N<=10) puis dterminer et afficher le
nombre doccurrence dun caractre alphabtique donn par lutlisateur
dans le tableau T.
Exemple :
an;
Af r A
W c
begin
test:=true;
i:=1;
repeat
p:=pos(ch
1[i],ch2);
i:=i+1;
dans le tableau.
program Welcome;
uses WinCrt;
type
for i:=1 to n do
tab=array[1..
10] of char;
var
repeat
writeln('Donner un caractre');
readln(t[i]);
m,n,i,j:byte;
t:tab;
end;
c:char;
function occ(t:tab;n:byte;c:char):byte;
procedure
var
saisie(var
n:byte);
begin
repeat
i,oc:byte;
begin
oc:=0;
for i:=1 to n do
writeln('Donn
er n dans
if t[i]=c then
oc:=oc+1;
[2..10]');
occ:=oc;
readln(n);
end;
until n in
[2..10];
end;
procedure
rempli(var
t:tab; n:byte);
var
i:byte;
begin
begin
saisie(n);
rempli(t,n);
writeln('Donner le caractre recherch');
readln(c) ;
if occ(t,n,c)<>0 then
writeln('le caractre ',c,' existe dans le tableau et apparait ',occ(t,n,c),'
fois')
else
Vocabulaire et
syntaxe :
Au niveau de
lanalyse et
lalgorith
me
R=[init]Tant que
(condition) faire
Instruction
1
Instruction
n
Fin tant que
Au niveau pascal
While (condition)
do
Begi
n
Instruction 1 ;
Instruction
n; End;
2N20)
_ Charger un tableau T par N
entiers.
_ Afficher lindice ind du premier
nombre pair.
Activit
3.
On se propose de calculer le PGCD de deux entiers positifs en
utilisant la mthode de diffrence : Le plus grand des entiers A et B
reoit la valeur de la diffrence des entiers jusqu A = B.
Activit
4.
Ecrire un programme intitul PALINDROME, qui permet de lire un mot M
qui ne dpasse pas
15 caractres et de vrifier sil est palindrome ou non. (Un mot
palindrome se lit dans les deux sens tel que les mots RADAR, ELLE,KAYAK,
).
Activit 5.
Un nombre Armstrong est un nombre dont la somme des cubes des chiffres le
composant vaut ce nombre.
3
3
3
Exemple : 371 = 3 + 7 + 1
Les nombres d'Armstrong trois chifres sont : 0, 1, 153, 370, 371 et 407.
Instruction n
Fin tant que
Au niveau pascal
While (condition) do
Begin
Instruction 1 ;
Instruction n;
End;
program pair;
uses wincrt;
var
t:array[1..20]of integer;
som, n,i, ind:integer;
begin
repeat
writeln('Donner n la taille du
tableau entre 2 et 2:');
readln(n);
until n in [2..20];
for i:=1 to n do
begin
writeln('T[',i,']=');
readln(t[i]);
end;
i:=1;
ind:=0;
while (ind=0) and (i<=n) do
begin
if (t[i] mod 2 = 0) then
ind:=i
else
i:=i+1;
end;
if ind=0 then
writeln('Pas de nombre pair dans le
tableaux')
else
writeln('Premier nombre pair dans la
position suivante :', ind);
end.
Activit 3.
On se propose de calculer le PGCD de deux entiers positifs en utilisant la mthode de
difrence : Le plus grand des entiers A et B reoit la valeur de la difrence des entiers
jusqu A = B.
rsultat : ecrire("Le PGCD est : ", A)
A=[ ] Tantque A B faire
Si A > B alors
A <-- A - B
program PGCD;
uses wincrt;
var
a,b:integer;
sinon
B <-- B - A
Finsi
Fin Tantque
(A,B) = [ ] Rpter
A,B=donne("taper deux entiers
positifs")
Jusqu' (A>0) et (B>0)
begin
repeat
writeln('Donner deux entiers positifs
A et B :');
readln(a, b);
until (a>0) and (b>0);
while a<>b do
if a>b then
a:=a-b
else
b:=b-a;
writeln('Le PGCD :', a);
end.
Activit 4.
Ecrire un programme intitul PALINDROME, qui permet de lire un mot M qui ne dpasse
pas 15 caractres et de vrifer sil est palindrome ou non. (Un mot palindrome se lit
dans les deux sens tel que les mots RADAR, ELLE,KAYAK,).
program palindrome;
uses wincrt;
var
ch:string;
ig,id:integer;
palind:boolean;
begin
writeln('Donner
le
mot
:');
readln(ch);
palind:=true; ig:=1;
id:=length(ch);
while(ig<id) and palind do
if ch[ig]=ch[id] then
begin
inc(ig);
dec(id) ;
end
else
palind:=false;
if palind then
writeln(ch, ' est un palindrome')
else
writeln(ch,'
n''est
pas
un
palindrome');
end.
Activit 5.
Un nombre d'Armstrong est un nombre dont la somme des cubes des chifres le
composant vaut ce nombre.
Exemple : 371 = 3^3 + 7^3 + 1^3
Les nombres d'Armstrong trois chifres sont : 0, 1, 153, 370, 371 et 407.
program narcissique;
uses wincrt;
var
n,temp, r, som:integer;
begin
writeln('Donner un entier :');
readln(n);
temp:=n;
som:=0;
while n<>0 do
begin
r:=n mod 10;
r:=r*r*r;
som:=som+r;
n:=n div 10;
end;
if (som=temp) then
writeln(temp,' est un Nombre
Armstrong')
else
writeln(temp,' n''est pas un Nombre
Armstrong');
end.