Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
PROGRAM act1 ;
Solution :
3)
BEGIN
PROGRAM solact1 ;
USES WINCRT ;
CONST pi = 3.14;
VAR s, r : REAL;
Plan de chapitre :
b) Caractéristiques
Une constante est caractérisée par un nom qui est son identificateur unique en plus d’une valeur inchangeable
qui nous permet de déterminer implicitement le type de cette dernière.
Objet Type/nature
En PASCAL, on déclare une constante comme suit :
Général Nom Entier
Const nom=valeur de la constante ;
Au niveau du PASCAL :
Var x, y : REAL ;
+1
Retourne le carré de x. Entier Même R: = SQR (12);
Carré (x) SQR (x) ou réel type que x R= 144.
Retourne un réel compris Aléa pourrait produire
√x &|x + 5| C = x + 2
ENT(x) INT(x) d’un réel. ou réel Entier R= 3.
Solution :
PROGRAM solact3;
USES WINCRT;
VAR
a , b , c : BOOLEAN ;
BEGIN
a:=TRUE;
b:=FALSE;
c:=a OR b;
WRITELN('c = ',c);
c:=a AND b;
WRITELN('c = ',c);
c:=a XOR b;
WRITELN('c = ',c);
c:= NOT(a);
WRITELN('c = ',c);
END.
b) Déclaration d) Application 5
Au niveau de l’algorithme : Pour chacun des cas suivants, évaluer et donner le type des expressions logiques en A, B, C et D pour les deux
cas suivants :
Objet Type/nature 1. ( a,b,c,d )=(5,7,2,7)
2. ( a,b,c,d )=(4,2,1,-9)
Général Nom Booléen
A := (a<b) AND (c>d)
B := (b=d) AND NOT(a<c)
Exemple p,q Booléen C := NOT ((c+a=<b) OR (a>d))
D:= (a+c<d) XOR (b-d>c)
Constations
Opérateur En Pascal
NON NOT
ET AND
OU OR
OUex XOR
Remarque
Il existe un ordre de priorité entre les opérateurs logiques : NON, ET, OU, OUex.
Solution
Solution
c) Application 7
d) Application 8
4) B[2] ← ″o″
4) B[2] ← ″o″
7) C3 ← C3 + C2
7) C3 ← C3 + C2
3) C ← ″estimation″
3) C ← ″estimation″
4) N ← Pos (″N″, C2)
4) N ← Pos (″N″, C2)
Instruction
Instruction
Instruction
Instruction
1) A ← ″L’″ + ″informatique″
1) A ← ″L’″ + ″informatique″
Algorithmique et programmation
6) A ← Concat ( A , ″ est un ″ , B , ″ de
6) A ← Concat ( A , ″ est un ″ , B , ″ de
2) B ← Sous_chaîne (″gourmande″, 5 , 5)
2) B ← Sous_chaîne (″gourmande″, 5 , 5)
A=
C=
B=
C=
B=
Ecrire le résultat devant chacune des instructions suivantes :
N=
N=
N=
C1=
C3=
C2=
C3=
N=8
N=9
N=19
C2←″ RECURRENT ″
C=″tion″
de fiction″
B= ″mande″
B= ″monde″
C2=″RENT″
C= ″estimation″
C3=″MERECUR″
A= ″L’informatique″
Résultat
Résultat
Résultat
Résultat
Compléter le tableau suivant en donnant le résultat de l’évaluation des instructions :
C3=″MERECURRENT″
16
Algorithmique et programmation Algorithmique et programmation
1. L’affectation
a) Activité 4 b) Définition
L’opération d’affectation consiste à affecter une expression à une variable. Cette opération est représentée par
Soit le programme pascal suivant : Questions :
une flèche orientée vers la gauche
PROGRAM act4 ; 1) Lancer Turbo pascal.
USES WINCRT ; Variable Expression
VAR 2) Taper ce programme.
x, y : INTEGER ; " " Signifie que la variable située à gauche prend (ou reçoit) la valeur de l’expression situé à droite.
a, b : REAL ; 3) Compiler ce programme.
i :BOOLEAN ;
j : CHAR ; 4) Qu’est ce que vous remarquez ?
BEGIN Valeur
x := 7 ; 5) Corriger les erreurs de compilation. Variable
z := x ;
x*2 : = 3 + z ; 6) Exécuter ce programme. Exemples : X ← 15
i := 12.5 ; Y ← 8+2
j := 4 ; Z ← X+Y
i := 25/j ;
WRITELN ('La valeur de i est : ', i) ;
c) Syntaxe
i := 25 ;
j := 10,657 ;
a:= (i>j) ; En algorithme En PASCAL
r := a ;
WRITELN ('La valeur de a est : ', a) ; Variable expression Variable := expression ;
END.
Exemple : Exemple :
b) Activité 6
Solution
Soit le programme pascal suivant : Questions :
N° séquence X Y Z
1 5 ? ? PROGRAM act6 ;
1) Lancer Turbo pascal.
USES WINCRT ;
2 5 -2 ?
VAR n, p : INTEGER ;
3 5 -2 7 2) Ouvrir le fichier « act6.pas » se trouvant dans le
x : REAL ;
dossier « tp programmation 1 » situé à la racine du
4 2 -2 7 ok : BOOLEAN;
lecteur C.
BEGIN
5 2 0 7
n := 3 ; p := 7 ;
3) Exécuter ce programme.
6 2 0 2 x :=p/n ;
7 -2 0 2 ok := p<n ;
4) Qu’est ce que vous remarquez ?
WRITELN ('n = ', n) ;
WRITELN ('p<n ?') ;
WRITELN (ok) ;
WRITELN ('valeur de x :');
WRITELN ('sans formatage');
WRITELN (x) ;
WRITELN ('avec formatage');
WRITELN (x:5:3);
END.
Exemple
c) Définition
L’action de sortie ou d’écriture permet à l’utilisateur de voir une information sur l’écran.
3. Opération d’entrée
d) Déclaration
a) Définition
Exemples
Cette opération permet de saisir des données à travers un périphérique d’entrée (clavier par défaut).
En Algorithme En PASCAL
Affichage d’un message b) Déclaration
texte : le texte doit être Ecrire ("Bonjour") WRITE ('Bonjour') ;
Bonjour
Exemples
entre guillemets
En analyse En algorithme En PASCAL
Affichage du contenu
A←58 A :=58 ;
d’une variable Ecrire (A) WRITE (A) ; 58 Lecture sans
x= donnée Lire (x) READ (x) ;
commentaire
A :=58 ;
Affichage mixte (textes A← 58 B :='grande' ; A=58 Ecrire ("commentaire") WRITE ('commentaire') ;
La
et variables). On utilise la B← "grande" WRITE('A=',A) ;
valeur x= donnée ("commentaire") Lire (x) READ(x) ;
Ecrire ("A=", A) WRITE ('la valeur', A,
virgule comme séparateur Ecrire ("la valeur", A,"est la plus", B) 'est la plus grande', B) ; 58 est Lecture avec
la plus
grande commentaire Exemple : Exemple : Exemple :
e) Remarques n=donnée ("Taper un entier") Ecrire ("Taper un entier") WRITE ('Taper un entier') ;
WRITELN provoque un retour à la ligne après l’opération d’affichage. Lire (n) READ (n) ;
WRITE ('Bonjour');
WRITE ('Salut'); Bonjour Salut
c) Remarque
READLN provoque un retour à la ligne après l’opération de lecture.
Résultat
WRITELN ('Bonjour'); Bonjour
WRITE ('Salut'); Salut
Solution :
PROGRAM solact8;
USES WINCRT;
TYPE
lettre = 'a'..'k';
VAR
a , b , c: lettre;
BEGIN
a:='b';
WRITELN(' a = ' , a);
b:=SUCC(a);
WRITELN(' b = ' , b);
c:=PRED(a);
WRITELN(' c = ' , c);
END.
b) Définition
Le type intervalle est un ensemble de valeurs discret ordonné désignées par deux borne (borne inférieure..
borne supérieure).
Exemple
Au niveau du PASCAL : Tableau de déclaration des objets
Remarques
T1 ……………………. …………….……… ……………………
• Ident-tableau : Identification du nouveau tableau que nous voulons définir. 1 2 3
• Borne_inf..Borne_sup: Intervalle correspondant à l'ensemble des valeurs des indices du tableau.
T2 ……………………. …………….……… ……………………
• Borne_inf : Borne inférieure de l'intervalle des indices.
• Borne_sup: Borne supérieur de l'intervalle des indices. 1 2 3
• type_élément : type des éléments du tableau. Solution
Au niveau du PASCAL :
Exemple :
Au niveau de l’algorithme :
Au niveau du PASCAL :
Exemple:
d) Remarques
(1) Un élément du tableau est repéré par le numéro de la ligne et le numéro de la colonne. Exemple : M [i, j]
avec i et j compris entre 1 et 3.
(2) Sur les éléments d’un tableau, on peut effectuer les mêmes opérations et exécuter les mêmes instructions que
sur n’importe quelle variable du même type :
Lire : Ecrire ("entrer coordonnées"), Lire (M [1,1])
Ecrire : Ecrire (M [1,3])
Affecter : M [1,2] ← 1.6
Effectuer un calcul : trace ← M [1,1] +M [2,2] + M [3,3]
Comparer : Si M [1,3] = M [2,3] Alors …
(3) Si T et U sont deux tableaux de même type alors l’instruction T ← U transfère en bloc tout le tableau U
dans le tableau T. Cette opération est appelée affectation de transfert.
(4) Les éléments d’un tableau n’ont pas de valeurs par défaut. Il faut penser à les initialiser avant de les utiliser.
e) Application 12
Essayer de résoudre l’activité précédente en utilisant la nouvelle notion.
Chapitre
Les structures
algorithmiques de
contrôle
Objectifs spécifiques :
- Savoir choisir les structures de données adéquates pour résoudre un problème donné.
Plan :
I. La forme réduite :
1. Activité 1 :
Soit l’algorithme suivant qui permet de résoudre une équation de la forme ax+b=0 :
0) Début EQUATION
1) Ecrire (″introduire a″), lire(a)
2) Ecrire (″introduire b″), lire(b)
3) x -b/a
4) Ecrire (″x = ″, x)
5) fin EQUATION
a 1 -2 5 4 0
b -1 3 2 0 5
x 1 3/2 -2/5 ?? ??
2. Définition : Une structure de contrôle conditionnelle à une forme simple réduite est une structure qui
limite l’exécution d’un traitement au cas où la condition est vérifiée.
3. Vocabulaire et syntaxe :
Remarques :
[init] est une séquence d'instruction(s) qui contiendra les éventuelles initialisations.
Dans cette forme, en évaluant la condition :
- Si la valeur de la condition est Vrai les instructions indiquées entre Alors et Fin si seront exécutées
- Si la valeur de la condition est Faux les instructions indiquées entre Alors et Fin si ne seront pas
exécutées.
4. Applications :
Solution :
Analyse du problème
Nom : EQUATION
Résultat = Ecrire (″x = ″, x)
x = [ ] Si ( a <>0 ) ET ( b<>0) alors
x -b/a
Fin si
a = donnée ( " introduire a ")
b = donnée ( " introduire b ")
Fin EQUATION
TDO
Objets Type/Nature
a,b Entier
x Réel
Solution :
Analyse du problème
Nom : CLASSEMENT
Résultat = Ecrire (chaine1, chaine2)
(ch1, ch2) = [chaine1← ch1, chaine2←ch2]
Si (LONG (ch2)>LONG (ch1)) alors
chaine1← ch2
chaine2←ch1
Fin si
ch2 = donnée ( "Entrer la chaine 2 : ")
ch1= donnée ( "Entrer la chaine 1 : ")
Fin CLASSEMENT
TDO
Objets Type/Nature
ch1, ch2, chaine1, Chaine
chaine2
Solution :
Analyse du problème
Nom : SIGNE
Résultat = Ecrire (x, signe)
signe = [signe← ″ est négatif ou nulle ″]
Si (x > 0) alors
signe← ″ est positif ″
Fin si
x = donnée ( "x = : ")
Fin SIGNE
TDO
Objets Type/Nature
signe Chaine
x Entier
Solution :
Analyse du problème
Nom : MAXIMUM
Résultat = Ecrire (″Le maximum est : ″ , Max)
Max = [ ] Si ( a > b ) alors
Max a
Fin si
Si ( b > a ) alors
Max b
Fin si
a = donnée ("donner le premier nombre")
b = donnée ("donner le deuxième nombre")
Fin MAXIMUM
TDO
Objets Type/Nature
a , b , Max Entier
2. Définition :
Une structure de contrôle conditionnelle à une forme simple complète est une structure qui exécute un
traitement 1 si la condition est vérifiée (vrai) ou un traitement 2 si la condition n’est pas vérifiée (faux).
3. Vocabulaire et syntaxe :
IF condition THEN
Begin
Instruction1 ;
…
Instruction N ;
End (Voir Rque)
ELSE
Begin
Instruction1 ;
…
Instruction N ;
End;
Remarques :
- Absence du ‘’;’’ après cet END car l’instruction n’est pas encore finie.
- L’instruction qui précède (directement avant) le ELSE ne se termine pas par ;
4. Applications :
Application 1 : Exécutez manuellement l’algorithme suivant et déduisez les valeurs finales des variables a, b
et c pour chacune des valeurs initiales suivantes de a : i) a=10 ii) a=3 iii) a=0
0) Début Application
1) Ecrire (″a=″), lire (a)
2) b ← 2a
3) c ← b-4
4) Si (a > 2c) alors
b ←a-2c
Sinon
b ←a+c
Fin si
5) Ecrire (a, b, c)
6) Fin application
Solution :
i) a=10 , b=26 , c=16
ii) a=3 , b=5 , c=2
iii) a=0 , b=8 , c=-4
Solution :
Analyse du problème
Nom : PARITE
Résultat = Ecrire (x, ″ est ″, nature)
nature = [r ← x MOD 2]
Si (r = 0) alors
nature ← ″ Paire ″
Sinon
nature ← ″ Impaire ″
Fin si
x = donnée ( "x = : ")
Fin PARITE
TDO
Objets Type/Nature
nature Chaine
x,r Entier
Solution :
Analyse du problème
Nom : CALCUL_Y
Résultat = Ecrire (y)
y = [ ] Si (n MOD 2 = 0) alors
y←1+n
Sinon
y ← -1 + n
Fin si
n = donnée ( "n = : ")
Fin CALCUL_Y
TDO
Objets Type/Nature
n,y Entier
Solution :
Analyse du problème
Nom : EXISTENCE
Résultat = Ecrire (c, message, mot)
message = [ p ← POS ( c , mot ) ]
Si (p = 0) alors
message ← ″ n'existe pas dans ″
Sinon
message ← ″ existe dans ″
Fin si
c = donnée ( "Donner le caractère : ")
mot = donnée ( "Donner le mot : ")
Fin EXISTENCE
TDO
Objets Type/Nature
message , mot Chaine
p Entier
c Caractère
Moyenne Mention
Moyenne ≥ 16 très bien
14 ≤ moyenne < 16 bien
12 ≤ moyenne < 14 assez bien
10 ≤ moyenne < 12 passable
moyenne < 10 redouble
Solution :
Analyse du problème
Nom : MENTION
Résultat = Ecrire ("La mention est : ", ment)
ment= [ ment"" ] Si ( moy ≥ 16) alors
ment "très bien"
Sinon si ( moy ≥ 14) alors
ment "bien"
Sinon si ( moy ≥ 12) alors
ment "assez bien"
Sinon si ( moy ≥ 10) alors
ment "passable"
Sinon
ment "redouble"
Fin si
moy (N1+N2*2) /3
N2= donnée (" Taper la 2ème note")
N1= donnée (" Taper la 1ère note")
Fin MENTION
TDO
Objets Type/Nature
ment Chaine
moy , N1 , N2 Réel
2. Définition : C’est une structure de contrôle conditionnelle qui permet d’ouvrir plusieurs situations à des
traitements différents.
Vrai Traitement1
Condition
Traitement2
Vrai
1
Faux Condition Vrai
2 ……
Faux Condition
3
3. Vocabulaire et syntaxe :
Remarques :
- Si le traitement est un ensemble d’instructions, on les mets entre BEGIN et END.
- Si la condition1 produit la valeur VRAIE alors le traitement1 sera exécuté, mais si elle produit la valeur
FAUX on passe à l’évaluation de la condition2, ainsi de suite, …
- Si aucune des N-1 premières conditions ne produit la valeur VRAIE alors le traitement N sera exécuté.
- La condition est une expression booléenne soit vraie soit fausse
- Question : qu’est ce que vous remarquer au niveau de comparaison de structure simple et de structure
généralisée ? : La structure simple est un cas particulier de structure généralisée.
4. Applications :
Application 1 : Exécutez manuellement l’algorithme suivant et déduisez les valeurs finales des variables a, b
et c pour chacune des valeurs initiales suivantes de a : i) a=10 ii) a=3 iii) a=-5
0) Début Application
1) Ecrire (″a=″), lire (a)
2) b ← 2a
3) c ← b-4
4) Si (a > 2c) alors
b ←a-2c
Sinon si (a > c) alors
b ←a+c
Sinon
b ←c
Fin si
5) Ecrire (a, b, c)
6) Fin application
Solution :
i) a=10 , b=16 , c=16
ii) a=3 , b=5 , c=2
iii) a=-5 , b=23 , c=-14
Solution :
Analyse du problème
Nom : SAISON
Résultat = Ecrire (Saison)
Saison= [ ] Si (mois dans [3..5] ) alors
Saison " Printemps "
Sinon si (mois dans [6..8]) alors
Saison " Eté "
Sinon si (mois dans [9..11]) alors
Saison " Automne "
Sinon
Saison " Hiver "
Fin si
mois = donnée ("donner le numéro du mois")
Fin SAISON
TDO
Objets Type/Nature
Saison Chaine
mois Entier
TDO
Objets Type/Nature
cat Chaine
age Entier
Application 4 : Rédiger une analyse, un algorithme et un programme en PASCAL intitulé EAU permettant
de lire une température de l’eau puis afficher son état. Les trois formes de l’eau sont :
- ″gaz″ si la température dépasse 100°.
- ″liquide″ si la température est entre 0° et 100°.
- ″glace″ si la température est inférieure à 0°.
Solution :
Analyse du problème
Nom : EAU
Résultat = Ecrire (″Etat = ″ , etat)
etat=[ ] Si (T < 0 ) alors
etat ″ glace ″
Sinon si (T < 101) alors
etat ″ liquide ″
Sinon
etat ″ gaz ″
Fin si
T = donnée ("Température = ")
Fin EAU
TDO
Objets Type/Nature
etat Chaine
T Entier
Solution :
Analyse du problème
Nom : FORME_GEO
Résultat = Forme
Forme = [ ] Si ( code = ″c″ ) alors
c1= donnée ("Entrer le coté : ")
Ecrire ("Surface : ", c1* c1)
Sinon si ( code = ″r″ ) alors
(c1,c2)= donnée ("Entrer les 2 cotés : ")
Ecrire ("Périmètre : ", (c1+c2)* 2 )
Sinon si ( code = ″t″ ) alors
(c1,c2,c3)= donnée ("Entrer les 3 cotés : ")
Si ( c1 = c2 ) OU ( c1=c3 ) OU ( c2=c3 ) alors
Ecrire(″isocèle″)
Sinon Ecrire(″non isocèle″)
Fin si
Sinon
Ecrire(″Mauvais code″)
Fin si
code=donnée ("Entrer un code : c , r ou t ")
Fin FORME_GEO
TDO
Objet Type / nature
c1,c2,c3 Entier
code Caractère
− Afficher "Couleur indéterminée" si le caractère est différent de "B", "R", "J", "V"
Solution :
Analyse du problème
Nom : AFFICHE_COULEUR
Résultat = Ecrire (couleur)
couleur = [ ] Selon C Faire
"B" : couleur "Bleu"
"R" : couleur "Rouge"
"J" : couleur "Jaune"
"V": couleur "Vert"
Sinon
couleur "Couleur indéterminée"
Fin selon
c =donnée ("Taper un caractère")
Fin AFFICHE_COULEUR
TDO
Objets Type/Nature
couleur Chaine
c Caractère
2. Définition :
Une structure de contrôle conditionnelle à choix multiple permet de faire un choix parmi plusieurs possibilités.
Ce choix de traitement à effectuer dépend de la valeur que prendra un sélecteur qui va être comparée à une
série de valeurs ou à un ou plusieurs intervalles, en cas d’égalité (ou fait partie d’un intervalle), l’instruction qui
lui est associée est exécutée.
3. Vocabulaire et syntaxe :
Remarques :
- Le sélecteur est une variable de type scalaire discret (entier, caractère, booléen)
- Elle ne peut jamais être de type réel.
- Chaque traitement peut être composé de plusieurs instructions, dans ce cas on va les délimitées par
BEGIN et END.
- La partie SINON est facultative.
- Lorsqu’on a plusieurs valeurs qui peuvent entraîner un même traitement, on peut l’énumérer séparées
par des virgules ou mêmes sous forme d’intervalles.
4. Applications :
Application 1 : Exécutez manuellement l’algorithme suivant et déduisez les valeurs finales des variables a, b
et c pour chacune des valeurs initiales suivantes de a : i) a=10 ii) a=3 iii) a=-5
0) Début Application
1) Ecrire (″a=″), lire (a)
2) b ← 2a
3) c ← b-4
4) Selon c faire
2 : a ← b-10
16 : b ← a+10
Sinon
c ← c - 10
Fin si
5) Ecrire (a, b, c)
6) Fin application
Solution :
i) a=10 , b=20 , c=16
ii) a=-4 , b=6 , c=2
iii) a=-5 , b=-10 , c=-24
Solution :
Analyse du problème
Nom : SAISON
Résultat = Ecrire (sai)
sai = [ sai ""] Selon l faire
"E", "e" : sai "été"
"A", "a" : sai "automne"
"H", "h" : sai "hiver"
"P", "p" : sai "printemps"
Sinon
sai"Lettre ne correspond pas à une saison"
Fin selon
l = donnée ("Taper une lettre")
Fin SAISON
TDO
Objets Type/Nature
sai Chaine
l Caractère
Solution :
Analyse du problème
Nom : CAT_AGE
Résultat = Ecrire (cat)
cat = [ ] Selon age faire
6..7 : cat ″ Poussin ″
8..9 : cat ″ Pupille ″
10..11 : cat ″ Minime ″
12..14 : cat ″ Cadet ″
15..17 : cat ″ Junior ″
18..20 : cat ″ Senior ″
Sinon
cat ″ Tu as dépassé l’âge de l’enfance ″
Fin selon
age = donnée ("Age = ")
Fin CAT_AGE
TDO
Objets Type/Nature
cat Chaine
age Entier
Nous avons vu dans le chapitre précédent les définitions conditionnelles et comment rendre un ordinateur
décideur. Nous allons découvrir une autre potentialité de l’ordinateur : le travail de répétition. Il arrive que dans
un problème on se trouve contraint de répéter une suite d’instructions ou tout un traitement. Nous allons voir
en détail, les différentes formes de répétitions dans la suite de ce cours.
2. Activité 1 : Ecrire un programme qui permet d’afficher à l’écran le mot ″bienvenue″ 20 fois.
Solution :
Répéter 20 fois l’affichage du mot ″bienvenue″.
L’instruction écrire (″bienvenue″) se répète 20 fois dans l’algorithme.
Algorithme trop long, le traitement se répète 20 fois dans l’algorithme : pour optimiser cet algorithme on fait
recourt à une forme de répétition bien particulière, c’est la structure itérative complète.
3. Définition : Une structure de contrôle itérative complète exprime la répétition d’un traitement un nombre
fini de fois connu d’avance.
4. Vocabulaire et syntaxe :
Remarques :
5. Applications :
Application 1 : Exécutez manuellement l’algorithme suivant et déduisez les valeurs finales des variables x , y
et i pour chacune des valeurs initiales suivantes de n : i) n=5 ii) n=1 iii) n=0
0) Début Application
1) Ecrire (″n=″), lire (n)
2) x ← 0
3) y ← 1
4) Pour i de 1 à n faire
x ← x+i
y←y*i
Fin pour
5) Ecrire (x, y, i)
6) Fin application
Solution :
i) x=15 , y=120 , i=5
ii) x=1 , y=1, i=1
iii) x=0 , y=1 , i=0
Application 2 : Un nombre est dit parfait s’il est égal à la somme de ses diviseurs sauf lui même. Rédiger
une analyse, un algorithme et un programme en PASCAL intitulé PARFAIT permettant de déterminer si un
entier m est parfait .
Solution :
Analyse du problème
Nom : PARFAIT
Résultat = Ecrire (m, mess)
mess= [ ] si m=s alors
mess ←″est parfait″
sinon
mess ←″n″est pas parfait″
Fin si
s= [ s ← 0 ] pour i de 1 à m-1 faire
si (m MOD i =0 ) alors
s←s+i
Fin si
fin pour
m = donnée ( " m = ")
Fin PARFAIT
TDO
Objet Type/Nature
m,s,i Entier
mess Chaine
Solution :
Analyse du problème
Nom : TYPES_CAR
Résultat = Ecrire (″ NI = ″, ni , ″ NC = ″, nc ,″ NS = ″,ns)
(ni , nc , ns)= [ ni ← 0 , nc ← 0, ns ← 0 ] pour i de 1 à LONG (ch) faire
si (MAJUS (ch[ i ] ) DANS [″A″..″Z″] ) alors
ni ← ni + 1
sinon (ch[ i ] DANS [″0″..″9″] ) alors
nc ← nc + 1
sinon
ns ← ns + 1
Fin si
fin pour
ch = donnée ( " Donner une chaine : ")
Fin TYPES_CAR
TDO
Objet Type/Nature
ni,nc,ns,i Entier
ch Chaine
Solution :
Analyse du problème
Nom : PRODUIT_SOMME
Résultat = Ecrire (s)
s= [ s ← 0 ] pour c de 1 à q faire
s←s+p
fin pour
q = donnée ( " q = ")
p = donnée ( " p = ")
Fin PRODUIT_SOMME
TDO
Objet Type/Nature
s,p,q,c Entier
Solution :
Analyse du problème
Nom : MOY_CLASSE
Résultat = Ecrire ("La moyenne de la classe est : ", mc )
mc som/10
som = [ som 0 ] pour i de 1 à 10 faire
som ← som + moy [ i ]
fin pour
moy= [ ] pour i de 1 à 10 faire
moy [ i ] = donnée ("Saisir l'élément N° ",i)
fin pour
Fin MOY_CLASSE
TDNT
TYPE
TAB= Tableau de 10 réels
TDO
Objet Type/Nature
mc , som Réel
i Entier
moy TAB
1. Activité 1 :
Rédiger une analyse, un algorithme et un programme en PASCAL intitulé CHIFFRE_3 permettant de saisir
un entier formé de 3 chiffres.
Solution :
La tache de ce programme consiste à faire la saisie de l’entier n en effectuant un contrôle sur l’entrée. Si une
entrée n’est pas valide et ne vérifie pas les conditions imposées par le problème (entier formé de 3 chiffres),
alors le programme redemande la saisie et ainsi de suite jusqu'à ce qu’une bonne valeur soit donnée.
Il s’agit de répéter la saisie d’un entier n jusqu'à (100≤n≤999).
Répéter
n=donnée ( ″ N = ″ )
Jusqu’à (n DANS [100..999])
2. Définition :
La structure Répéter…jusqu’à…est utilisée quand il s’agit de répéter un traitement un nombre de fois inconnu à
l’avance et qu’on est sur que le traitement itératif s’exécutera au moins une fois.
Le traitement est toujours exécuté au moins une fois. Dès que la condition d’arrêt devient vraie, la boucle est
abandonnée et le programme continue en séquence.
Traitement
Condition
Vérifié Non vérifié
Sortir de la boucle
3. Vocabulaire et syntaxe :
4. Applications :
Solution :
Analyse du problème
Nom : FACTORIELLE
Résultat = Ecrire ( n , ″ ! = ″ , Fact)
Fact = [ Fact1 ] Si (n<> 0) alors
Pour i de n à 1 faire
FactFact*i
Fin Pour
Fin si
n= [ ] Répéter
n=donnée ( ″ N = ″ )
Jusqu’à ( n >=0 )
Fin FACTORIELLE
TDO
Objet Type/Nature
n , Fact , i Entier
Solution :
Analyse du problème
Nom : NBRE_CHIFFRE
Résultat = Ecrire (″Le nombre de chiffre de ″, n , ″ est ″ , s)
s = [ s0 , qn ] Répéter
qq MOD 10
s s+1
Jusqu’à ( q DIV 10 =0 )
n= [ ] Répéter
n=donnée ( ″ N = ″ )
Jusqu’à ( n >=0 )
Fin NBRE_CHIFFRE
TDO
Objet Type/Nature
n,q,s Entier
Solution :
Analyse du problème
Nom : NBRE_CHAINE
Résultat = Ecrire (″La chaine de caractère est ″, ch )
ch= [ ] Répéter
ch=donnée ( ″ ch = ″ )
VALEUR ( ch,n,pe)
Jusqu’à ( pe=0 )
Fin NBRE_CHAINE
TDO
Objet Type/Nature
n , pe Entier
ch Chaine
Solution :
Analyse du problème
Nom : RECHERCHE
Résultat = Ecrire (″Minimum = ″, min , ″ Maximum = ″ , max)
(min , max )=[ min t[1] , max t[1] ] pour cp de 2 à n faire
si (t[cp] < min) alors
min t[cp]
fin si
si (t[cp] > max) alors
max t[cp]
fin si
fin pour
(t , n) = [ n0 ] Répéter
Répéter
v=donnée ( ″ Donner une valeur entre 0 et 50 ″ )
Jusqu’à ( v DANS [ 0..50] )
si ( v<>0) alors
n n + 1
t[n] v
fin si
Jusqu’à ( v=0 )
Fin RECHERCHE
TDO
Objet Type/Nature
n ,v,min , max ,cp Entier
t Tableau de 100 entiers
Solution :
Analyse du problème
Nom : NBR_3
Résultat = affichage
affichage=[ ] pour cp de 1 à n faire
ut[cp] MOD 10
dt[cp] MOD 100 DIV 10
ct[cp] DIV 100
r1 u + 10 * c + 100 * d
r2 d + 10 * u + 100 * c
r3 d + 10 * c + 100 * u
r4 c + 10 * d + 100 * u
r5 c + 10 * u + 100 * d
si (t[1] DANS [t[cp] , r1,r2,r3,r4,r5] ) alors
Ecrire ( t[cp])
fin si
fin pour
t = [ ] pour cp de 1 à n faire
Répéter
t[cp]=donnée ( ″ Donner un entier formé de trois chiffres ″ )
Jusqu’à ( t[cp] DANS [ 100..999] )
fin pour
n=[ ] Répéter
n=donnée ( ″ Donner une valeur entre 5 et 20 ″ )
Jusqu’à ( n DANS [ 5..20] )
Fin NBR_3
TDO
Objet Type/Nature
n, u, d, c, r1, r2, r3, Entier
r4, r5, cp
t Tableau de 100 entiers
Solution :
1) PGCD = 10, PGCD = 3
2) Dans le cas particulier ou les valeurs saisies des variables m et n sont égales, nous sommes amenés vers une
boucle infinie.
Dans ce cas le traitement ne va pas avoir lieu et par conséquent le nombre de répétitions est égal à zéro. Il est
donc incorrect d’opter aussi pour la structure Répéter…jusqu’à….
Dans ce cas précis, la structure itérative à utiliser est la structure tant que…faire….
L’algorithme solution est le suivant :
0) Début PGCD
1) Ecrire (″m=″), lire(m)
2) Ecrire (″n=″), lire(n)
3) Tant que (m<> n) faire
Si (m > n) alors
m←m-n
Sinon
n ←n-m
Fin si
Fin tant que
4) Ecrire (″ PGCD =″, m)
5) Fin PGCD
2. Définition :
La structure Tant que…faire…est utilisée quand il s’agit de répéter un traitement un nombre de fois inconnu à
l’avance et que le traitement itératif peut ne pas s’exécuter.
Sortir de la boucle
Traitement
3. Vocabulaire et syntaxe :
[ init] {init} ;
Tant que (non arrêt) faire While (non arrêt) Do
Instruction 1 Begin
Instruction 2 Instruction 1 ;
…….. Instruction 2 ;
…….. ……..
Instruction n ……..
Instruction n ;
Fin Tant que End ;
4. Applications :
Application 1 : Exécutez manuellement l’algorithme suivant pour chacune des valeurs suivantes de la
variable c : i) c=7 ii) c=4 iii) c=5
0) Début Application
1) lire (c)
2) Tant que (c=5) faire
Si (c MOD 2 =0) alors
Ecrire (2*c)
Sinon
Ecrire (c*c)
Fin si
lire (c)
Fin Tant que
3) Ecrire (c)
4) Fin application
Solution :
i) c=49
ii) c=8
iii) c=5
Solution :
Analyse du problème
Nom : COMPTE
Résultat = Ecrire (″Somme = ″, s)
s = [ s0 , n=donnée(″nombre =″)] Tant que n<>-1 faire
ss+n
n=donnée
Fin tant que
Fin COMPTE
TDO
Objet Type/Nature
n,s Entier
Conclusion :
Pour utiliser une boucle dans un problème posé, on se base sur l’organigramme suivant :
NON
Nombre de
répétitions fini
Exécution de la
boucle au moins
une fois
Chapitre
Les sous programmes
I. L’analyse modulaire :
1. Activité 1 :
Quelques années plus tard, le propriétaire a remarqué la nécessité d’agrandir l’épicerie en une supérette vue
l’augmentation du nombre de clients.
Cette superette est formée de :
Des rayons, Un dépôt, Des caisses et un bureau de direction.
Le propriétaire peut travailler seul mais c’est pénible car le nombre de tache a augmentée :
Quelles sont ces taches ?
Il va gérer la caisse, contrôler le rayon, le charger et le nettoyer.
Qu’est ce qu’il doit faire pour résoudre ce problème ?
Il doit recruter un groupe d’employés et diviser le groupe en sous-groupe qui va résoudre un problème simple.
Constatations :
Donc la résolution des sous problèmes s’effectue à travers des programmes simples appelés sous-
programme ou module.
L’analyse modulaire consiste à diviser un problème complexe et/ou de grande taille en problèmes simple
de taille réduite.
3. Notions de sous-programmes :
Un sous-programme possède une structure analogue à un programme (entête, partie déclaration, partie
instructions).
- Il existe deux types de sous-programmes : les fonctions (retournent un seul résultat qui peut être exploité dans
une expression) et les procédures (renvoient zéro, un ou plusieurs résultats).
- Un sous-programme X peut être appelé (exécuter) plusieurs fois par un sous-programme Y. X est dite sous-
programme appelé (celui qui fait le service) et tant dit que Y est dite appelant (celui qui demande le service).
Exemple :
a= 5 f(5) = 15
b= 4 f(4) = 13
c= 3 f(3) = 11
Solution :
Analyse du programme principal :
Nom : CALCUL_F
Résultat = Ecrire ("f (", a, ") =" , fa, "f (", b , ") =" , fb , "f (", c , ") =" , fc)
fa ← FN f(a)
fb ← FN f(b)
fc ← FN f(c)
a = donnée (" a = ")
b = donnée (" b = ")
c = donnée (" c = ")
Fin CALCUL_F
TDO
Objet Type/Nature
a , b , c , fa , fb , fc Réel
f Fonction
Analyse de la fonction f :
DEF FN f(x : réel) : réel
Résultat = f
f ← 2*x +5
Fin f
Algorithme de la fonction f :
0) DEF FN f (x : réel) : réel
1) f 2*x +5
2) Fin f
Traduction en PASCAL
PROGRAM CALCUL_F ;
USES WINCRT ;
VAR a , b , c , fa , fb , fc : REAL ;
FUNCTION f (x : REAL): REAL;
BEGIN
f : =2 * x + 5 ;
END ;
BEGIN
WRITE (' a = ') ; READLN (a) ;
WRITE (' b = ' ) ; READLN (b) ;
WRITE (' c = ') ; READLN (c) ;
fa:=f(a);
fb:=f(b);
fc:=f(c);
WRITE ('f (', a, ') =' , fa, 'f (', b , ') =' , fb , 'f (', c , ') =' , fc);
END.
2. Définition :
Une fonction est un sous-programme qui permet la résolution d’un problème précis et qui retourne un seul
résultat de type simple (entier, réel, booléen, caractère ou chaîne).
3. Vocabulaire et syntaxe :
En analyse
DEF FN nom_de_la_fonction (arguments : type_arguments) : type_de_résultat
Résultat = nom_de_la fonction
nom_de_la_fonction ← expression
………………………..
Fin nom_de_la_fonction
En algorithme
0) DEF FN nom_de_la_fonction (arguments : type_arguments) : type_de_résultat
1)………………………….
2)…………………………
………………………….
n-1 ) nom_de_la_fonction ← expression
n) Fin nom_de_la_fonction
En PASCAL
FUNCTION nom_de_la_fonction (arguments : type_arguments) : type_de_résultat ;
TYPE
Déclaration des types locaux ;
VAR
Déclaration des variables locaux ;
BEGIN
Instructions de la fonction ;
nom_de_la_fonction := expression ;
END ;
VAR a , b : INTEGER ;
d , e : CHAR ;
r : BOOLEAN ;
Question : Indiquer parmi les appels suivants lesquels sont valables. Expliquer
Solution :
1) Appel correct.
2) Appel incorrect : types incompatibles.
3) Appel incorrect : types incompatibles.
4) Appel correct.
5) a de type entier et le résultat retourné par la fonction de type booléen : Appel incorrect.
5. Application 2 :
Rédiger une analyse, un algorithme et un programme en PASCAL intitulé CALCUL_SOMME permettant de
calculer la somme suivante (n donnée) :
1 1 1 1
S=1+ + + …+ ,
2! 3! 4! !
Analyse du programme principal :
Nom : CALCUL_SOMME
Résultat = Ecrire(s)
s=[ s←1] pour i de 2 à n faire
s← s+1/FN factorielle (i)
fin pour
n = donnée (″n = ″)
Fin CALCUL_SOMME
TDO
Objet Type/Nature
i,n entier
s Réel
factorielle fonction
Solution :
Analyse du problème
Nom : AFFICHAGE
Résultat = aff
aff = [ ] pour i de 1 à n faire
Ecrire (mot1)
fin pour
pour i de 1 à m faire
Ecrire (mot2)
fin pour
m= donnée (″ m= ″)
n = donnée (″ n= ″)
mot2 = donnée (″ mot2= ″)
mot1 = donnée (″ mot1= ″)
Fin AFFICHAGE
TDO
Objet Type/Nature
n,m,i Entier
mot1, mot2 Chaine
Algorithme PASCAL
0) Début AFFICHAGE PROGRAM AFFICHAGE ;
1) Ecrire (″ mot1= ″), lire (mot1) USES WINCRT ;
2) Ecrire (″ mot2= ″), lire (mot2) VAR n , m , i : INTEGER ;
3) Ecrire (″ n= ″), lire (n) mot1, mot2 : STRING ;
4) Ecrire (″ m= ″), lire (m) BEGIN
5) pour i de 1 à n faire WRITE (' mot1 = '); READLN (mot1);
Ecrire (mot1) WRITE (' mot2 = '); READLN (mot2);
fin pour WRITE (' n= '); READLN (n);
6) pour i de 1 à m faire WRITE (' m= '); READLN (m);
Ecrire (mot2) FOR i :=1 TO n DO WRITELN (mot1) ;
fin pour FOR i :=1 TO m DO WRITELN (mot2) ;
7) Fin AFFICHAGE END.
Constatations :
D’après cette activité on remarque qu’il y a un bloc d’instructions qui se répète (au niveau d’affichage de mot1 et
celle de mot2).
Solution :
Pour éviter cette répétition, on peut isoler ce bloc d’instructions qui se répète et d’en faire un module et
d’appeler ce module autant de fois que nécessaire.
On remarque aussi que le résultat de ce module n’est pas unique, donc on ne peut pas utiliser une fonction.
Ce pour cette raison on peut utiliser le deuxième type de sous-programme : la procédure.
2. Définition :
Les procédures sont des sous-programmes qui peuvent avoir plusieurs résultats (Le nombre des
résultats retournés par une procédure est appartient à [0..n]). Le seul cas ou la procédure retourne 0
résultat c’est le cas de procédure d’affichage. Une fonction est un cas particulier de procédure.
3. Vocabulaire et syntaxe :
En analyse
DEF PROC nom_de_la_procédure (arguments : type_arguments)
Résultat =
………………………..
Fin nom_de_la_procédure
En algorithme
0) DEF PROC nom_de_la_procédure (arguments : type_arguments)
1)………………………….
2)…………………………
………………………….
n) Fin nom_de_la_procédure
En PASCAL
PROCEDURE nom_de_la_procédure (arguments : type_arguments) ;
TYPE
Déclaration des types locaux ;
VAR
Déclaration des variables locaux ;
BEGIN
Instructions de la procédure ;
END ;
4. Application 3 :
CONST c = 3 ;
VAR a , b : INTEGER ;
Question : Indiquer parmi les appels suivants lesquels sont valables. Expliquer
Solution :
1) Appel incorrect. 5) Appel correct.
2) Appel incorrect : types incompatibles. 6) Appel correct.
3) Appel incorrect : types incompatibles.
4) Appel incorrect : types incompatibles.
Traduction en PASCAL
PROGRAM AFFICHAGE ;
USES WINCRT;
VAR
n , m : INTEGER ;
mot1, mot2 : STRING ;
PROCEDURE Affiche ( mot : STRING ; nb :INTEGER );
VAR
i : INTEGER ;
BEGIN
FOR i:=1 TO nb DO
WRITELN (mot) ;
END;
BEGIN
WRITE (' mot1 = '); READLN (mot1);
WRITE (' mot2 = '); READLN (mot2);
WRITE (' n= '); READLN (n);
WRITE (' m= '); READLN (m);
Affiche (mot1,n) ;
Affiche (mot2,m) ;
END.
a. Activité 4 :
Soit le programme PASCAL suivant :
PROGRAM test;
USES WINCRT;
VAR
a: INTEGER;
PROCEDURE B(x: INTEGER);
VAR
i: INTEGER;
BEGIN
i:=0;
a:=i+1;
a:=x+1;
END;
BEGIN
a:=5;
B (a);
WRITELN ('a = ' , a);
END.
b. Définitions :
Un objet local est un objet déclaré dans un sous-programme et n’est pas connu qu’à l’intérieur de celui-ci.
Exemple : i.
Un objet global est un objet déclaré dans le programme principal et utilisable par ce dernier et les différents
sous-programmes qui le forment. Exemple : a.
Paramètres formels : ce sont les paramètres qui se trouvent dans l’entête du sous-programme au niveau
déclaration. Exemple : x.
Paramètres effectifs : ce sont les paramètres qui figurent (dans le programme appelant) au niveau de l’appel
du sous-programme. Exemple : a.
Remarques :
Lors de l’appel du sous-programme les paramètres effectifs viennent remplacer les paramètres formels. Cette
substitution de paramètres s’appelle passage de paramètres.
Les paramètres effectifs et les paramètres formels doivent s’accorder de point de vue nombre et ordre et
doivent être de mêmes types ou de types compatibles.
Un paramètre formel peut être déclaré par le nom de son paramètre effectif ou par un nom différent.
a. Activité 5 :
PROGRAM PASSAGE;
USES WINCRT;
VAR i : INTEGER ;
PROCEDURE Ajout (x: INTEGER);
BEGIN
x:=x+1;
WRITELN (' la valeur de i dans la procédure est : ', x) ;
END ;
BEGIN
WRITE ('donner la valeur de i : ') ; READ (i) ;
Ajout (i);
WRITELN (' la valeur de i dans le programme principal est : ', i) ;
END.
i garde sa valeur initiale après l’appel de la procédure. Donc toute modification des paramètres formels
n’entraîne pas des modifications sur les paramètres effectifs.
Donc il s’agit d’un passage par valeur.
i modifie sa valeur initiale après l’appel de la procédure. Donc toute modification des paramètres formels
entraîne automatiquement des modifications sur les paramètres effectifs.
Donc il s’agit d’un passage par variable.
Sens du transfert :
Programme appelant Sous-programme appelé
Sens du transfert :
V. Applications :
A l'appel de ESSAI
(I , J : INTEGER) Après exécution de
ESSAI
A l'appel de ESSAI
(VAR I, J : INTEGER ) Après exécution de
ESSAI
Solution :
Déclaration des Action P. Effectifs P. Formels Type du
paramètres Formels X Y I J passage
b. Application 6 :
Soit les procédures suivantes :
1.
0) DEF RPOC lecture ( n : entier)
1) Répéter
Ecrire (″ donner la taille du tableau ″)
Lire (n)
Jusqu'à n dans [10..20]
2) fin lecture
2.
3.
4.
5.
Questions :
1) Expliquer dans quel cas on utilise le mot clé var dans l’entête de chaque procédure.
2) Déterminer le nombre de résultats retourné par chaque procédure.
3) Dans quel cas une procédure ne retourne aucun résultat.
4) Dans quel cas on peut remplacer une procédure par une fonction.
Solution :
1)
1.
0) DEF RPOC lecture (var n : entier)
1) Répéter
Ecrire (″ donner la taille du tableau ″)
Lire (n)
Jusqu'à n dans [10..20]
2) fin lecture
2.
0) DEF RPOC permut (var x, y : entier)
1) Aux x
2) x y
3) y Aux
4) fin permut
3.
0) DEF RPOC Essai (var a, d, c, b : entier)
1) Lire (a)
2) Ecrire (b)
3) c2*a
4) Lire (d)
5) fin Essai
4.
0) DEF RPOC remplir (var T : tab, n : entier)
1) pour i de 1 à n répéter
Ecrire (″donner T [″, i, ″] ″), Lire(T[i])
fin pour
2) fin remplir
5.
0) DEF RPOC affiche ( T : tab, n : entier)
1) pour i de 1 à n répéter
Ecrire (″T [″, i, ″]=″, T[i])
fin pour
2) fin affiche
Solution :
2) 1. Un seul résultat 2. Deux résultats 3. Trois résultats 4. n résultats 5. 0 résultat
3) procédure d’affichage.
4) Dans le cas où la procédure retourne un seul résultat.
Retenons :
Chapitre
Les algorithmes de tri et
de recherche
A. Les algorithmes de tri :
1. Introduction :
Le tri consiste à ordonner dans un ordre bien déterminé (croissant ou décroissant) les éléments d’un tableau. Il
existe plusieurs méthodes de tri. Dans la suite on vous en présente 3 : tri par sélection, tri à bulles et tri par
insertion.
Exemple N= 4
T 15 0 10 50 …………..
T 0 10 15 50 …………..
15 10 -4 7 -2
-4 10 15 7 -2
-4 -2 15 7 10
-4 -2 7 15 10
-4 -2 7 10 15
c. Analyse du problème :
TDO
Objet Type/Nature
N entier
T TAB
Affiche Procédure
Remplir Procédure
Lecture Procédure
Tri_selection Procédure
Traduction en PASCAL
PROGRAM Tri_methode_par_selection ;
USES WINCRT;
TYPE TAB = ARRAY [1..100] OF INTEGER;
VAR N : INTEGER;
T: TAB;
BEGIN
FOR i := 1 TO y DO
BEGIN
ppm :=Premposmin ( i , vec , y) ;
IF ( vec[ppm] <> vec[i] ) THEN
Permut (vec[ppm] , vec [ i ]) ;
END;
END;
BEGIN
Lecture (N) ;
Remplir (T, N) ;
Tri_selection (T, N) ;
Affiche (T, N) ;
END.
3. Tri à bulles :
a. Principe :
On commence par la première paire d’éléments que l’on compare.
1) Si t[ i ] > t[ i+1], alors on permute ces deux éléments et on tient compte de la permutation. (Echange vrai)
3) Si une (ou plusieurs) permutation a été réalisée, on recommence tout le traitement (étape 1, 2 et 3) sinon, c’est
la fin et la liste sera triée.
b. Exemple :
Soit le tableau T suivant de 5 éléments (n=5)
15 10 -4 7 -2
10 15 -4 7 -2
1er cycle
10 -4 15 7 -2
10 -4 7 15 -2
10 -4 7 -2 15
-4 10 7 -2 15
2e cycle
-4 7 10 -2 15
-4 7 -2 10 15
-4 7 -2 10 15
3e cycle
-4 -2 7 10 15
c. Analyse du problème :
On pourra utiliser les modules suivants :
TDO
Objet Type/Nature
N entier
T TAB
Affiche Procédure
Remplir Procédure
Lecture Procédure
Tri_bulles Procédure
Algorithme du programme principal :
0) DÉBUT Tri_methode_a_bulles
1) PROC Lecture (N)
2) PROC Remplir (T, N)
3) PROC Tri_bulles (T, N)
4) PROC Affiche (T, N)
5) Fin Tri_methode_a_bulles
Traduction en PASCAL
PROGRAM Tri_methode_a_bulles ;
USES WINCRT;
TYPE TAB = ARRAY [1..100] OF INTEGER;
VAR N : INTEGER;
T: TAB;
BEGIN
IF ( vec[ i ] > vec[ i+1 ] ) THEN
BEGIN
Permut (vec [ i ] , vec [ i+1 ]) ;
Echange := TRUE ;
END;
END;
UNTIL ( Echange = FALSE ) ;
END;
BEGIN
Lecture (N) ;
Remplir (T, N) ;
Tri_bulles (T, N) ;
Affiche (T, N) ;
END.
2) Comparer l’élément choisi avec tous les éléments précédents dans la liste et l’insérer à la bonne place de
sorte que la liste formée par les éléments traités reste toujours triée.
b. Exemple :
Soit le tableau T suivant de 5 éléments (n=5)
15 10 -4 7 -2
10 15 -4 7 -2
-4 10 15 7 -2
-4 7 10 15 -2
-4 -2 7 10 15
c. Analyse du problème :
On pourra utiliser les modules suivants :
Procédure Lecture(N) : saisir (lire) le nombre d’éléments de T.
Traduction en PASCAL
PROGRAM Tri_methode_par_insertion ;
USES WINCRT;
TYPE TAB = ARRAY [1..100] OF INTEGER;
VAR N : INTEGER;
T: TAB;
END;
END;
BEGIN
Lecture (N) ;
Remplir (T, N) ;
Tri_insertion (T, N) ;
Affiche (T, N) ;
END.
a. Principe :
Cette méthode de recherche consiste à parcourir les éléments du tableau un par un jusqu'à trouver la valeur
cherchée ou arriver à la fin du tableau.
b. Exemple :
Soit le tableau T suivant de 5 éléments (n=5)
15 10 -4 7 -2
c. Analyse du problème :
Procédure Saisir_x (x) : qui lit et valide x, x étant la variable à rechercher dans T.
TDO
Objet Type/Nature
N,x Entier
res Chaine
T TAB
Saisir_x Procédure
Remplir Procédure
Lecture Procédure
Recherche Fonction
Traduction en PASCAL
PROGRAM Recherche_seq ;
USES WINCRT;
TYPE TAB = ARRAY [1..100] OF INTEGER;
VAR N , x : INTEGER;
T: TAB; res : STRING ;
BEGIN
Lecture (N) ;
Remplir (T, N) ;
Saisir_x ( x );
IF (Recherche(T, N, x) = TRUE) THEN
res :=′ existe dans T ′
ELSE
res := ′ n′′existe pas dans T ′ ;
2. Recherche dichotomique :
a. Principe :
N.B. : le tableau sur lequel on va travailler doit être trié
1. Déclarer 3 variables
Début valeur initial du tableau ( =1)
Fin valeur final du tableau ( = N)
Milieu (début + fin ) div 2
2. Comparer entre T[milieu] avec la valeur recherchée x tel que :
Si (T[milieu] < x) alors début milieu +1
Si (T[milieu] > x) alors fin milieu -1
Si (T[milieu] = x) alors sortir avec x existe à la position milieu
3. Répéter l’étape 2 tant que T[milieu] <> x et début <=fin
b. Exemple :
Soit le tableau T suivant de 5 éléments (n=10)
14 16 27 29 34 38 43 49 51 55
Procédure Saisir_x (x) : qui lit et valide x, x étant la variable à rechercher dans T.
TDO
Objet Type/Nature
N,x Entier
res Chaine
T TAB
Saisir_x Procédure
Remplir Procédure
Lecture Procédure
Tri Procédure
Dicho Fonction
Traduction en PASCAL
PROGRAM Recherche_dech ;
USES WINCRT;
TYPE TAB = ARRAY [1..100] OF INTEGER;
VAR N , x : INTEGER;
T: TAB; res : STRING ;
mem := vec [ j ] ;
WHILE ( i > 0 ) AND (vec[ i ] > mem ) DO
BEGIN
vec[ i+1] := vec [ i ];
i :=i-1;
END;
vec[ i+1] := mem ;
END;
END;
BEGIN
Lecture (N) ;
Remplir (T, N) ;
Saisir_x ( x );
Tri(T,N) ;
IF (Dicho(T, N, x) = TRUE) THEN
res :=′ existe dans T ′
ELSE
res := ′ n′′existe pas dans T ′ ;
WRITELN (′ La valeur ′, x , res ) ;
END.
Chapitre 5
Les algorithmes
récurrents
I. Introduction :
Les algorithmes récurrents sont des algorithmes qui utilisent un traitement itérative pour produire un résultat, ce
traitement itérative est utilisé pour calculer le résultat d’une formule qui se répète plusieurs fois, lorsque le
résultat final dépend des p résultats précédents, on dit que c’est un algorithme récurrent d’ordre p.
Travail demandé :
- Décomposez le problème en modules.
- Analysez chaque modules et en déduire les algorithmes correspondantes.
2) Exemple :
Soit un tableau T contenant les dix éléments suivants :
T: 12 10 0 -5 8 12 -2 2 40 -1
1 2 3 4 5 6 7 8 9 10
Étape 1 :
T: 12 10 0 -5 8 12 -2 2 40 -1 S
1 2 3 4 5 6 7 8 9 10 0
Étape 2 :
S
T: 12 10 0 -5 8 12 -2 2 40 -1
1 2 3 4 5 6 7 8 9 10 12
Étape 3 :
S
T: 12 10 0 -5 8 12 -2 2 40 -1
1 2 3 4 5 6 7 8 9 10 22
Étape 4 :
S
T: 12 10 0 -5 8 12 -2 2 40 -1
1 2 3 4 5 6 7 8 9 10 22
Étape 5 :
S
T: 12 10 0 -5 8 12 -2 2 40 -1
1 2 3 4 5 6 7 8 9 10 17
Étape 6 :
S
T: 12 10 0 -5 8 12 -2 2 40 -1
1 2 3 4 5 6 7 8 9 10 25
Étape 7 :
S
T: 12 10 0 -5 8 12 -2 2 40 -1
1 2 3 4 5 6 7 8 9 10 37
Étape 8 :
S
T: 12 10 0 -5 8 12 -2 2 40 -1
1 2 3 4 5 6 7 8 9 10 35
Étape 9 :
S
T: 12 10 0 -5 8 12 -2 2 40 -1
1 2 3 4 5 6 7 8 9 10 37
Étape 10 :
S
T: 12 10 0 -5 8 12 -2 2 40 -1
1 2 3 4 5 6 7 8 9 10 77
Étape 11 :
S
T: 12 10 0 -5 8 12 -2 2 40 -1
1 2 3 4 5 6 7 8 9 10 76
3) Solution :
TDNT
Type
TAB = Tableau de 100 Entiers
TDOG
Objets Type/Nature
T TAB
N Entier
Saisir Procédure
Somme Fonction
2) Activité 2 :
On veut écrire un programme intitulé CALCUL_MIN_MAX qui permet de remplir un tableau T de n Entiers,
puis calculer et afficher le minimum et le maximum des éléments du tableau T.
Travail demandé :
- Décomposez le problème en modules.
- Analysez chaque modules et en déduire les algorithmes correspondantes.
T: 12 10 0 -5 8 12 -2 2 40 -1
1 2 3 4 5 6 7 8 9 10
Étape 1 :
T: 12 10 0 -5 8 12 -2 2 40 -1 Min Max
1 2 3 4 5 6 7 8 9 10 12 12
Étape 2 :
T: 12 10 0 -5 8 12 -2 2 40 -1 Min Max
1 2 3 4 5 6 7 8 9 10 10 12
Étape 3 :
T: 12 10 0 -5 8 12 -2 2 40 -1 Min Max
1 2 3 4 5 6 7 8 9 10 0 12
Étape 4 :
T: 12 10 0 -5 8 12 -2 2 40 -1 Min Max
1 2 3 4 5 6 7 8 9 10 -5 12
Étape 5 :
T: 12 10 0 -5 8 12 -2 2 40 -1 Min Max
1 2 3 4 5 6 7 8 9 10 -5 12
Étape 6 :
T: 12 10 0 -5 8 12 -2 2 40 -1 Min Max
1 2 3 4 5 6 7 8 9 10 -5 12
Étape 7 :
T: 12 10 0 -5 8 12 -2 2 40 -1 Min Max
1 2 3 4 5 6 7 8 9 10 -5 12
Étape 8 :
T: 12 10 0 -5 8 12 -2 2 40 -1 Min Max
1 2 3 4 5 6 7 8 9 10 -5 12
Étape 9 :
T: 12 10 0 -5 8 12 -2 2 40 -1 Min Max
1 2 3 4 5 6 7 8 9 10 -5 40
Étape 10 :
T: 12 10 0 -5 8 12 -2 2 40 -1 Min Max
1 2 3 4 5 6 7 8 9 10 -5 40
4) Solution :
TDNT
Type
TAB = Tableau de 100 Entiers
TDOG
Objets Type/Nature
T TAB
N Entier
Saisir Procédure
Minimum Fonction
Maximum Fonction
TDOL
Objets Type/Nature
i, Min Entier
2) Activité 3 :
On veut écrire un programme intitulé SUITE qui permet de calculer et afficher les N premiers termes d’une
suite U définie par :
U0 = 5
Un = 2*Un-1 + 1.5
Travail demandé :
- Décomposez le problème en modules.
- Analysez chaque modules et en déduire les algorithmes correspondantes.
3) Solution :
Analyse du programme principal :
Nom : SUITE
Résultat : PROC Affiche_Un(N)
PROC Saisir (N)
Fin SUITE
TDOG
Objets Type/Nature
N Entier
Saisir, Affiche_Un Procédure
TDOL
Objets Type/Nature
i Entier
U Réel
V. Triangle de PASCAL :
1) Activité 4 : Développer les produits suivants et donner les coefficients de A et B :
(A + B) ² = ……………………………………………………………
(A + B) 3 = ……………………………………………………………
2) Introduction :
Le triangle de PASCAL fournit les coefficients de l’équation (a + b) n. Par exemple si on veut calculer les
coefficients de l’équation (a + b) 4 on procède de la manière suivante :
1 Ligne 0 : (a + b) 0
1 1 Ligne 1 : (a + b) 1
Matrice carrée M de
1 2 1 Ligne 2 : (a + b) 2
dimension 5x5
1 3 3 1 Ligne 3 : (a + b) 3
1 4 6 4 1 Ligne 4 : (a + b) 4
3) Activité 5 :
On veut écrire un programme intitulé TRIANGLE_PASCAL qui permet de remplir et afficher le triangle de
PASCAL pour un degré N de l’équation (a + b) n donné par l’utilisateur.
Travail demandé :
- Décomposez le problème en modules.
- Analysez chaque modules et en déduire les algorithmes correspondantes.
4) Solution :
Analyse du programme principal :
Nom : TRIANGLE_PASCAL
Résultat : PROC Affiche (M, N)
PROC Remplir_TP (M, N)
PROC Saisir (M,N)
Fin TRIANGLE_PASCAL
TDNT
Type
MAT = Matrice de 100 x 100 Entiers
TDOG
Objets Type/Nature
M MAT
N Entier
Saisir, Remplir_TP, Affiche Procédure
TDOL
Objets Type/Nature
l, c Entier
Algorithme de la procédure Affiche :
0) DEF PROC Affiche (Mf : MAT ; Nf : Entier)
1) Pour l de 1 à Nf+1 Faire
Pour c de 1 à l Faire
Ecrire (Mf[l, c])
Fin Pour
Fin Pour
2) Fin Affiche
Chapitre 6
Les algorithmes
arithmétiques
I. Le calcul de PGCD :
1) Activité 1 :
Déterminer le plus grand commun diviseur des couples suivants : 15 et 27, 130 et 40.
2) Définition :
Le PGCD (Plus Grand Commun Diviseur) de deux Entiers est le plus grand Entier permettant de diviser ces
deux Entiers.
Déduire les étapes à suivre pour réaliser cette tâche avec le principe d’algorithme d’Euclide :
Si a=b, le PGCD est a ou b
Sinon a et b ont le même PGCD que b et (a mod b)
Il s'agit d'un traitement itératif à condition d'arrêt : tant que b <> 0 faire
Remplacer a par b
Remplacer b par (a mod b)
PGCD (a,0) = a
3) Application 1 :
On veut écrire un programme intitulé PGCD_Euclide qui permet de saisir deux Entiers A et B strictement
positifs, puis calculer et afficher leur PGCD.
Travail demandé :
- Décomposez le problème en modules.
- Analysez chaque modules et en déduire les algorithmes correspondantes.
4) Solution de l’application 1:
Analyse du programme principal :
Nom : PGCD_Euclide
Résultat : Ecrire (″PGCD (″,a,″ , ″,b,″ ) est : ″, PGCD(a,b))
(a,b) =Proc saisir (a,b)
Fin PGCD_Euclide
TDOG
Objets Type /Nature
a, b Entier
PGCD Fonction
saisir Procédure
5) Application 2 :
On veut écrire un programme intitulé PGCD_DIFF qui calcule le plus grand commun diviseur de deux
Entiers strictement positifs a et b par la méthode des différences.
Cette méthode consiste a :
Remplacer a par a-b si a>b,
si non remplacer b par b-a (si b>a), et on recommence jusqu’a obtenir a=b, le pgcd cherché est a (ou
b).
Travail demandé :
- Décomposez le problème en modules.
- Analysez chaque modules et en déduire les algorithmes correspondantes.
6) Exemple :
7) Solution de l’application 2 :
Déterminer le PPCM de deux Entiers dans chacun des couples suivants : (5 , 6) et (120 , 50).
2) Constatations :
Si a =b, le PPCM est a (ou b) sinon chercher le max entre a et b :
Si le max est multiple de min alors est lui le PPCM.
Sinon chercher les multiples de max en ordre croissant et s’arrêter s’il est multiple de min.
3) Définition :
Le plus petit commun multiple de deux Entiers a et b est le plus petit multiple de a et de b, on le note PPCM
(a, b).
4) Application 3 :
On veut écrire un programme intitulé CALCUL_PPCM qui permet de saisir deux Entiers A et B strictement
positifs, puis calculer et afficher leur PPCM.
Travail demandé :
- Décomposez le problème en modules.
- Analysez chaque modules et en déduire les algorithmes correspondantes.
5) Exemple :
Pour A = 64 et B = 3, on procède comme suit pour calculer le PPCM :
On cherche tout d’abord le minimum (Min) et le maximum (Max) entre A et B, puis on calcule le reste de la
division de Max par Min, s’il est égale à zéro alorsMax est le PPCM, sinon on cherche le multiple successive
de Max et Min qui est égale à Max + A + B – Min est ainsi de suite jusqu'à ce qu’on trouve comme reste de
division de Max par Min égale à zéro.
Étape 1 : (A > B) Max = A et Min = B
Étape 2 : Max MOD Min = 64 MOD 3 = 1 ≠ 0 Alors Max = 64 + 64 + 3 – 3 = 128
Étape 3 : Max MOD Min = 128 MOD 3 = 2 ≠ 0 Alors Max = 128 + 64 + 3 – 3 = 192
Étape 4 : Max MOD Min = 192 MOD 3 = 0 Alors Arrêt avec PPCM = Max = 192
6) Solution de l’application 3 :
Analyse du programme principal :
Nom : CALCUL_PPCM
Résultat : Ecrire ("PPCM (",A, ",",B, ")=",P)
P ←FN PPCM (A,B)
PROC Saisir (A,B)
Fin CALCUL_PPCM
TDOG
Objets Type/Nature
A, B Entier
Saisir Procédure
PPCM Fonction
Travail demandé :
- Décomposez le problème en modules.
- Analysez chaque modules et en déduire les algorithmes correspondantes.
4) Exemple :
Vérifier 17 :
Étape 1 : on a (17 Mod 2 ≠ 0)
Étape 2 : on a (17 Mod 3 ≠ 0)
Étape 3 : on a (17 Mod 4 ≠ 0)
Étape 4 : on a (17 Mod 5 ≠ 0)
Étape 5 : on a (17 Mod 6 ≠ 0)
Étape 6 : on a (17 Mod 7 ≠ 0)
Étape 7 : on a (17 Mod 8 ≠ 0)
Étape 8 : on a (9 > 17 Div 2) Alors arrêt du traitement et 17 est un nombre Premier
Vérifier 15 :
Étape 1 : on a (15 Mod 2 ≠ 0)
Étape 2 : on a (15 Mod 3 = 0) Alors arrêt du traitement et 15 n’est pas un nombre Premier
5) Solution de l’application 4 :
Analyse du programme principale :
Nom : VERIF_PREMIER
Résultat : Affichage
Affichage = [ ] Si FN Premier (A) = Vrai Alors
Ecrire (A, " est un nombre premier")
Sinon
Ecrire (A, " n’est pas un nombre premier")
Fin si
PROC Saisir (A)
Fin VERIF_PREMIER
TDOG
Objets Type/Nature
A Entier
Saisir Procédure
Premier Fonction
Algorithme du programme principal :
0)Début VERIF_PREMIER
1)PROC Saisir (A)
2)Si FN Premier (A) = Vrai Alors
Ecrire (A, " est un nombre premier")
Sinon
Ecrire (A, " n’est pas un nombre premier")
Fin si
3)Fin VERIF_PREMIER
3) Constatations :
Pour chercher la décomposition d’un Entier en produit de facteurs premiers, nous appliquons le principe
suivant :
Vérifier si N est divisible par 2 :
o Si oui : continuer à le diviser par 2 et le remplacer par Ndiv2 jusqu’à ce qu’il ne soit plus multiple
de 2.
o Refaire l’étape précédente pour 3, 4, etc.
o Continuer à refaire le même traitement Jusqu’à avoir N=1.
4) Application 5 :
On veut écrire un programme intitulé FACT_PREMIER qui permet de saisir un Entier A strictement
supérieur à 1, puis chercher et afficher la décomposition en produits de facteurs premiers de cet Entier.
Travail demandé :
- Décomposez le problème en modules.
- Analysez chaque modules et en déduire les algorithmes correspondantes.
5) Solution de l’application 5 :
TDOL
Objetss Type/Nature
i Entier
V. Le calcul du factoriel :
1) Définition :
Le factoriel d'un Entier naturel n, notée n!, ce qui se lit « factorielle de n », est le produit des nombres Entiers
strictement positifs inférieurs ou égaux à n.
2) Principe :
Pour chercher le factoriel d’un Entier, nous appliquons le principe suivant :
Vérifier si N est égale à 0
o Si oui : alors 0! = 1
o Sinon : il suffit de calculer le produit de tous les Entiers allant de 1 à N.
3) Application 6 :
On veut écrire un programme intitulé CALC_FACT qui permet de chercher la factorielle d’un Entier positif N.
Travail demandé :
- Décomposez le problème en modules.
- Analysez chaque modules et en déduire les algorithmes correspondantes.
4) Solution de l’application 6 :
Analyse du programme principal :
Nom : CALC_FACT
Résultat : Ecrire(N,″!=″, FN Fact(N))
PROC saisir (N)
Fin CALC_FACT
TDOG
Objets Type/Nature
N Entier
saisir Procédure
FACT Fonction
TDOL
Objets Type/Nature
i Entier
f Entier_long
a) Activité 5 :
Chercher les nombres parfaits parmi cette liste : 6 , 15 , 28
b) Définition :
On appelle nombre parfait un nombre égal à la somme de ses diviseurs (lui non compris, évidemment).
c) Constatations :
Déterminer la somme des diviseurs de N entre 1 et N div 2 :
Vérifier si la somme des diviseurs est égale à N :
o Si oui : alors N est parfait
o Sinon : N n’est pas parfait
d) Application 7 :
On veut écrire un programme intitulé NB_PARFAIT qui saisi un Entier N strictement positif et vérifie si ce
nombre est parfait ou non.
Travail demandé :
- Décomposez le problème en modules.
- Analysez chaque modules et en déduire les algorithmes correspondantes.
e) Solution de l’application 7 :
TDOG
Objets Type/Nature
N Entier
saisir Procédure
PARFAIT Fonction
TDOL
Objets Type/Nature
i,S Entier
etat boolénne
a) Activité 6 :
Vérifier si ces deux nombres sont amis ou non : (220,284)
D284 = { 1, 2, 4, 71, 142}
D220 = {1, 2, 4, 5, 10, 11, 20, 22, 44, 55, 110}
D284 et D220 sont respectivement les ensembles de tous les diviseurs de 284 et de 220.
284 = 1 + 2 + 4 + 5 + 10 + 11 + 20 + 22 + 44 + 55 + 110
220 = 1 + 2 + 4 + 71 + 142
b) Définition :
Deux nombres Entiers N et M sont dits amicaux si la somme des diviseurs de N (N non compris) vaut M et la
somme des diviseurs de M (M non compris) vaut N.
c) Constatations :
Déterminer la somme des diviseurs de N entre 1 et N div 2 (la même chose pour M):
Vérifier si la somme des diviseurs de N est égale à M (la même chose pour M)
o Si oui : alors N et M sont amis
o Sinon : N et M ne sont pas amis
d) Application 8 :
On veut écrire un programme intitulé NB_AMIS qui saisi deux Entiers N et M strictement positif et vérifie si
ces nombres sont amis ou non.
Travail demandé :
- Décomposez le problème en modules.
- Analysez chaque modules et en déduire les algorithmes correspondantes.
e) Solution de l’application 8 :
Analyse du programme principal :
Nom : NB_AMIS
Résultat : Aff
Aff =[ ] Si (FN SommeDiv(N)=M et FN SommeDiv(M)=N) Alors
Ecrire(N, ″ et ″,M,″ sont deux nombres amis″)
Sinon
Ecrire(N, ″ et ″,M,″ ne sont pas deux nombres amis″)
Fin si
PROC saisir (N,M)
Fin NB_AMIS
TDOG
Objets Type/nature
N,M Entier
saisir Procédure
SommeDiv Fonction
TDOL
Objets Type/Nature
i,S Entier
2) Activité 7 :
Convertissez à la main Quelques nombres de la base 10 (décimale) vers la base 2 (binaire) et vers la base 16
(hexadécimale) : 38, 125, 75.
3) Définition :
Convertir un Entier positif N dans une base b au moins égale à 2 consiste à chercher la représentation de N
dans la base b. En effet, dans un système de numérisation b, tout Entier positif N admet une et une seule
décomposition :
N= ai * bi avec ak appartenant [0 .. b-1]
4) Constatations :
Conversion base 10 à base 2 :
1) Deviser l’Entier N donné par 2
2) Ranger le reste et changer la valeur de N par N div 2.
3) Répéter les étapes 1 et 2 jusqu’à avoir N = 0.
NB : Pour la conversion à la base 16, lors de l’affichage des restes, n’oubliez pas de prévoir la conversion des
valeurs entre 10 et 15 en caractères alphabétiques entre A et F.
5) Application 9 :
On veut écrire un programme intitulé CONV_DEC_BIN qui permet de convertir un Entier N de la base 10
vers la base 2.
Travail demandé :
- Décomposez le problème en modules.
- Analysez chaque modules et en déduire les algorithmes correspondantes.
6) Solution de l’application 9 :
TDNT
Type
Tab = tableau de 100 Entiers
TDOG
objet type/nature
N,c Entier
T Tab
CHERCHER Procédure
AFFICHE Procédure
Algorithme du programme principal :
0) Début CONV_DEC_BIN
1) Ecrire (″Donner le nombre à convertir : ″), lire (N)
2) PROC CHERCHER (N,T,c)
3) PROC AFFICHE (T,c)
4) Fin CONV_DEC_BIN
7) Application 10 :
On veut écrire un programme intitulé CONV_DEC_HEX qui permet de convertir un Entier N de la base 10
vers la base 16.
Travail demandé :
- Décomposez le problème en modules.
- Analysez chaque modules et en déduire les algorithmes correspondantes.
8) Solution de l’application 10 :
Analyse du programme principal :
Nom : CONV_DEC_HEX
Résultat : PROC AFFICHE (T,c)
PROC CHERCHER (N,T,c)
N =donnée (″Donner le nombre à convertir″)
Fin CONV_DEC_HEX
TDNT
Type
Tab = tableau de 100 Entiers
TDOG
Objets Type/Nature
N,c Entier
T Tab
CHERCHER Procédure
AFFICHE Procédure
TDOL
objet type/nature
i Entier
Chapitre 7
Les algorithmes
d'approximations
I. Problème d’optimisation :
1) Introduction :
Les algorithmes d’optimisation cherchent à déterminer le jeu de paramètres d’entrée d’une fonction donnant à
cette fonction la valeur maximale ou minimale. (Encyclopédie libre Wikip_dia)
Cette valeur est appelée valeur optimale qui est une valeur approchée de l’optimum global (idéal).
2) Activité 1 :
Dans une feuille de carton carrée de 10 cm de coté, on découpe aux quatre coins quatre carrés de coté X de telle
façon qu’en relevant les quatre bords restants, on obtienne une boite de forme parallélépipédique.
On veut trouver la valeur de X telle que le volume de la boite ainsi formée soit maximum.
10 Cm
On veut écrire un programme intitulé VOLUME_MAX qui permet de déterminer la valeur de x de l’activité ci-
dessus tout en décomposant le problème en modules. Avec Pas appartient à [0..1].
Travail demandé :
- Décomposez le problème en modules.
- Analysez chaque modules et en déduire les algorithmes correspondantes.
3) Solution de l’activité 1 :
V = Surface_de_base * Hauteur
Surface_de_base = (10 – 2 * x) * (10 – 2 * x)
Hauteur = x
D’où V = (10 – 2 * x) * (10 – 2 * x) * x
TDOG
Objetss Type/Nature
P, X, V Réel
Valeur_X Fonction
TDOL
Objetss Type/Nature
Xv, Xmax, Vv, Vmax Réel
4) Application 1 :
On veut écrire un programme intitulé F_X qui permet de déterminer la valeur approchée de x pour que f(x) soit
optimale (a une valeur maximale) avec f(x) = -2x² + 10x -2/3 et 0< x < 5.
Travail demandé :
- Décomposez le problème en modules.
- Analysez chaque modules et en déduire les algorithmes correspondantes.
5) Solution de l’application 1 :
Analyse du programme principal :
Nom : F_X
Résultat : Ecrire (″ Avec le pas = ″,pas,″ La valeur approchée de X est : ″, FN VAL_X(pas))
PROC saisir (pas)
Fin F_X
TDOG
Objets Type/Nature
pas réel
VAL_X Fonction
saisir Procédure
6) Application 2 :
On considère un rectangle ABCD tel que AB =10 et AD=20. On ajoute une longueur BB’ = x à AB et on
retranche la même longueur DD’ = x à AD. On obtient ainsi un nouveau rectangle AB’C’D’.
Démonstration
A = Longueur * Largeur
A= AB’ * AD’
A= (AB + x) * (AD – x) = (10 + x) * (20 – x)
A= 200 – 10*x + 20*x – x²
D’où A = -x² + 10*x + 200
On veut écrire un programme intitulé AIRE_MAX qui permet d’afficher la valeur approchée de X pour que
l’aire soit maximale.
Travail demandé :
- Décomposez le problème en modules.
- Analysez chaque modules et en déduire les algorithmes correspondantes.
7) Solution de l’application 2 :
2) Activité 2 :
Dans un triangle ABC rectangle en A tel que AB = 3 Cm et AC = 2 Cm, on place un point M sur le segment
[AB] tel que AM = X.
N est la projection de M sur (BC) parallèlement à (AC).
P est la projection de N sur (AC) parallèlement à (AB).
M N
3 Cm
A P C
2 Cm
On veut écrire un programme intitulé RECTANGLE qui permet de trouver la valeur (ou les valeurs) de X tel
que AMNP ait pour aire 1 Cm2
Travail demandé :
- Décomposez le problème en modules.
- Analysez chaque modules et en déduire les algorithmes correspondantes.
3) Solution de l’activité 2:
Analyse du programme principale :
Nom : RECTANGLE
Résultat : Ecrire ("La meilleur solution avec ce pas de variation est pour X = ", X, "l’aire = ", A)
A ← 2*X - 2/3*X*Xv
X ← FN Valeur_X (P)
P=donnée ("Donner la valeur du pas : ")
Fin RECTANGLE
TDOG
Objetss Type/Nature
P, X, A Réel
Valeur_X Fonction
Soit une Fonction F continue monotone sur un intervalle [a, b], cette Fonction ne s’annule qu’une seule fois.
Travail demandé :
- Décomposez le problème en modules.
- Analysez chaque modules et en déduire les algorithmes correspondantes.
2) Solution :
Analyse du programme principale :
Nom : RECHERCHE_ZERO
Résultat : Ecrire ("La Fonction F s’annule pour X = ", FN Valeur_X (a, b, Epsilon))
Epislon=donnée ("Donner la valeur de la précision : ")
b=donnée ("b=")
a=donnée ("a=")
Fin RECHERCHE_ZERO
TDOG
Objetss Type/Nature
X, a, b, Epsilon Réel
Valeur_X Fonction
TDOL
Objetss Type/Nature
mil Réel
Remarque : Il faut définir la Fonction F permettant de retourner la solution d’une valeur par la fonction F(X).