Exercices d'Algorithmique et Programmation
Exercices d'Algorithmique et Programmation
Exercice 5 :
Exercice 3 :
Exercice 7 :
Donner les traces de l’algorithme suivant :
Soit les déclarations suivantes :
0. Début séquence
1. a ←10 Séquence a b c
Variable Type Valeur
2. b ←20 1 ………….. ………….. …………..
X Réel 2.2
3. c←2 2 ………….. ………….. …………..
Y Réel 0.2
4. a ←a+b/3 3 ………….. ………….. …………..
N Entier 20
5. c ←b MOD 3 * 4 DIV c 4 ………….. ………….. …………..
Z Entier 2
6. FIN séquence 5 ………….. ………….. …………..
T Caractère 'n'
B Booléen Vrai
Exercice 4 :
Soit l’algorithme suivant : Soient les expressions suivantes :
Exercice 8 : Exercice 11 :
Evaluer les expressions suivantes tout en complétant le tableau ci-dessous : Soient les déclarations pascal suivantes :
A (5<8) OU (TRONC (6.95) < 3) TYPE
B (ARRONDI (-4.5) <= 5) ET (1>3) Personnel = (Ingénieur, Professeur, Comptable, Avocat, Docteur) ;
C NON ((5>3) OUex (10<30))
D (2<18) OUex (-10 < TRONC (0.25)) VAR
E (25>=3) OU (NON (-3<31) x : Personnel ;
F NON ((3>12) ET (21< ARRONDI (-3.23))
1) Les affectations suivantes sont-elles correctes (Oui/Non) ?
x ← Avocat …………………………
A B C D E F x ← Prof …………………………
…………… …………… …………… …………… …………… …………… 2) Evaluer les expressions suivantes :
ORD (Docteur) ………………………………
Exercice 9 : SUCC (Comptable) ………………………………
PRED (Professeur) ………………………………
Soit la séquence d’instructions suivante : Ingénieur < Avocat ………………………………
a ← 10 Exercice 12 :
b ← a + 2,5 Soit trois tableaux T1, T2, T3 et soit les affectations suivantes :
c←a∗b+4
d ← a MOD 2 T1[1] "Mohammed" T2[3] SOUS_CHAINE (T1[2],1,3)
e ← CONCAT (″vrai″,″faux″) T1[2] " Ben Ali " T2[4] CONCAT (T2[3], "i")
x ← e = ″vraifaux″ T1[3] CONCAT (T1[1] , " ", T1[2] ) T3[1] POS(T2[2], T2[1])
y ← LONG (e)+POS (″e″,e) T2[1] SOUS_CHAINE (T1[1],3,2) T3[2] LONG (T1[1])
z ← x ET (y=8) T1[4] " nen " T3[3] POS (T1[2],T1[3])
INSÈRE (T1[4], T2[2],1)
Pour chacune des variables donner son type et sa valeur .
Exercice 14 :
Soit les déclarations pascal suivantes:
VAR B : CIVIL ;
PERSONNE : CELIBATAIRE .. DIVORCE ;
Série d’exercices SORTIE_INVERSE qui saisit trois nombres dans un ordre donné et le fait sortir dans l'ordre opposé à
l'entrée.
Exercice 7 : Rédiger une analyse, un algorithme et un programme en PASCAL intitulé SUP_INF qui fait
Exercice 3 : Rédiger une analyse, un algorithme et un programme en PASCAL intitulé DIVISION qui
entrer deux réels x et y et fait sortir leur sup et leur inf. On utilisera la fonction prédéfinie ABS qui donne la
saisit un nombre rationnel comme couple d'entiers (p, q) et fait sortir ce nombre sous forme décimale. valeur absolue d'un réel.
Exercice 8 : Le matin, un automobiliste part avec un réservoir plein d'essence et un compteur marquant D Exercice 14 :
km. A la fin de la journée, il lui a fallu L litres pour remplir le réservoir. Le compteur marque F km. Rédiger une analyse, un algorithme et un programme en PASCAL intitulé CHAINE permettant d’afficher la
Rédiger une analyse, un algorithme et un programme en PASCAL intitulé automobiliste qui lit les valeurs D, longueur, le premier caractère, le caractère du milieu et le dernier caractère pour une chaîne donnée.
F et L et fait sortir le taux de consommation de la voiture de l'automobiliste.
Exemple : pour la chaîne : "table des codes ASCII"
On aura : Chaine de longueur : 21
Le premier caractère : t
Le caractère du milieu : c
Le dernier caractère : I
Exercice 15 :
Rédiger une analyse, un algorithme et un programme en PASCAL intitulé CUBIQUE qui permet de saisir un
entier naturel de trois chiffres puis d'affiche la somme cubique de ces chiffres.
Exercice 9 : Exemple : Si N = 120 afficher + + = 9
Rédiger une analyse, un algorithme et un programme en PASCAL intitulé NOMBRE qui permet de
déterminer le nombre de chiffres d’un entier donné. Exercice 16 :
Exemple : pour N=2013, le programme affichera 4. Rédiger une analyse, un algorithme et un programme en PASCAL intitulé SOMME qui permet de lire un
entier N formé exactement de 4 chiffres et d'affecter chacun de ces chiffres dans un tableau T (T étant un
Exercice 10 : tableau de 6 éléments de type chaîne de caractères) de la façon suivante :
Rédiger une analyse, un algorithme et un programme en PASCAL intitulé INVERSER_ENTIER qui permet 1) Le chiffre des milliers occupera la 1ére case du tableau T.
d’inverser un entier n donné de trois chiffres. 2) Le chiffre des centaines occupera la 2éme case du tableau T.
Exemple : si N=528, le programme affichera 825. 3) Le chiffre des dizaines occupera la 3éme case du tableau T.
4) Le chiffre des unités occupera la 4éme case du tableau T.
5) Dans le 5éme case de T, on met le caractère '='.
Exercice 11 : 6) La dernière case du tableau T contiendra la somme des chiffres qui constituent l'entier N.
Rédiger une analyse, un algorithme et un programme en PASCAL intitulé CHIFFRE qui lit un entier formé
de trois chiffres et insère le chiffre zéro 0 entre les chiffres de l'entier. Exemple : Si N = 3751
Exemple : N=125 Le résultat est N=10205 T ′3′ ′7′ ′5′ ′1′ ′=′ ′16′
1 2 3 4 5 6
Exercice 17 :
Exercice 12 : Soit C et CH deux variables données tel que C est un caractère et CH est une chaîne de caractère. Rédiger une
Rédiger une analyse, un algorithme et un programme en PASCAL intitulé CONCATENATION qui permet analyse, un algorithme et un programme en PASCAL intitulé POSITION qui permet d'afficher la deuxième
de : position de C dans CH.
- Saisir deux entiers m et n.
- Concaténer l’entier m avec l’entier n Exemple :
- Affecter le résultat de concaténation à une variable p puis afficher le résultat de concaténation. Pour C ="m" et CH ="programmation", le programme affichera : 8
Exemple : m = 167 et n =25 Le résultat de concaténation est p =16725. Pour C ="r" et CH ="programmation", le programme affichera : 5
Pour C ="w" et CH ="programmation", le programme affichera : 0
Exercice 13 :
Exercice 18 :
Pour traduire un mot français en latin, on place la première lettre du mot français à la fin et on ajoute "us", Une société fabrique des objets en plastique qu'elle peut emballer dans des caisses d'emballages de différentes
exemple le mot homme. capacités :
Caisse C1 : 230 unités
h o m m e o m m e h Caisse C2 : 12 unités
Caisse C3 : 1 unité
1 2 3 4 5 2 3 4 5 1
Et on ajoute "us", on aura ommehus.
Rédiger une analyse, un algorithme et un programme en PASCAL intitulé CAISSE qui lit la quantité
commandée puis calcule, pour chaque type, le nombre minimum de caisses à utiliser.
Rédiger une analyse, un algorithme et un programme en PASCAL intitulé LATIN réalisant cette traduction.
Exemple : pour 255 unités, il leurs faut une caisse C1, 2 caisses C2 et une caisse C3.
Les structures de
Si (a=b) OU (b>c) alors Si (a=b) ET (b>c) alors
Res a+b Res a+b
Sinon si (a<>c) OU (a>b) alors Sinon si (a >c) OU (a>b) alors
Res a*b Res a*b
Ecrire (Res)
Finsi
Ecrire (Res)
Faire l’exécution de deux séquences en utilisant les valeurs suivantes : a=7, b=8 et c=3 et donner la valeur de
Exercice 1 : Res dans chaque cas .
X, Y et Z étant des variables numériques, on considère les deux séquences algorithmiques S1 et S2 suivantes : Exercice 3 :
S1 S2 Soit l’algorithme suivant : .
…………. ………….
Si ( ((X<5) ou (Y>2)) et (Z>3) ) alors Si ( (X<5) et ( (Y>2) ou (Z>3) ) ) alors 0) DEBUT Inconnu
X 1 X 1 1) Ecrire ("Donner X= "), Lire(x)
Si (X - Y>=0) alors Si (Z - Y>0) alors 2) Ecrire ("Donner Y= "), Lire(y)
Z 0 Z 0 3) CONVCH(x, ch1)
Fin si Fin si 4) CONVCH(y, ch2)
Y Y+Z Y Y+Z 5) SI (LONG (ch1)=2) ET (LONG (ch2)=2)
Sinon Sinon ALORS
X 2 X 2 a x DIV 10
ZY+Z ZY+Z b x MOD 10
Fin si Fin si c y DIV 10
Ecrire (X, Y, Z) Ecrire (X, Y, Z) d y MOD 10
…………. …………. r a*1000 + b*100 + c*10 + d
SINON
r0
Pour chacune de ces séquences, donner les valeurs après exécution de X, Y et Z dans les 3 cas suivants FIN SI
6) Ecrire ("Le résultat est: ", r)
1. X = 4 Y=1 Z=4 7) FIN Inconnu
2. X = 4 Y=5 Z=4
3. X = 6 Y=5 Z=4 1. Traduire cet algorithme en pascal
2. Donner les valeurs de a, b, c, d et r pour chacune des cas :
S1 S2
X Y a b c d r
1. X = ….. Y = ….. Z = ….. 1. X = ….. Y = ….. Z = …..
36 85
2. X = ….. Y = ….. Z = ….. 2. X = ….. Y = ….. Z = …..
29 374
3. X = ….. Y = ….. Z = ….. 3. X = ….. Y = ….. Z = …..
3. Quelle est la condition portée par SINON au niveau de l’instruction n°5 ?
4. Quel est le rôle de cet algorithme ?
5. Donner un nom significatif au programme.
Exercice 4 : Rédiger une analyse, un algorithme et un programme en PASCAL intitulé DIVISION Exercice 8 : On veut calculer le montant des impôts d'un salarié. La grille à utiliser est la suivante :
permettant de lire deux entiers, diviser le plus grand par le plus petit (division euclidienne). Si le plus petit est
nul, afficher un message d’erreur.
Salaire brut (sb) Taux d'impôt
sb < 150 dt 5%
150 dt < sb < 300 dt 10 %
300 < s < 600 dt 20%
600 dt < s 25 %
Rédiger une analyse, un algorithme et un programme en PASCAL intitulé IMPOT qui saisit le salaire et affiche
le montant des impôts et le salaire net.
Exercice 5 : Rédiger une analyse, un algorithme et un programme en PASCAL intitulé ETAT_CIVIL
permettant de demander le nom, le prénom, le sexe et l’état civil d’une personne, puis afficher :
″ Bonjour Monsieur / Madame / Mademoiselle X ″.
Exemple : Nom et prénom : ″ Ahmed Akermi ″ sexe = ″ M ″ état civil = ″ C ″ Alors le programme affiche :
″ Bonjour Monsieur Ahmed Akermi ″
Exercice 9 : Rédiger une analyse, un algorithme et un programme en PASCAL intitulé JOURS qui affiche
le nombre de jours d'un mois donné.
Exercice 6 : Rédiger une analyse, un algorithme et un programme en PASCAL intitulé DEGRE1 qui
résout dans l'ensemble des réels IR, une équation du premier degré à une inconnue x réelle de la forme :
ax + b = 0.
Exercice 12 : Un étudiant passe trois examens. Il est déclaré admis si :- soit, il a au moins 9 points à chaque
examen.- soit, la moyenne des trois examens est au moins égale à 10 points et la plus basse note est au moins
égale 8 points. * S'il n'est pas admis alors il est refusé.
Rédiger une analyse, un algorithme et un programme en PASCAL intitulé ETUDIANT. Exercice 16 : Rédiger une analyse, un algorithme et un programme en PASCAL intitulé SALAIRE qui
calcule le salaire de base et la commission d’un chauffeur de Taxi selon les formules suivantes :
Le salaire de base :
Exercice 17 : Une compagnie d’assurance d’automobile propose à ses clients quatre famille de tarifs
identifiables par une couleur, du moins au plus onéreux : tarifs bleu, vert, orange et rouge.
Exercice 14 : Rédiger une analyse, un algorithme et un programme en PASCAL intitulé CALCUL qui lit
2 opérandes entières et 1 opérateur ( ′+′ , ′-′ , ′*′ , ′/′ , ′\′=DIV , ′%′ = MOD ) et affiche le résultat de Le tarif dépend de la situation du conducteur :
l’opération ou un message d’erreur (en cas de division par 0 et mauvais opérateur ).
- Un conducteur de moins de 25 ans et titulaire du permis depuis moins de deux ans, se voit attribuer le tarif
rouge, si toutefois il n’a jamais été responsable d’accident. Sinon, la compagnie refuse de l’assurer.
- Un conducteur de moins de 25 ans et titulaire du permis depuis plus de deux ans , ou de plus de 25 ans mais
titulaire du permis depuis moins de deux ans a le droit au tarif orange s’il n’a jamais provoqué d’accident, au
tarif rouge pour un accident sinon il est refusé .
- Un conducteur de plus de 25 ans titulaire du permis depuis plus de deux ans bénéfice du tarif vert s’il n’est à
l’origine d’aucun accident et du tarif orange pour un accident , du tarif rouge pour deux accident et refusé au-
delà.
- De plus, pour encourager la fidélité des clients acceptés, la compagnie propose un contrat de la couleur
immédiatement la plus avantageuse (bleu) s’il n’est entré dans la maison depuis plus d’un an.
Rédiger une analyse, un algorithme et un programme en PASCAL intitulé ASSURANCE permettant de saisir
les données nécessaires (sans contrôle de saisie) et de traiter ce problème.
Exercice 18 :
Rédiger une analyse, un algorithme et un programme en PASCAL intitulé POSITION permettant de
déterminer et d’afficher la position relative de deux cercles C1 et C2 du plan cartésien.
Les cercles sont définis par :
Le cercle C1 : Un centre A de coordonnées XA et YA données, Un rayon RA donné
Le cercle C2 : Un centre B de coordonnées XB et YB données, Un rayon RB donné
Les deux cercles peuvent être :
- Se coupent en un point
- Ne se coupent pas
- Se coupent en deux points
2.
Correction de série X
36
29
Y
85
374
a
3
-
b
6
-
c
8
-
d
5
-
r
3685
0
Exercice 5 : TDO
Analyse du problème Objet Type / nature
Nom : ETAT_CIVIL a,b Réel
Résultat = Affichage_message
Affichage_message =[ sexe ← MAJUS ( sexe ) , etatcivil ← MAJUS (etatcivil ) ] Algorithme Traduction en PASCAL
Si sexe=″ M ″ alors 0) Début DEGRE1 PROGRAM DEGRE1 ;
Ecrire ( ″ Bonjour Monsieur ″ , nom ) 1) Ecrire ("a = "), Lire (a) USES WINCRT ;
Sinon si etatcivil=″ C ″ alors 2) Ecrire ("b = "), Lire (b) VAR a, b : REAL ;
Ecrire ( ″ Bonjour mademoiselle ″ , nom ) 3) si (a <> 0) alors BEGIN
Sinon Ecrire ( ″ Bonjour madame ″ , nom ) Ecrire("Solution unique : ", -b/a) WRITELN ('a = ') ; READLN(a) ;
Fin si sinon si (b = 0) alors WRITELN ('b = ') ; READLN(b) ;
nom = donnée ( "Votre nom svp : ") Ecrire("Tout réel est solution ") IF (a <> 0) THEN
sexe = donnée ( "Sexe ( M/F ) : ") sinon Ecrire("Pas de solution") WRITELN('Solution unique : ', -b/a)
etatcivil = Donnée ( "Etat civil ( C , M , D , V ) : ") Fin si ELSE IF (b = 0) THEN
Fin ETAT_CIVIL 4) Fin DEGRE1 WRITELN('Tout réel est solution ')
TDO ELSE
Objet Type / nature WRITELN('Pas de solution');
nom Chaine END.
etatcivil, sexe Caractère
Exercice 7 :
Algorithme Traduction en PASCAL Analyse du problème
0) Début ETAT_CIVIL PROGRAM ETAT_CIVIL ; Nom : CINEMA
1) Ecrire (" Votre nom svp : ") , lire(nom) USES WINCRT ; Résultat = Ecrire ( Message )
2) Ecrire (" Sexe ( M/F ) : ") , lire (sexe) VAR nom : STRING[ 30 ] ; Message =[ ] si ( tarif_reduit ) alors
3) Ecrire("Etat civil ( C , M ,D,V) : ") , lire (etatcivil) etatcivil , sexe : CHAR ; Message ← ″ Le prix est 3DT ″
4) sexe ← MAJUS ( sexe ) BEGIN sinon Message ← ″ Le prix est 4DT ″
etatcivil ← MAJUS (etatcivil ) WRITELN(' Votre nom svp : '); READLN(nom ); Fin si
Si sexe=″ M ″ alors WRITELN(' Sexe ( M/F ) : '); READLN(sexe); tarif_reduit ← ( jour = 3 ) OU ( ( ( age <=18 ) OU ( age >=65 )) ET ( jour <=4 ) ) OU ( ( jour<>7 ) ET (
Ecrire ( ″ Bonjour Monsieur ″ , nom ) WRITELN(' Etat civil ( C , M ,D,V)' ) ; reponse = ' o ' ) )
Sinon si etatcivil=″ C ″ alors READLN(etatcivil ); reponse = donnée ( " Etes –vous étudiant ? o/n = : ")
Ecrire ( ″ Bonjour mademoiselle ″ , nom ) sexe :=UPCASE ( sexe ) ; age = donnée ( " Quel age avez-vous ? = : ")
Sinon Ecrire ( ″ Bonjour madame ″ , nom ) etatcivil :=UPCASE ( etatcivil ) ; jour = donnée ( " Quel jour est-on ? Lun : 1 Mar : 2 Mer : 3 Jeu : 4 Ven :5 Sam : 6 Dim :7 ")
Fin si IF sexe= 'M' THEN Fin CINEMA
5) Fin ETAT_CIVIL WRITELN ( ' Bonjour Monsieur ' , nom ) TDO
ELSE IF etatcivil='C' THEN Objet Type / nature
WRITELN ( ' Bonjour mademoiselle ' , nom ) jour , age Entier
ELSE WRITELN ( ' Bonjour madame ' , nom ); tarif_reduit Booléen
END. reponse Caractère
Message Chaine
Exercice 6 :
Analyse du problème Algorithme Traduction en PASCAL
Nom : DEGRE1 0) Début CINEMA PROGRAM CINEMA ;
Résultat = Solution 1) Ecrire ( " Quel jour est-on ? Lun : 1 Mar : 2 Mer : USES WINCRT ;
Solution =[ ] si (a <> 0) alors 3 Jeu : 4 Ven :5 Sam : 6 Dim :7 " ) , Lire (jour) VAR jour , age : INTEGER ;
Ecrire("Solution unique : ", -b/a) 2) Ecrire ( " Quel age avez-vous ? = : " ), Lire (age) tarif_reduit : BOOLEAN ;
sinon si (b = 0) alors 3) Ecrire ( "Etes –vous étudiant ? o/n =: ") reponse : CHAR ;
Ecrire("Tout réel est solution ") Lire (reponse) Message : STRING ;
sinon Ecrire("Pas de solution") 4) tarif_reduit ← ( jour = 3 ) OU ( ( ( age <=18 ) BEGIN
Fin si OU ( age >=65 )) ET ( jour <=4 ) ) OU WRITELN (' Quel jour est-on ? Lun : 1 Mar : 2 Mer :
a = donnée ( " a = : ") ( ( jour<>7 ) ET ( reponse = ' o ' ) ) 3 Jeu : 4 Ven :5 Sam : 6 Dim :7 ') ;
b = donnée ( " b = : ") 5) si ( tarif_reduit ) alors READLN (jour) ;
Fin DEGRE1 Message ← ″ Le prix est 3DT ″ WRITELN (' Quel age avez-vous ? = : ');
Si (b >=c) alors READLN (a) ; Note1=donnée ("donner la note d’examen num 1 ")
Ecrire (″ les trois entiers en ordre WRITELN ( ' donner le deuxième entier ' ) ; Note2=donnée ("donner la note d’examen num 2 ")
croissante : ″ , a ,b, c ) READLN (b) ; Note3=donnée ("donner la note d’examen num 3 ")
Sinon WRITELN ( ' donner le troisième entier ' ) ; Fin DECISION
Ecrire (″ les trois entiers en ordre READLN (c) ; TDO
croissante : ″ , a ,c, b ) IF (a>=b) AND (a>=c) THEN Objet Type / nature
Fin si BEGIN Note1, Note2 Entier
Sinon Si (b>=a) et (b>=c) alors IF (b>=c) THEN ,Note3, Min
Si (a >=c) alors WRITELN (' les trois entiers en ordre Moy Réel
Ecrire (″ les trois entiers en ordre croissante : ', a , b , c )
croissante : ″ , b ,a, c ) ELSE Algorithme Traduction en PASCAL
Sinon WRITELN (' les trois entiers en ordre
0) Début DECISION PROGRAM DECISION ;
Ecrire (″ les trois entiers en ordre croissante : ', a , c , b ) ;
1) Ecrire (″donner la note d’examen num 1 ″) USES WINCRT ;
croissante : ″ , b ,c, a ) END
Lire (Note1) VAR Note1, Note2 ,Note3, Min : INTEGER ;
Fin si ELSE IF (b>=a) AND (b>=c) THEN
2) Ecrire (″donner la note d’examen num 2 ″) Moy : REAL ;
Sinon BEGIN
Lire (Note 2) BEGIN
Si (a >=b) alors IF (a>=c) THEN
3) Ecrire (″donner la note d’examen num 3 ″) WRITELN ( ' donner la note d’’examen num 1 ' ) ;
Ecrire (″ les trois entiers en ordre WRITELN (' les trois entiers en ordre
Lire (Note 3) READLN (Note1) ;
croissante : ″ , c ,a, b ) croissante : ', b , a , c )
4) Moy ← ( Note1+ Note2 + Note3 ) / 3 WRITELN ( ' donner la note d’’examen num 2 ' ) ;
Sinon ELSE
5) Min ← Note1 READLN (Note2) ;
Ecrire (″ les trois entiers en ordre WRITELN (' les trois entiers en ordre
Si(Note1>=Note2)ET(Note1>=Note3)ET WRITELN ( ' donner la note d’’examen num 3 ' ) ;
croissante : ″ , c ,b, a ) croissante : ', b , c , a ) ;
(Note2>=Note3) alors READLN (Note3) ;
Fin si END
Min ← Note3 Moy := ( Note1+ Note2 + Note3 ) / 3 ;
5) Fin CLASSEMENT_NBRE ELSE
Sinon Si(Note1>=Note2) ET (Note1>=Note3) ET Min := Note1 ;
BEGIN
(Note3>=Note2) alors IF(Note1>=Note2)AND(Note1>=Note3)AND
IF (a>=b) THEN
Min ← Note2 (Note2>=Note3) THEN
WRITELN (' les trois entiers en ordre
Fin si Min :=Note3
croissante : ', c , a , b )
6) Si ((Note1>=9) ET (Note2>=9) ET ELSE IF (Note1>=Note2) AND (Note1>=Note3)
ELSE
(Note3>=9) ) OU ( ( Moy >=10 ) ET ( Min >=8) ) AND (Note3>=Note2) THEN
WRITELN (' les trois entiers en ordre
alors Min :=Note2 ;
croissante : ', c , b , a ) ;
IF ((Note1>=9) AND (Note2>=9) AND
END ;
Ecrire (″ Admis ″ ) (Note3>=9) ) OR ( ( Moy >=10 ) AND ( Min >=8) )
END.
Sinon THEN
Ecrire (″ Refusé ″ )
Exercice 12 : WRITELN ( ' Admis ' )
Analyse du problème Fin si
Nom : DECISION ELSE
Résultat = DEC 7) Fin DECISION WRITELN ( ' Refusé ' ) ;
DEC = [ ] Si ( (Note1>=9) ET (Note2>=9) ET (Note3>=9) ) OU ( ( Moy >=10 ) ET ( Min >=8) ) alors END.
Ecrire (″ Admis ″ )
Sinon
Ecrire (″ Refusé ″ )
Exercice 13 :
Analyse du problème
Fin si
Nom : GARDE_ENFANTS
Min = [ Min ← Note1]
Résultat = Ecrire ( ″ Le montant à payer est : ″ , M )
M = [ ] Si (h2 < =21) alors
Si (Note1>=Note2) ET (Note1>=Note3) ET (Note2>=Note3) alors
M ← (h2-h1) * 1.250
Min ← Note3
Sinon Si (h1>=21) alors
Sinon Si (Note1>=Note2) ET (Note1>=Note3) ET (Note3>=Note2) alors
M ← (h2-h1) * 4.800
Min ← Note2
Sinon M ← ( 21-h1) * 1.250+( h2-21) * 4.800
Fin si
Fin si
Moy ← ( Note1+ Note2 + Note3 ) / 3
h1=donnée ("donner l’heure de départ ")
TDO
Objet Type / nature
xa, xb , ya ,yb ,r1,r2,d Réel
pos Chaine de caractère
Exercice 4 :
Série d’exercices Rédiger une analyse, un algorithme et un programme en PASCAL intitulé SOM_FACT qui permet de calculer
et d’afficher la somme des factorielles des chiffres d’un entier n donné (2 ≤ n ≤ 50).
(On donne aussi 0! = 1).
Exemple : Si n=13 alors 7 sera affiché (1! + 3 ! =7)
Les structures de
contrôle itératives Exercice 5 :
Rédiger une analyse, un algorithme et un programme en PASCAL intitulé TRIANGLE qui lit un entier positif
N est différent de 0 et affiche un triangle comme suit :
Exemple : * *
** **
Si N=3 on aura Si N=5 on aura ***
Exercice 1 : ***
Rédiger une analyse, un algorithme et un programme en PASCAL intitulé PUISSANCE permettant de saisir ****
un entier a et un entier b puis calculer et afficher le résultat de l’opération ″ a à la puissance b″. *****
Sachant que ab = a*a*……..*a (b fois)
Exercice 2 : Exercice 6 :
Rédiger une analyse, un algorithme et un programme en PASCAL intitulé CAL_SOM permettant de calculer la Rédiger une analyse, un algorithme et un programme en PASCAL intitulé CODAGE, qui permet de lire un
somme d’entier allant de 1 à N (5 =<N =<100). mot non vide, le coder caractère par caractère, an ajoutant 2 à la valeur du code utilisé pour représenter ce
caractère, enfin affiche le mot codé. (Ainsi la lettre a (dont le code SCII est 97) sera transformée en c (dont le
code ASCII est 99).
Exemple :
"INFO2007" sera transformée en "KPHQ4229" Le programme CODAGE affiche le message suivant: la
chaîne codée est : KPHQ4229
Exercice 3 :
Rédiger une analyse, un algorithme et un programme en PASCAL intitulé SOMME_CHIFFRES_PAIR, qui
permet de lire un entier N strictement positif, détermine et affiche l'entier S formé par la somme des chiffres
pairs qui figurent dans l'entier N.
Exemple: Exercice 7 :
Pour N=14276 la valeur de S est 4+2+6 = 12 Le programme SOMME_CHIFFRES_PAIR affichera le Rédiger une analyse, un algorithme et un programme en PASCAL intitulé SOMME_CHIFFRES, qui permet
résultat suivant : S=12 de lire une chaîne de caractères CH commençant obligatoirement par une lettre alphabétique majuscule (et
supposée composée par des lettres et des chiffres), détermine et affiche l'entier S formé par la somme des
chiffres qui figurent dans la chaîne CH.
Exemple :
Pour CH='Ali12abc26' la valeur de S est 1+2+2+6 = 11 Le programme SOMME_CHIFFRES affichera le
résultat suivant : S = 11
Exercice 8 : Exercice 11 :
Rédiger une analyse, un algorithme et un programme en PASCAL intitulé MAX_MIN permettant de chercher Rédiger une analyse, un algorithme et un programme en PASCAL intitulé EXISTE permettant de remplir un
le maximum et le minimum dans un tableau T d’entier de taille N (N saisie par l’utilisateur). tableau T avec N entiers lu au clavier, de lire un entier E et de vérifier sa présence dans ce tableau et d’afficher
son indice.
Exemple :
T 1 2 10 3 15 5 6 3
Si E = 10 l’ordinateur affiche 3 existe dans T à la position 2
Si E = 9 l’ordinateur affiche 9 n’existe pas dans T.
Exercice 9 :
Rédiger une analyse, un algorithme et un programme en PASCAL intitulé OCCURENCE permettant de
chercher l’occurrence d’un caractère C dans tableau de chaine de caractère.
Exercice 12 :
Rédiger une analyse, un algorithme et un programme en PASCAL intitulé PROD_SCALAIRE qui permet de
calculer et d’afficher le produit scalaire de deux tableaux A et B de n entiers positifs (n étant un entier compris
entre 5 et 50).
N.B : Le produit scalaire de deux tableaux A et B est donné par la formule suivante :
Exercice 10 :
n
Rédiger une analyse, un algorithme et un programme en PASCAL intitulé OCCURRENCE_X qui permet de
remplir un tableau T de N entiers, puis lire un entier X et afficher :
PS = ∑ A[i] * B[i]
i =1
- La position de première occurrence de X dans le tableau T.
- La position de dernière occurrence de X dans le tableau T.
- le nombre d’occurrence de X dans le tableau T.
Exemple : N=10, X=8
T 7 8 17 12 14 8 5 15 8 19
1 2 3 4 5 6 7 8 9 10
- La position de première occurrence de X dans T est : 2.
- La position de dernière occurrence de X dans T est : 9.
- Le nombre d’occurrence de X dans T est : 3.
Les structures de N= [ ]
Fin CAL_SOM
Répéter
N=donnée ( ″ Donner un entier N : ″ )
Jusqu’à N dans [ 5..100]
Fin CAL_SOM
Exercice 8 : Exercice 9 :
Analyse du problème Analyse du problème
Nom : MIN_MAX Nom : OCCURENCE
Résultat = Ecrire (″MIN =″ , min, ″MAX=″,max ) Résultat = Ecrire (″Le nombre d''ocurrence de ″ , c, ″dans T ″,nbr)
( min , max )= [ max ← t[1] , min ←t[1] ] pour i de 1 à n faire nbr = [ nbr ← 0] pour i de 1 à n faire
si t[ i ]< min alors ch ← t[ i ]
min ← t[i] l ← LONG (ch)
fin si pour j de 1 à l faire
si t[ i ]> min alors si ch[ j ] = c alors
max ← t[i] nbr ← nbr + 1
fin si fin si
fin pour fin pour
t=[ ] pour i de 1 à n faire fin pour
t[ i ] =donnée (″t[ ″, i , ″]=″ ) c=donnée (″Donner le caractère à chercher : ″)
Fin pour t=[ ] pour i de 1 à n faire
n=[ ] Répéter t[ i ] =donnée (″t[ ″, i , ″]=″ )
n=donnée (″Donner la taille du tableau :″) Fin pour
Jusqu’à n dans [ 2..100 ] n=[ ] Répéter
Fin MIN_MAX n=donnée (″Donner la taille du tableau :″)
TDO Jusqu’à n dans [ 2..100 ]
Objet Type/Nature Fin OCCURENCE
n , i , min , max Entier TDO
t Tableau de 100 entiers Objet Type/Nature
n , i , j , nbr , l Entier
Algorithme Traduction en PASCAL t Tableau de 100 entiers
0) Début MIN_MAX PROGRAM MIN_MAX ; c Caractère
1) Répéter USES WINCRT; ch Chaine de caractère
Ecrire (″Donner la taille du tableau :″ ) VAR n , i , min , max :INTEGER;
Lire (n) t:ARRAY[1..100] OF INTEGER; Algorithme Traduction en PASCAL
Jusqu’à n dans [ 2..100 ] BEGIN 0) Début OCCURENCE PROGRAM OCCURENCE ;
2) pour i de 1 à n faire REPEAT 1) Répéter USES WINCRT;
Ecrire ( ″t[ ″, i , ″]=″ ) WRITE ('Donner la taille du tableau :'); Ecrire (″Donner la taille du tableau :″ ) VAR n , i , j , nbr , l :INTEGER;
Lire (t[i]) READLN(n); Lire (n) ch : STRING;
fin pour UNTIL n IN [2..100]; Jusqu’à n dans [ 2..100 ] c: CHAR;
3) max ← t[1] min ←t[1] FOR i:=1 TO n DO 2) pour i de 1 à n faire t : ARRAY[1..100] OF STRING ;
pour i de 1 à n faire BEGIN Ecrire ( ″t[ ″, i , ″]=″ ) BEGIN
si t[ i ]< min alors WRITE('t[',i,']='); Lire (t[i]) REPEAT
min ← t[i] READLN(t[i]); fin pour WRITE ('Donner la taille du tableau :');
fin si END; 3) Ecrire (″Donner le caractère à chercher : ″ ) READLN(n);
si t[ i ]> min alors min:=t[1] ; max:=t[1]; Lire (c) UNTIL n IN [2..100];
max ← t[i] FOR i:=1 TO n DO 4) nbr ← 0 FOR i:=1 TO n DO
fin si BEGIN pour i de 1 à n faire BEGIN
fin pour IF t[i] < min THEN min:=t[i]; ch ← t[ i ] WRITE('t[',i,']=');
4) Ecrire (″MIN =″ , min, ″MAX=″,max ) IF t[i] > max THEN max:=t[i]; l ← LONG (ch) READLN(t[i]);
5) Fin MIN_MAX END; pour j de 1 à l faire END;
WRITELN('MIN = ' , min,' MAX = ',max); si ch[ j ] = c alors WRITE ('Donner le caractère à chercher : ');
END. nbr ← nbr + 1 READLN(c);
fin si nbr:=0;
fin pour FOR i:=1 TO n DO
fin pour BEGIN
5) Ecrire (″Le nombre d''ocurrence de ″ , c, ″dans T ch:= t[i] ; l:=LENGTH(ch);
″,nbr) FOR j :=1 TO l DO
TDO TDO
Objet Type/Nature Objet Type/Nature
n,e,i Entier n,i Entier
t Tableau de 50 entiers a,b Tableau de 50 entiers
s Entier long
Algorithme Traduction en PASCAL
0) Début EXISTE PROGRAM EXISTE; Algorithme Traduction en PASCAL
1) Répéter USES WINCRT; 0) Début PRODUIT_SCALAIRE PROGRAM PRODUIT_SCALAIRE;
Ecrire (″Donner la taille du tableau :″ ) VAR t:ARRAY[1..50]OF INTEGER; 1) Répéter USES WINCRT;
Lire (n) n,e,i: INTEGER; Ecrire (″Donner la taille du tableau :″ ) VAR a,b :ARRAY[1..50]OF INTEGER;
Jusqu’à n dans [ 2..50 ] BEGIN Lire (n) n,i :INTEGER;
2) pour i de 1 à n faire REPEAT Jusqu’à n dans [ 5..50 ] s :LONGINT;
Ecrire ( ″t[ ″, i , ″]=″ ) WRITELN ('Donner la taille du tableau'); 2) pour i de 1 à n faire BEGIN
Lire (t[i]) READLN(n); Ecrire (″a[ ″, i , ″]=″ ) REPEAT
fin pour UNTIL n IN [2..50] ; Lire (a[i]) WRITELN ('Donner la taille du tableau');
3) Ecrire ( ″E=″ ) FOR i:=1 TO n DO fin pour READLN(n);
Lire (e) BEGIN 3) pour i de 1 à n faire UNTIL n IN [5..50] ;
4) i ← 0 WRITE('t[',i,']='); Ecrire (″b[ ″, i , ″]=″ ) FOR i:=1 TO n DO
Répéter READLN(t[i]); Lire (b[i]) BEGIN
i ← i+1 END; fin pour WRITE ('a[',i,']=');
Jusqu’à ( i=n) OU (t[ i ]=e) WRITELN('E ='); 4) s ← 0 READLN(a[i]);
5) si(t[ i ] =e) alors READLN(e); pour i de 1 à n faire END;
Ecrire (e, ″ existe dans T à la position ″ , i ) i:=0; s ← s+a[ i ]*b[ i ] WRITELN;
Sinon Ecrire (e, ″ n''existe pas dans T ″ ) REPEAT Fin pour FOR i:=1 TO n DO
Fin si i:=i+1; 5) Ecrire (″ Le produit scalaire est égale à ″,s ) BEGIN
6) Fin EXISTE UNTIL ( i=n) OR ( t[i] = e); 6) Fin PRODUIT_SCALAIRE WRITE ('b[',i,']=');
IF ( t[i] = e ) THEN READLN(b[i]);
WRITELN ( e, ' existe dans T à la position ' ,i ) END;
ELSE s:=0;
WRITELN ( e ,' n''existe pas dans T '); FOR i:=1 TO n DO s:=s+a[i]*b[i];
END. WRITELN (' Le produit scalaire est égale à ' , s);
END.
Exercice 12 :
Analyse du problème
Nom : PRODUIT_SCALAIRE
Résultat = Ecrire ( ″ Le produit scalaire est égale à ″,s )
s =[ s ← 0 ] pour i de 1 à n faire
s ← s+a[ i ]*b[ i ]
Fin pour
b=[ ] pour i de 1 à n faire
b[ i ]=donnée( ″b[ ″, i , ″]=″ )
fin pour
a=[ ] pour i de 1 à n faire
a[ i ]=donnée( ″a[ ″, i , ″]=″ )
fin pour
n=[ ] Répéter
n=donnée (″Donner la taille du tableau :″)
Jusqu’à n dans [ 5..50 ]
Fin PRODUIT_SCALAIRE
Exercice 4 :
Série d’exercices On appelle poids d’un mot la somme des produits de la position de chaque voyelle contenue dans le mot par
son rang dans l’alphabet français. Une lettre a le même rang qu’elle soit écrite en majuscule ou en minuscule.
Rédiger une analyse, un algorithme et un programme en PASCAL intitulé POIDS qui calcule et affiche le
poids d’un mot donné.
Les structures de Exemple : Le mot « Epreuve » a pour poids 165 car : (1*5) + (4*5) + (5*21) + (7*5) = 165
Exercice 2 :
Rédiger une analyse, un algorithme et un programme en PASCAL intitulé NOMBRE_AMIS qui permet de
lire deux entiers X et Y strictement positifs, affiche "X et Y sont AMIS" ou "X et Y ne sont pas AMIS".
X et Y sont dits nombres AMIS si SX = Y et SY = X, avec :
- SX est la somme des diviseurs de X excepté lui-même,
- SY est la somme des diviseurs de Y excepté lui-même
Exercice 7 :
Rédiger une analyse, un algorithme et un programme en PASCAL intitulé SYMETRIE permettant de saisir les
éléments d'un tableau T de N entiers de trois chiffres chacun puis de chercher et d'afficher les nombres
symétriques de ce tableau.
Exemple :
Exercice 3 :
Rédiger une analyse, un algorithme et un programme en PASCAL intitulé SOM_FACT qui permet de calculer Pour N=7
et d’afficher la somme des factorielles des chiffres d’un entier n donné (2 ≤ n ≤ 50). T 424 715 133 121 454 616 566
(On donne aussi 0! = 1).
Exemple : Si n=13 alors 7 sera affiché (1! + 3 ! =7) Le programme affichera : les nombres symétriques de T sont: 424, 121, 454 et 616
Exercice 9 :
Rédiger une analyse, un algorithme et un programme en PASCAL intitulé PROD_SCALAIRE qui permet de
calculer et d’afficher le produit scalaire de deux tableaux A et B de n entiers positifs (n étant un entier compris
entre 5 et 50).
N.B : Le produit scalaire de deux tableaux A et B est donné par la formule suivante :
n
PS = ∑ A[i] * B[i]
i =1
Exercice 8 :
Rédiger une analyse, un algorithme et un programme en PASCAL intitulé AFFICHE_CHAINE permettant :
De remplir un tableau T de n chaînes de caractères (2<n<20). Chaque chaîne doit avoir un nombre de
caractères supérieur ou égal à son indice (i) dans le tableau.
D’afficher pour chaque élément T[ i ] du tableau, les i premiers caractères de la chaîne.
TDO TDO
Objet Type/Nature Objet Type/Nature
sx , sy , i , x , y Entier n , x , y , factx , facty , i Entier
Fin SOM_FACT
Exercice 7 : Exercice 8 :
Analyse du problème Analyse du problème
Nom : SYMETRIE Nom : AFFICHE_TABLEAU
Résultat = Aff_sym Résultat = Affichage
Aff_sym =[ ] pour i de 1 à n faire Affichage =[ ] pour i de 1 à n faire
a← t[i] DIV 100 Ecrire ( SOUS_CHAINE(t[i],1,i) )
b← t[i] MOD10 Fin pour
si ( a=b) alors t=[ ] pour i de 1 à n faire
Ecrire (t[i] ) Répéter
Fin si t[ i ]=donnée( ″t[ ″, i , ″]=″ )
Fin pour Jusqu’à ( LONG(t[i])>=i )
t=[ ] pour i de 1 à n faire fin pour
Répéter n=[ ] Répéter
t[ i ]=donnée( ″t[ ″, i , ″]=″ ) n=donnée (″Donner la taille du tableau :″)
Jusqu’à ( t[i]>=100) ET ( t[i]<=999) Jusqu’à n dans [ 2..20 ]
fin pour Fin AFFICHE_TABLEAU
n=[ ] Répéter TDO
n=donnée (″Donner la taille du tableau :″) Objet Type/Nature
Jusqu’à n dans [ 2..50 ] n,i Entier
Fin SYMETRIE t Tableau de 20 chaine
TDO de caractère
Objet Type/Nature
n,a,b,i Entier Algorithme Traduction en PASCAL
t Tableau de 50 entiers 0) Début AFFICHE_TABLEAU PROGRAM AFFICHE_TABLEAU;
1) Répéter USES WINCRT;
Algorithme Traduction en PASCAL Ecrire (″Donner la taille du tableau :″ ) VAR t: ARRAY[1..20]OF STRING ;
0) Début SYMETRIE PROGRAM SYMETRIE; Lire (n) n,i: INTEGER;
1) Répéter USES WINCRT; Jusqu’à n dans [ 2..20 ] BEGIN
Ecrire (″Donner la taille du tableau :″ ) VAR t :ARRAY[1..50] OF INTEGER; 2) pour i de 1 à n faire REPEAT
Lire (n) n,i,a,b:INTEGER; Répéter WRITELN ('Donner la taille du tableau');
Jusqu’à n dans [ 2..50 ] BEGIN Ecrire ( ″t[ ″, i , ″]=″ ) READLN(n);
2) pour i de 1 à n faire REPEAT Lire (t[i]) UNTIL n IN [2..20] ;
Répéter WRITELN ('Donner la taille du tableau'); Jusqu’à ( LONG(t[i])>=i ) FOR i:=1 TO n DO
Ecrire ( ″t[ ″, i , ″]=″ ) READLN(n); fin pour BEGIN
Lire (t[i]) UNTIL n IN [2..50] ; 3) pour i de 1 à n faire REPEAT
Jusqu’à ( t[i]>=100) ET ( t[i]<=999) FOR i:=1 TO n DO Ecrire (SOUS_CHAINE(t[i],1,i) ) WRITE('t[',i,']=');
fin pour BEGIN Fin pour READLN(t[i]);
3) pour i de 1 à n faire REPEAT 4) Fin AFFICHE_TABLEAU UNTIL LENGTH(t[i])>=i ;
a← t[i] DIV 100 WRITE('t[',i,']='); END;
b← t[i] MOD10 READLN(t[i]); FOR i:=1 TO n DO WRITELN(COPY(t[i],1,i));
si ( a=b) alors UNTIL (t[i]>=100) AND (t[i]<=999); END.
Ecrire (t[i] ) END;
Fin si WRITE ('Les nombres symétriques sont : ') ;
Fin pour FOR i:=1 TO n DO
4) Fin SYMETRIE BEGIN
a:=t[i] DIV 100;
b:=t[i] MOD 10;
IF (a=b) THEN WRITE(t[i]:4);
END; END.
Exercice 9 :
Analyse du problème
Nom : PRODUIT_SCALAIRE
Résultat = Ecrire ( ″ Le produit scalaire est égale à ″,s )
s =[ s ← 0 ] pour i de 1 à n faire
s ← s+a[ i ]*b[ i ]
Fin pour
b=[ ] pour i de 1 à n faire
b[ i ]=donnée( ″b[ ″, i , ″]=″ )
fin pour
a=[ ] pour i de 1 à n faire
a[ i ]=donnée( ″a[ ″, i , ″]=″ )
fin pour
n=[ ] Répéter
n=donnée (″Donner la taille du tableau :″)
Jusqu’à n dans [ 5..50 ]
Fin PRODUIT_SCALAIRE
TDO
Objet Type/Nature
n,i Entier
a,b Tableau de 50 entiers
s Entier long
Exercice 3 :
Série d’exercices Soit un tableau T de 20 entiers positifs. Ecrire un programme en PASCAL intitulé POSITION qui permet
d’afficher les éléments de T compris entre deux positions P1 et P2, leur moyenne arithmétique, la valeur
maximale et la valeur minimale contenues dans cet intervalle.
On donne 1 ≤ P1 < P2 ≤ 20.
Exercice 5 :
Travail demandé : Deux entiers naturels strictement positifs m et n sont dits nombre amis si et seulement si :
• la somme des diviseurs de m sauf lui-même est égale à n
• et la somme des diviseurs de n sauf lui-même est égale à m.
1) Analyser ces problèmes en le décomposant en modules.
2) Analyser chacun de ces modules. Exemple :
3) En déduire l’algorithme de résolution relatif à chacun de ces modules ainsi que celui du 220 et 284 sont deux nombres amis. En effet :
programme principal. D284 = {1, 2, 4, 71, 142, 284}
D220 = {1, 2, 4, 5, 10, 11, 20, 22, 44, 55, 110, 220}
D284 et D220 sont respectivement les ensembles de tous les diviseurs de 284 et de 220.
Exercice 1 : 284 = 1 + 2 + 4 + 5 + 10 + 11 + 20 + 22 + 44 + 55 + 110
Ecrire un programme en PASCAL intitulé TRIANGLE qui saisit une chaîne de caractères de longueur 220 = 1 + 2 + 4 + 71 + 142
minimal 3 et l’affiche sous la forme d’un triangle comme indiqué ci-dessous. Ecrire un programme en PASCAL intitulé AMIS qui permet de déterminer puis d’afficher si deux entiers
Exemple : naturels donnés m et n sont amis ou non.
Si la chaîne saisie est "INTERNET", on aura :
I
IN
Exercice 6 :
INT Ecrire un programme en PASCAL intitulé BOUM qui réalise le traitement suivant :
INTE - Choisir un entier n de l’intervalle [100, 500] et un entier m de l’intervalle [10,99]
INTER - Afficher tous les entiers de l’intervalle [1, m] en remplaçant par le caractère "*" tous les diviseurs de n ainsi
INTERN que tous les entiers comportant dans leurs écritures le chiffre des unités de n.
INTERNE Exemple d’exécution :
INTERNET Si n = 100 et m = 20 alors la liste suivante sera affichée :
* * 3 * * 6 7 8 9 * 11 12 13 14 15 16 17 18 19 *
Exercice 7 :
Exercice 2 : Ecrire un programme en PASCAL intitulé COMPOSE qui permet de saisir un entier positif N, composé de
Ecrire un programme en PASCAL intitulé AFFICHAGE permettant de lire un mot intitulé CHM composé au trois chiffres , de déterminer et d’afficher tous les nombres qui peuvent être formés par les chiffres de N, ainsi
moins de 5 caractères et d’afficher les chaînes de caractères suivantes : que le plus petit et le plus grand de ces nombres
• La chaîne formée par le premier et le dernier caractère de CHM Exemple :
• La chaîne formée par les deux premiers et les deux derniers caractères de CHM Pour N = 427, le programme affichera :
• Etc. Les nombres formés par les chiffres de 427 sont : 427, 472, 724, 742, 247, 274
Exemple : Si la chaîne CHM contient "TURBO" alors le programme affichera : Le plus petit nombre est 247
TO Le plus grand nombre est 742
TUBO
TURRBO
TURBURBO
TURBOTURBO
TDOL
TDOL TDO
Objet Type/Nature Objet Type/Nature
i entier P1, P2 entier
ch1 chaine de caractère T TAB
afficher procédure
Algorithme de la procédure afficher : remplir procédure
0) DEF PROC afficher ( ch : chaine de caractère ) lire_entier procédure
1) ch1←″ ″
pour i de 1 à LONG (ch) faire Algorithme du programme principal :
ch1 ← SOUS_CHAINE (ch,1,i) + SOUS_CHAINE (ch , LONG (ch) - i + 1, i ) 0) DÉBUT POSITION
Ecrire (ch1) 1) PROC remplir (T)
fin pour 2) PROC lire_entier (P1,P2)
2) Fin afficher 3) PROC afficher (T, P1, P2)
4) Fin POSITION
Traduction en PASCAL
PROGRAM AFFICHAGE; Analyse de la procédure lire_entier :
USES WINCRT; DEF PROC lire_entier (var x ,y : Entier)
VAR CHM : STRING; Résultat = (x,y)
PROCEDURE lire_chaine (VAR ch : STRING); (x,y) = [ ] Répéter
BEGIN x ,y = donnée (″Tapez les deux Positions″)
REPEAT Jusqu’à ((x DANS [1..y-1]) ET (y <= 20))
WRITELN ('Tapez une chaîne'); Fin lire_entier
READLN (ch);
Exercice 5 : TDOL
Analyse du programme principal : Objet Type/Nature
Nom : AMIS i,s entier
Résultat = affichage
affichage=[ ] si ((FN somme_div(m) - m) = n) ET ((FN somme_div(n) - n ) = m) alors Algorithme de la fonction somme_div :
Ecrire (m,″ et ″,n,″ sont deux nombres amis″ ) 0) DEF FN somme_div (x: entier) :entier
sinon 1) s ← 1
Ecrire (m,″ et ″,n,″ ne sont pas deux nombres amis″ ) pour i de 2 à x faire
fin si si (x MOD i) alors
m= PROC lire_entier (m) s← s+i
n = PROC lire_entier (n) fin si
Fin AMIS fin pour
TDO 2) somme_div ← s
Objet Type/Nature 3) Fin somme_div
m,n entier
somme_div fonction Traduction en PASCAL
lire_entier procédure PROGRAM AMIS;
Algorithme du programme principal : USES WINCRT;
0) DÉBUT AMIS VAR m,n : INTEGER;
1) PROC lire_entier (n) PROCEDURE lire_entier (VAR x :INTEGER);
2) PROC lire_entier (m) BEGIN
3) si ((FN somme_div(m) - m) = n) ET ((FN somme_div(n) - n ) = m) alors REPEAT
Ecrire (m,″ et ″,n,″ sont deux nombres amis″ ) WRITELN ('Donnez un entier strictement Positif'); READLN(x);
sinon UNTIL (x > 0);
Ecrire (m,″ et ″,n,″ ne sont pas deux nombres amis″ ) END;
fin si FUNCTION somme_div (x : INTEGER): INTEGER;
4) Fin AMIS VAR i,s : INTEGER;
Analyse de la procédure lire_entier : BEGIN
DEF PROC lire_entier (var x : entier) s:=1;
Résultat = x FOR i:= 2 TO x DO
x=[ ] Répéter IF (x MOD i) = 0 THEN s:= s + i;
x= donnée (″Donnez un entier strictement Positif″) somme_div := s;
Jusqu’à (x > 0) END;
Fin lire_entier BEGIN
Algorithme de la procédure lire_entier : lire_entier(m);
0) DEF PROC lire_entier (var x : entier) lire_entier(n);
1) Répéter IF ((somme_div(m) - m) = n) AND ((somme_div(n) - n ) = m) THEN
Ecrire (″Donnez un entier strictement Positif″) WRITELN (m,' et ',n,' sont deux nombres amis')
Lire(x) ELSE WRITELN (m,' et ',n,' ne sont pas deux nombres amis');
Jusqu’à (x > 0) END.
2) Fin lire_entier
Analyse de la fonction somme_div :
DEF FN somme_div (x : entier) :entier
Résultat = somme_div
somme_div ← s
s =[ s ← 1] pour i de 2 à x faire
si (x MOD i) alors
s← s+i
fin si
fin pour
Fin somme_div
Exercice 4 :
Série d’exercices Soit T un tableau de N éléments (2<N<200) de type caractère. Ecrire un programme en PASCAL intitulé
EXISTANCE permettant de vérifier l’existence dans le tableau T d’un certain nombre de mots saisis dans un
tableau Tm de P éléments (2<P<20).
T L
BAC
B S
Canne
u j
Sujet
e t a B A C a n n e d
Remarques :
1. Les caractères de la chaîne recherchée doivent être adjacents dans le tableau T et non dispersés.
2. on remarque que les mots BAC, Canne et Sujet figurent dans le tableau T.
Travail demandé :
Exercice 5 :
1) Analyser ces problèmes en le décomposant en modules. On appelle moyenne olympique d’un ensemble de nombres la moyenne arithmétique de tous les nombres de cet
2) Analyser chacun de ces modules. ensemble sauf le plus petit et le plus grand.
3) En déduire l’algorithme de résolution relatif à chacun de ces modules ainsi que celui du Ecrire un programme en PASCAL intitulé OLYMPIQUE permettant de saisir un tableau de N réels (5 ≤ N ≤
programme principal. 20) distincts et d’afficher la moyenne olympique.
Exercice 1 : Exercice 6 :
Ecrire un programme en PASCAL intitulé FACTEURS_PREMIERS permettant de décomposer un entier N Soit T un tableau de n entiers (2 ≤ n ≤ 20). Ecrire un programme en PASCAL intitulé SEQUENCE qui saisit
donné (2 ≤ N ≤ 100) en produit de facteurs premiers et d’afficher N et le produit de ses facteurs trouvés. n et T puis affiche la valeur maximale V_max et la valeur minimale V_min d’une séquence de T allant de i à j.
Exemple : Si N = 60 Alors on affiche 60 = 2 * 2 * 3 * 5 (i et j sont deux entiers donnés vérifiant la condition i ≤ j ≤ n).
Exercice 2 : Exercice 7 :
Soit le tableau T suivant : Ecrire un programme en PASCAL intitulé DIVISEURS_MULTIPLES qui permet de déterminer et
d’afficher tous les diviseurs suivis de tous les multiples d’un entier p donné, dans une partie d’un tableau T de n
10 7 9 7 10 6 7 4 8 8 entiers donnés. Cette partie est délimitée par deux indices ind_inf et ind_sup. Avec (0 < ind_inf < ind_sup ≤
n ≤ 15)
Pour chaque élément de T on ne garde que sa première occurrence et on remplace les autres par 0. Exemple :
10 7 9 0 0 6 0 4 8 0 25 32 43 4 32 72 80 15 24 2 48 56 10 14
1 2 3 4 5 6 7 8 9 10 11 12 13 14
Pour regrouper les éléments restant au début du tableau T.
Pour n = 14, p = 8, ind_inf = 3 et ind_sup = 11, le programme affichera :
10 7 9 6 4 8 0 0 0 0 Les diviseurs de 8 sont : 4 2
Les multiples de 8 sont : 32 72 80 24 48
Ecrire un programme en PASCAL intitulé ELEMENTS_DIFFERENTS qui fait le traitement ci-dessus pour
un tableau T de n (2 ≤ n ≤ 20) entiers positifs non nuls et détermine et affiche le nombre d’éléments différents
de T.
Exercice 3 :
Soit un tableau T de 20 entiers positifs. Ecrire un programme en PASCAL intitulé POSITION qui permet
d’afficher les éléments de T compris entre deux positions P1 et P2, leur moyenne arithmétique, la valeur
maximale et la valeur minimale contenues dans cet intervalle.
On donne 1 ≤ P1 < P2 ≤ 20.
BEGIN REPEAT
WRITELN ('Donnez la valeur de l"éléments N° ',i); WRITELN ('Donnez la taille du tableau');
READLN (V[i]); READLN (x);
END; UNTIL ( x IN [1..15]);
END; END;
FUNCTION lire_entier (x,y : INTEGER):INTEGER;
VAR z : INTEGER; PROCEDURE remplir (VAR T:TAB; n:INTEGER);
BEGIN VAR i : INTEGER;
REPEAT BEGIN
WRITELN ('Donnez un entier compris entre ',x,' et ',y); FOR i := 1 TO n DO
READLN (z); BEGIN
UNTIL (z IN [x..y]); WRITELN ('Donnez la valeur de l"élément N° ', i);
lire_entier := z; READLN (T[i]);
END; END;
FUNCTION max ( V: TAB; x,y: INTEGER):INTEGER; END;
VAR i, Vmax :INTEGER;
BEGIN FUNCTION diviseur (x,y:INTEGER):BOOLEAN;
Vmax := V[x]; BEGIN
FOR i:= x + 1 TO y DO diviseur := FALSE;
IF Vmax < V[i] THEN Vmax := V[i]; IF (y MOD x) = 0 THEN diviseur := TRUE;
max := Vmax; END;
END; BEGIN
FUNCTION min (V:TAB;x,y:INTEGER):INTEGER; lire_entier (n);
VAR i,Vmin:INTEGER; remplir (T,n);
BEGIN REPEAT
Vmin := V[x]; WRITELN ('Donnez l"indice supérieur');
FOR i:= x + 1 TO y DO READLN (ind_sup);
IF Vmin > V[i] THEN Vmin := V[i]; UNTIL ( ind_sup IN [2..n]);
min := Vmin; REPEAT
END; WRITELN ('Donnez l"indice inférieur');
BEGIN READLN (ind_inf);
lire_n (n); UNTIL (ind_inf in [1..ind_sup-1]);
remplir (T,n); WRITELN ('Tapez l"entier qu"on cherche ces diviseurs et multiples');
i:=lire_entier (1,n); READLN (p);
j:=lire_entier (i,n); FOR i:= ind_inf TO ind_sup DO
V_max := max (T,i,j); IF T[i] < p THEN
V_min := min (T,i,j); BEGIN
WRITELN ('La valeur maximal dans cet intervalle = ',V_max, 'La valeur minimal dans cet intervalle = IF diviseur(T[i],p) THEN
',V_min); BEGIN
END. STR (T[i],ch);
diviseurs := diviseurs + ch + ' ';
END;
Exercice 7 : END
Traduction en PASCAL ELSE
PROGRAM DIVISEURS_MULTIPLES; IF diviseur (p,T[i]) THEN
USES WINCRT; BEGIN
TYPE TAB = ARRAY [1..15] OF INTEGER; STR (T[i],ch);
VAR ind_inf,ind_sup,n,p,i :INTEGER; multiples := multiples + ch + ' ';
T:TAB; END;
diviseurs,multiples,ch: STRING ; WRITELN ('Les diviseurs de ',p,' sont : ',diviseurs);
WRITELN ('Les multiples de ',p,' sont : ',multiples);
PROCEDURE lire_entier (VAR x:INTEGER); END.
BEGIN
Exercice 3 :
Série d’exercices On veut écrire un programme intitulé TRI qui permet de remplir et trier par ordre décroissant les éléments d’un
tableau A de N entiers positifs dans un nouveau tableau B de même dimension. N étant un entier vérifiant
5<=N<=25.
On utilisera la démarche suivante :
Exercice 1 :
On veut écrire un programme intitulé CHERCHE qui permet de chercher un caractère C dans un tableau T de
taille N (N saisie par l’utilisateur). La méthode de recherche à utiliser est la recherche séquentielle.
Travail demandé :
- Décomposez le problème en modules.
- Analysez chaque modules et en déduire les algorithmes correspondantes.
Exercice 2 :
On a vu une méthode de recherche qu’on appelle la recherche séquentielle. Une autre technique de recherche en
table est la recherche dichotomique et qui s’applique aux tableaux triés.
Supposons que la table des noms soit triée en ordre alphabétique (comme l’annuaire des PPT). Au lieu de
rechercher séquentiellement on compare la clé à chercher au nom qui se trouve au milieu de la table des noms.
Si c’est la même, on retourne le numéro de téléphone du milieu, sinon on recommence sur la première moitié
(ou la deuxième) si le nom recherché est plus petit (ou plus grand) que le nom rangé au milieu de la table.
On veut écrire un programme intitulé RECHERCHE qui permet de chercher et déterminer le numéro d’une
personne X dans l’annuaire des PPT de taille N (5<=N<=50). Si X n’existe pas le numéro retourné =-1.
Exemple :
Nom Tel
Ali 71256892
Lamia 72365489
Mouna 71457893
Mounir 73569742
Salah 75125487
Ramzi 77458215
Yacine 74586895
Zied 76156456
Travail demandé :
- Décomposez le problème en modules.
- Analysez chaque modules et en déduire les algorithmes correspondantes.
TDO
d’exercices Objet
n,i
C
Type/Nature
Entier
Caractère
Message Chaine
Traduction en PASCAL
0) Début CHERCHE PROGRAM CHERCHE ;
de recherche 1) Répéter
Ecrire (″Donner la taille du tableau :″ )
Lire (n)
USES WINCRT;
TYPE
TAB = ARRAY[1..100]OF CHAR ;
Jusqu’à n dans [ 2..100 ] VAR T: TAB ;
2) pour i de 1 à n faire n,i :INTEGER ;
Ecrire ( ″T[ ″, i , ″]=″ ) C : CHAR ;
Exercice 1 : Lire (T[i]) Message : STRING ;
fin pour BEGIN
Exemple : Message ← ″N’existe pas dans ″ et C=″Y″
3) Ecrire ( ″C =″ ) REPEAT
T[1] <>C Message ← ″N’existe pas dans″ i=1
Lire (C) WRITELN ('Donner la taille du tableau');
4) Message ← ″N’existe pas dans T″, i ← 1 READLN(n);
F H Y K P
Tant que ( i<=n) ET ( T[ i ]<>C) Faire UNTIL n IN [2..100] ;
T[2] <>C Message ← ″N’existe pas dans″ i=2
i ← i+1 FOR i:=1 TO n DO
Fin Tant que BEGIN
F H Y K P
Si i<=n alors WRITE('T[',i,']=');
T[3] = C Message ← ″existe dans T″ i=3
Message ← ″existe dans T″ READLN(T[i]);
Fin si END;
F H Y K P
5) Ecrire (C, Message) WRITELN('C=');
Le parcours du tableau s’arrête ici puisque on a trouvé ″Y″ dans T. si ″Y″ n’existe pas dans T alors on sort du
6) Fin CHERCHE READLN(C);
parcours avec i = N+1.
i:=1;
Message := ' N''existe pas dans T' ;
Analyse du problème WHILE ( i<=n) AND ( T[ i ]<>C) DO
Nom : CHERCHE BEGIN
Résultat = Ecrire (C, Message) i:=i+1;
Message = [Message ← ″N’existe pas dans T″, i ← 1] Tant que ( i<=n) ET ( T[ i ]<>C) Faire END;
i ← i+1 IF ( i<=n) THEN
Fin Tant que Message := ' existe dans T ' ;
Si i<=n alors WRITELN (C, Message) ;
Message ← ″existe dans T″ END.
Fin si
C=donnée (″C =″)
t=[ ] pour i de 1 à n faire
T[ i ]=donnée( ″T[ ″, i , ″]=″ )
fin pour
n=[ ] Répéter
n=donnée (″Donner la taille du tableau :″)
Jusqu’à n dans [ 2..100 ]
Fin CHERCHE
Exercice 2 : fin si
jusqu’à ( X = nom [ i ] ) OU ( g > d )
Exemple : Pour X =″Ramzi″ on obtient Num = 77458215 si X = nom [ i ] alors
On a d=10 et g =1 num ← tel [ i ]
Itération 1 : sinon
i ← ( g + d ) DIV 2 num ← -1
i= 5 fin si
(X < nom [ i ] ) = FAUX donc X existe dans la partie de 6 à 10 ; g ← 6 et d=10 ; X <> nom [ i ] . X=donnée (″X =″)
( nom , tel )=[ ] pour j de 1 à N faire
N Nom Tel Observations nom [ j ]=donnée( ″nom [ ″, j , ″]=″ )
1 Ali 71256892 tel [ j ]=donnée( ″tel [ ″, j , ″]=″ )
2 Lamia 72365489 fin pour
N=[ ] Répéter
3 Mouna 71457893
N=donnée (″Donner la taille du tableau :″)
4 Mounir 73569742
Jusqu’à N dans [ 5..50 ]
5 Nedia 78548971 i = 5 ; x < nom [ 5 ] ; on cherche dans la partie de 6 à 10 Fin RECHERCHE
6 Salah 75125487 Tableau de déclaration des nouveaux types
7 Ramzi 77458215 Type
8 Tarak 71548981 TAB1 = tableau de 100 chaines.
9 Yacine 74586895 TAB2 = tableau de 100 entier long.
10 Zied 76156456
On a d=10 et g =6 TDO
Itération 2 : Objet Type/Nature
i ← ( g + d ) DIV 2 N , g, d , i , j Entier
i= 8 num Entier long
(X < nom [ i ] ) = VRAI donc X existe dans la partie de 6 à 7 ; g = 6 et d←7 ; X <> nom [ i ] .
X Chaine
nom TAB1
N Nom Tel Observations
tel TAB2
6 Salah 75125487
7 Ramzi 77458215
8 Tarak 71548981 i = 8 ; x < nom [ 8 ] ; on cherche dans la partie de 6 à 7 Algorithme Traduction en PASCAL
9 Yacine 74586895 0) Début RECHERCHE PROGRAM RECHERCHE ;
10 Zied 76156456 1) Répéter USES WINCRT;
Ecrire (″Donner la taille du tableau :″ ) TYPE
On a d=7 et g =6 Lire (N) TAB1 = ARRAY[1..100]OF STRING ;
Itération 3 : Jusqu’à N dans [ 5..50 ] TAB2 = ARRAY[1..100]OF LONGINT ;
i ← ( g + d ) DIV 2 2) pour j de 1 à N faire VAR nom : TAB1 ; tel :TAB2 ;
i= 6 Ecrire ( ″nom [ ″, j , ″]=″ ) N , g, d , i , j :INTEGER ;
(X < nom [ i ] ) = FAUX donc X existe dans la partie de 7 à 7 ; g ← 7 et d=7 ; X = nom [ i ] . Lire (nom[ j ]) num : LONGINT ;
Ecrire ( ″tel [ ″, j , ″]=″ ) X : STRING ;
Lire (tel[ j ]) BEGIN
N Nom Tel Observations
fin pour REPEAT
6 Salah 75125487 i = 6 ; x > nom [ 6 ] ; on cherche dans la partie de 7 à 7
3) Ecrire ( ″X =″ ) WRITELN ('Donner la taille du tableau');
7 Ramzi 77458215
Lire (X) READLN(N);
4) g ← 1, d ← N UNTIL N IN [5..50] ;
Analyse du problème Répéter FOR j:=1 TO N DO
Nom : RECHERCHE i ← ( g+d ) DIV 2 BEGIN
Résultat = Ecrire (″Le numéro de la personne″ , X , ″ = ″ , num) si X <nom [ i ] alors WRITE ('nom[',j,']=');
num = [ g ← 1, d ← N ] Répéter d ← i -1 READLN(nom[ j ]);
i ← ( g+d ) DIV 2 sinon WRITE ('tel[',j,']=');
si X <nom [ i ] alors g ← i+1 READLN(tel[ j ]);
d ← i -1 fin si END;
sinon jusqu’à ( X = nom [ i ] ) OU ( g > d ) WRITELN('X =');
g ← i+1
UNTIL (m=-1) ;
END ;
BEGIN
Taille (N) ;
Remplir (N , A) ;
Tri_tab (N , A , B) ;
Affiche (N , B) ;
END.
Travail demandé :
La suite de Syracuse :
Les algorithmes A un entier n strictement positif on associe n/2 si n est pair et 3n+1 si n est impair.
En réappliquant cette transformation à l'entier obtenu, on définit un algorithme dit de Syracuse.
Bien qu'à ce jour personne n'en ait trouvé de démonstration, il semble que pour tout entier strictement positif
de départ on finisse toujours par arriver à 1.
On veut écrire un programme intitulé SYRACUSE permettant de lire une valeur de départ proposée par
l'utilisateur, afficher la liste des entiers obtenus jusqu'à 1, ainsi que le nombre de fois qu'il est nécessaire
d'appliquer la transformation pour y arriver.
Exercice 1 :
On veut écrire un programme intitulé SOMPROD permettant de calculer la somme et le produit de tous les Travail demandé :
éléments du tableau T de n réels positifs avec n entre 5 et 25. - Décomposez le problème en modules.
- Analysez chaque modules et en déduire les algorithmes correspondantes.
Travail demandé :
- Décomposez le problème en modules. Exercice 6 :
- Analysez chaque modules et en déduire les algorithmes correspondantes. On veut écrire un programme intitulé SOMME permettant et d’afficher la somme Sn pour un entier n positif
Exercice 2 :
3 5 7
donné en utilisant la formule ci-dessous.
= 1 ⋯ 2 ∗ 1
On veut écrire un programme intitulé MATRICE permettant de calculer le produit d’une matrice d’entier C de
taille N*M avec N et M entre 1 et 25.
4 2 6
2 3 4
La matrice C = 2 3 7 avec P=∑ (
∗
)
Travail demandé :
6 7 9
- Décomposez le problème en modules.
- Analysez chaque modules et en déduire les algorithmes correspondantes.
S=A[1] * B[1] + A[2] * B[2] + A[3] * B[3] + A[4] * B[4] + A[5] * B[5]
S=8 * 5 + 7 * 2 + 2 * 4 + 1 * 6 + 0 * 1 = 68
Exercice 4 :
Série d’exercices On veut écrire un programme intitulé PREMIER permettant de saisir un nombre n et d’afficher s’il est premier
ou non. En déduire l’algorithme de tous les nombres premiers situés entre 1 et 100.
Travail demandé :
Les algorithmes - Décomposez le problème en modules.
- Analysez chaque modules et en déduire les algorithmes correspondantes.
arithmétiques Exercice 5 :
Un entier positif est dit parfait s’il égal à la somme de ses diviseurs (excepté lui-même).Par exemple 6 est parfait,
car 6 = 1 + 2 + 3 ; de même 28 est parfait, car 28 = 1 + 2 + 4 + 7 + 14.
On veut écrire un programme intitulé PARF permettant de vérifier si un entier x est parfait ou non.
Travail demandé :
Exercice 1 : - Décomposez le problème en modules.
On veut écrire un programme intitulé FACTORIELLE permettant de demander un nombre n>0 de départ, et - Analysez chaque modules et en déduire les algorithmes correspondantes.
qui calcule sa factorielle. Exercice 6 :
Exemple : le factorielle de n=6, notée 6 ! , vaut 1 * 2 * 3 * 4 * 5 * 6 = 720. On veut écrire un programme intitulé MULTIPLICATION permettant de réaliser l’exploit de multiplier deux
nombres entiers n et m en n’utilisant que des multiplications/divisions par 2. A chaque étape, n est divisé par 2
Travail demandé : (division entière) et m est multiplié par 2.
- Décomposez le problème en modules. Si n est impair, la valeur de m est ajoutée au futur résultat.
- Analysez chaque modules et en déduire les algorithmes correspondantes. Exemple : 321 * 457 ; prod=0
Exercice 2 : n m Observations
On veut écrire un programme intitulé COMBINAISON permettant de déterminer et afficher le nombre de 321 457 n est impair donc futur résultat prod = 0 + m =457 et m = m*2 = 457
combinaison de p objets parmi n. 160 914 n est pair donc on n’ajoute pas ; m = m * 2 = 914
n et p sont deux entiers naturels strictement positifs 80 1828 n est pair donc on n’ajoute pas ; m = m * 2 = 1828
! 40 3656 n est pair donc on n’ajoute pas ; m = m * 2 = 3656
20 7312 n est pair donc on n’ajoute pas ; m = m * 2 = 7312
= avec n >=
! − ! 10 14624 n est pair donc on n’ajoute pas ; m = m * 2 = 145624
Travail demandé : 5 29248 n est impair donc futur résultat prod = m * 2 =29248 et
- Décomposez le problème en modules. prod = prod + m = 457 + 29248 = 29705
- Analysez chaque modules et en déduire les algorithmes correspondantes. 2 58496 n est pair donc on n’ajoute pas ; m = m * 2 = 58496
1 116992 n est impair donc résultat : m = m * 2 = 58496 ;
prod = prod + m = 29705 + 116992 = 146697
Exercice 3 :
On veut écrire un programme intitulé CALC_ARRANGEMENT permettant de calculer et d’afficher Travail demandé :
l’arrangement de deux entiers données n et p tel que 1 ≤ p ≤n. - Décomposez le problème en modules.
Sachant que : - Analysez chaque modules et en déduire les algorithmes correspondantes.
! Exercice 7 :
On veut écrire un programme intitulé JUMEAUX qui permet de déterminer et d’afficher tous les entiers
= , 1 ≤ ≤
− ! jumeaux compris entre 1 et N (N est un entier donné supérieur à 2).
Travail demandé : Deux nombres a et b sont dits jumeaux si a et b sont premiers et a = b + 2.
- Décomposez le problème en modules. Exemple :
- Analysez chaque modules et en déduire les algorithmes correspondantes. 5 et 3 sont premiers, 5 = 3 + 2, donc 5 et 3 sont deux entiers jumeaux.
Travail demandé :
- Décomposez le problème en modules.
- Analysez chaque modules et en déduire les algorithmes correspondantes.
Travail demandé :
Les algorithmes x
d’approximations 30 cm
Exercice 1 :
x
A
30 cm
Un fabriquant envisage la production de boites de lait en carton obtenues selon le patron ci-dessous.
a On veut écrire un programme intitulé BOITE permettant de déterminer la valeur de x pour laquelle le volume
O P d’une boite est maximal.
Travail demandé :
- Décomposez le problème en modules.
- Analysez chaque modules et en déduire les algorithmes correspondantes.
B C
x M N Exercice 4 :
Soit un triangle équilatéral dont le coté mesure a en cm. On inscrit dans ce triangle un rectangle MNPQ.
On pose BM=x.
On veut écrire un programme intitulé AIRE permettant de déterminer la valeur de x tel que l’aire du rectangle X
soit maximale.
Travail demandé : Y
- Décomposez le problème en modules. R
- Analysez chaque modules et en déduire les algorithmes correspondantes.
Exercice 2 :
Chaque page d’un livre à imprimer comporte un rectangle d’aire 300cm² pour le texte, des marges mesurant 2cm
sur les bords horizontaux et 1.5 cm sur les bords verticaux.
On veut écrire un programme intitulé PAGE permettant de déterminer les dimensions des pages pour que la Soit C un cercle de rayon R. On construit un rectangle ABCD inscrit dans C.
consommation du papier soit minimale. On veut écrire un programme intitulé PERIMETRE permettant de déterminer les dimensions du rectangle
pour que son périmètre soit égal à P. NB : 4*R <= P <= 6*R.
2
Travail demandé :
- Décomposez le problème en modules.
x - Analysez chaque modules et en déduire les algorithmes correspondantes.
300cm² 1.5