Page 1 sur 1

Correction algo exo 4 BAC S 2015, Nlle Calédonie, novembre

Message non luPosté: 23 Nov 2015, 15:49
de critor
Correction algo exercice n°4 obligatoire du sujet de Maths du BAC S de novembre 2015 en Nouvelle Calédonie.


Question 1)
$mathjax$d_1=d_{0+1}=\frac{1}{2}d_0+100=\frac{1}{2}\times 300+100=150+100=250$mathjax$

$mathjax$a_1=a_{0+1}=\frac{1}{2}d_0+\frac{1}{2}a_0+70=\frac{1}{2}\times 300+\frac{1}{2}\times 450+70=150+225+70=445$mathjax$



Question 2)a)
Programmons l'algorithme sur notre calculatrice graphique afin de savoir ce qu'il renvoie :

Algorithme
Programme
Code: Tout sélectionner
Initialisation :
   D prend la valeur 300
   A prend la valeur 450
   Saisir la valeur de n
Traitement :
   Pour k variant de 1 à n
      D prend la valeur D/2+100
      A prend la valeur A/2+D/2+70
   FinPour
   Afficher D
   Afficher A
Code: Tout sélectionner
300→D
450→A
Prompt N
For(K,1,N
   D/2+100→D
   A/2+D/2+70→A
End
Disp D
A

Code: Tout sélectionner
Define ncal15so(n)=
Prgm
   300→d
   450→a
   For k,1,n
      d/2+100→d
      a/2+d/2+70→a
   EndFor
   Disp d,a
EndPrgm
Code: Tout sélectionner
300→D
450→A
?→N
0→X
For 1→K To N
   D÷2+100→D
   A÷2+D÷2+70→A
Next
D◢
A

Code: Tout sélectionner
300⇒d
450⇒a
Input n
For 1⇒k To n
   d/2+100⇒d
   a/2+d/2+70⇒a
Next
Print d
Print a
Code: Tout sélectionner
EXPORT ncal15so(N)
BEGIN
   D:=300;
   A:=450;
   FOR K FROM 1 TO N DO
      D:=D/2+100;
      A:=A/2+D/2+70
   END;
   PRINT(D);
   PRINT(A)
END;


L'algorithme répond donc que
$mathjax$d_1=250$mathjax$
et
$mathjax$a_1=420$mathjax$
.
Le premier résultat
$mathjax$d_1=250$mathjax$
est bien cohérent avec la question 1).
Mais le deuxième résultat
$mathjax$a_1=420$mathjax$
contredit le
$mathjax$a_1=450$mathjax$
de la question 1).


Question 2)b)
Il y a donc une erreur dans notre algorithme dans le contexte des affectations de la variable A, c'est-à-dire autour de la ligne "A prend la valeur A/2+D/2+70".

Effectivement, pour trouver a1 il faut effectuer le calcul
$mathjax$\frac{a_0}{2}+\frac{d_0}{2}+70=\frac{450}{2}+\frac{300}{2}+70=225+150+70=445$mathjax$
.

Mais ici, la variable D a été modifiée par la ligne précédente "D prend la valeur D/2+100". Suite à cela, elle ne contient donc plus la valeur
$mathjax$d_0=300$mathjax$
, mais la valeur
$mathjax$d_1=250$mathjax$
, nous faisant donc effectuer un mauvais calcul :
$mathjax$\frac{a_0}{2}+\frac{d_1}{2}+70=\frac{450}{2}+\frac{250}{2}+70=225+125+70=420$mathjax$


Une correction peut consister en la sauvagarde de la valeur de la variable D avant modification dans un autre variable, et l'utilisation de cette dernière dans l'affectation récurrente de la variable A :

Algorithme
Programme
Code: Tout sélectionner
Initialisation :
   D prend la valeur 300
   A prend la valeur 450
   Saisir la valeur de n
Traitement :
   Pour k variant de 1 à n
      S prend la valeur D
      D prend la valeur D/2+100
      A prend la valeur A/2+S/2+70
   FinPour
   Afficher D
   Afficher A
Code: Tout sélectionner
300→D
450→A
Prompt N
For(K,1,N
   D→S
   D/2+100→D
   A/2+S/2+70→A
End
Disp D
A

Code: Tout sélectionner
Define ncal15so(n)=
Prgm
   300→d
   450→a
   For k,1,n
      d→s
      d/2+100→d
      a/2+s/2+70→a
   EndFor
   Disp d,a
EndPrgm
Code: Tout sélectionner
300→D
450→A
?→N
0→X
For 1→K To N
   D→S
   D÷2+100→D
   A÷2+S÷2+70→A
Next
D◢
A

Code: Tout sélectionner
300⇒d
450⇒a
Input n
For 1⇒k To n
   d⇒s
   d/2+100⇒d
   a/2+s/2+70⇒a
Next
Print d
Print a
Code: Tout sélectionner
EXPORT ncal15so(N)
BEGIN
   D:=300;
   A:=450;
   FOR K FROM 1 TO N DO
      S:=D;
      D:=D/2+100;
      A:=A/2+S/2+70
   END;
   PRINT(D);
   PRINT(A)
END;