Fiche TD N° 2
EXERCICE SUR LES BOUCLES :
Exercice N° 01 : 1. Ecrire l'algorithme - En utilisant la boucle «Pour » - qui permet de :
a) Lire au clavier un nombre N ;
b) Calculer S = 1 + 1/2 + 1/3 + 1/4 + 1/5 + + l/N ;
2. Traduire cet algorithme en programme Pascal.
Exercice N° 02 : Répondre aux questions de l'exercice N° 1 en utilisant:
1. La boucle «répéter » ;
2. La boucle «Tant que ».
Exercice N° 03 : Ecrire l'algorithme puis le programme qui permet d'afficher le Maximum
Max. Et le Minimum Min de N nombre lit au clavier.
Exercice N° 04 : 1. Ecrire l'algorithme qui permet de :
a) Lire un nombre N au clavier;
b) Affiche tous les diviseurs de ce nombre
2. Traduire Cet algorithme en programme pascal.
Exercice N°05 : 1. Ecrire l'algorithme qui permet de :
a) Lire un nombre N au clavier ;
b) Compter le nombre de ses diviseurs;
c) Calculer la somme de ses diviseurs ;
d) En déduire si N est premier ;
e) En déduire si N est parfait;
On dit que N est parfait si N = Σ diviseurs(N). Exemple 6 est parfait car (6 = 1 + 2 + 3)
2. Ecrire le programme pascal correspond à cet algorithme.
Exercice N°06: 1. Ecrire l'Algorithme qui permet de :
a) Lire deux nombres A et B au clavier;
b) Calculer le PGDC(A,B) par l' Algorithme d’Euclide ;
c) En déduire le PPMC(A, B) ; Sachant que PPMC(A,B)= A*B/PGDC(A,B)
d) En déduire si A et B sont premiers entre eux ;
2. Traduire cet algorithme en programme pascal.
SOLUTION TD NO 02
EXERCICE 01 :ALGORITHME DEBUT I , N :
ENTIER S :
REEL LIRE ( N )
S<-- 0
POUR I <--1
JUSQU'À N
FAIRE S <-- S + 1/I
FIN POUR AFFICHER( S )
FIN PROGRAMME PASCAL PROGRAM TD02EX01;
VAR
I , N : INTEGER ;
S : REAL ;
BEGIN
READ( N ) ;
S := 0 ;
FOR I := 1 TO N DO
S := S + 1/I ;
WRITE ( S ) ;
END. EXERCICE 02 :ALGORITHME AVEC REPETER DEBUT I , N :
ENTIER S :
REEL LIRE ( N )
S<-- 0
I <--1
REPETER S <-- S + 1/I
I <-- I +1
JUSQU’A I > N
AFFICHER ( S )
FIN PROGRAMME PASCAL AVEC REPEATPROGRAM TD02EX02;
VAR
I , N : INTEGER ;
S : REAL ;
BEGIN
READ( N ) ;
S := 0 ;
I:=1 ;
REPEAT
S := S + 1/I ;
I := I + 1
UNTIL I > N ;
WRITE(S);
END.ALGORITHME avec TANT QUE DEBUT I , N :
ENTIER S :
REEL LIRE ( N )
S<-- 0
I <--1
TANT QUE I < N
FAIRE S <-- S + 1/I
I <-- I +1
FIN TANTQUE AFFICHER ( S )
FIN PROGRAMME PASCAL AVEC WHILEPROGRAM TD02EX02BIS ;
VAR
I , N : INTEGER ;
S : REAL ;
BEGIN
READ( N ) ;
S := 0 ;
I:=1 ;
WHILE I < N DO
BEGIN
S := S + 1/I ;
I := I + 1
END;
WRITE(S);
END.EXERCICE 03 :ALGORITHME DEBUT I , N , MIN , MAX , NBRE :
ENTIER LIRE ( NBRE )
MAX <-- NBRE
MIN <-- NBRE
POUR I<-- 2
JUSQU’A N
FAIRE LIRE ( NBRE )
SI NBRE > MAX
ALORS MAX <-- NBRE
FINSI SI NBRE < MIN
ALORS MIN <-- NBRE
FINSI FIN POUR FIN PROGRAME PASCALPROGRAM TD02EX03;
VAR
I , N , MIN , MAX , NBRE : INTEGER ;
BEGIN
READ ( NBRE) ;
MAX := NBRE ; MIN := NBRE ;
FOR I := 2 TO N DO
BEGIN
READ ( NBRE) ;
IF NBRE > MAX THEN
MAX := NBRE ;
IF NBRE < MIN THEN
MIN := NBRE
END;
WRITELN ( MAX , MIN );
END.EXERCICE 04ALGORITHME DEBUT I , N :
ENTIER LIRE ( N )
POUR I<-- 1
JUSQU'A N
FAIRE SI MOD( N ,I ) = 0
ALORS AFFICHER( ’Le diviseur de ’, N , ’est’,I )
FINSI FIN POUR FINPROGRAMME PASCALPROGRAM TD02EX04 ;
VAR
I , N : INTEGER ;
BEGIN
READ( N ) ;
FOR I := 1 TO N DO
IF MOD( N , I ) THEN
WRITELN (’Le diviseur de ’, N , ’est’,I ) ;
END.EXERCICE 05ALGORITHME DEBUT I , N , NBDIV , S :
ENTIER LIRE ( N )
NBDIV<--0
S<--0
POUR I<-- 1
JUSQU'A N
FAIRE SI MOD( N ,I ) = 0
ALORS NBDIV <- NBDIV + 1
S <-- S + I
FINSI FIN POUR SI NBDIV = 2
ALORS AFFICHER ( N,’est premier’)
FINSI SI N = S
ALORS AFFICHER ( N,’est parfait’)
FINSI FINPROGRAMME PASCALPROGRAM TD02EX05 ;
VAR
I , N , NBDIV , S : INTEGER ;
BEGIN
READ( N ) ;
NBDIV :=0 ;
S :=0 ;
FOR I := 1 TO N DO
IF MOD( N , I ) = 0 THEN
BEGIN
NBDIV := NBDIV + 1;
S := S + I
END;
IF NBDIV = 2 THEN
WRITE (N,’est premier’);
IF N = S THEN
WRITE (N,’est parfait);
END.EXERCICE 06ALGORITHME DEBUT A , B , D , PGDC , PPMC :
ENTIER LIRE ( A , B )
REPETER D <-- A MOD B
A <-- B
B <-- D
JUSQU’A D=0
FIN REPETER PGCD<-- B
PPMC <-- A*B/PGCD
SI PGCD = 1
ALORS AFFICHER( A,’et’,B,’sont premier entre eux’)
FINSI AFFICHER(A , B , PGCD , PPMC)
FINPROGRAMME PASCALPROGRRAM TD02EX06 ;
VAR
A , B , D , PGCD , PPMC : INTEGER ;
BEGIN
READ ( A , B ) ;
REPEAT
D:= A MOD B;
A:= B ;
B := D
UNTIL D = 0 ;
PGCD := B;
PPMC := A*B/PGCD;
IF PGCD = 1 THEN
WRITE(A,’et’,B,’sont premier entre eux’) ;
WRITE(A , B , PGCD , PPMC) ;
END.