Page 1 of 1

Correction algorithme concours admission Sciences Po 2015

Unread postPosted: 05 Mar 2015, 14:16
by critor
Considérons aujourd'hui la question d'algorithmique tombée samedi 21 février au concours d'admission à Sciences Po, dans l'exercice Vrai/Faux à justifier - un concours ouvert aux élèves de Terminale sous réserve d'obtention du Baccalauréat entre temps.

La question ci-contre fait donc appel à la compétence "savoir exécuter un algorithme", afin de pouvoir dire si le résultat proposé est vrai ou faux.



Méthode n°1 :
On peut exécuter l'algorithme à la main, en réalisant ce que l'on appelle une "trace de l'algorithme".
C'est un tableau où l'on décrit pour chaque instruction (en ligne), l'état mémoire de la machine exécutant l'algorithme, avec en colonnes:
  • toutes les variables
  • les tests de boucles 'Tant que' éventuelles
La voici :
Image

Le résultat affiché étant la valeur de la variable 'I', il est donc de 5 et non de 6.
La proposition est fausse : l'algorithme répond 5.



Méthode n°2 :
A mon avis, la seule mention du bon résultat suffit comme justification.
La trace est ici quand même assez longue à réaliser.
Dans ce cas, si vous êtes à l'aise, une autre méthode beaucoup plus rapide est possible presque sans effort à la machine.
Il suffit tout simplement de traduire l'algorithme en un programme pour votre calculatrice graphique, outil autorisé à ce concours, et de lui demander le résultat.
Voici ci-dessous les programmes pour l'ensemble des modèles actuellement en circulation :

Algorithme
Programme
Code: Select all
Variables: N, P, S, I
Début
   Saisir (N)
   Saisir (P)
   S prend la valeur 1
   I prend la valeur N
   Tant que S<P et I>0
      S prend la valeur S×I
      I prend la valeur I-1
   Fin Tant que
   Afficher I
Fin
Code: Select all
Prompt N,P
1→S
N→I
While S<P et I>0
   SI→S
   I-1→I
End
I

Code: Select all
Prompt N,P
1→S
N→I
While S<P and I>0
   SI→S
   I-1→I
End
I

Code: Select all
Define scpo2015(n,p)=
Func
   Local s,i
   1→s
   n→i
   While s<p and i>0
      s∙i→s
      i-1→i
   EndWhile
   Return i
EndFunc
Code: Select all
?→N
?→P
1→S
N→I
While S<P And I>0
   SI→S
   I-1→I
WhileEnd
I

Code: Select all
Input n
Input p
1⇒s
n⇒i
While s<p and i>0
   s×i⇒s
   i-1⇒i
WhileEnd
Print i

Code: Select all
EXPORT SCPO2015(N,P)
BEGIN
   S:=1;
   I:=N;
   WHILE S<P AND I>0 DO
      S:=S*I;
      I:=I-1;
   END;
   I
END;





Un sujet par ailleurs fort intéressant pour des révisions de BAC blanc ou noir, en attendant mieux. ;)



Téléchargements : Sujet + corrigé

Re: Correction algorithme concours admission Sciences Po 201

Unread postPosted: 05 Mar 2015, 18:42
by Wistaro
Bien utile pour réviser le bac blanc, merci!

Re: Correction algorithme concours admission Sciences Po 201

Unread postPosted: 06 Mar 2015, 07:48
by Adriweb
Corrigé quelques typos et amélioré la coloration syntaxique :)


(et code original du tableau : )
Show/Hide spoilerAfficher/Masquer le spoiler
Code: Select all
[table][tr][td][/td][td][b]N[/b][/td][td][b]P[/b][/td][td][b]S[/b][/td][td][b]I[/b][/td][td][b]Tant que
S<P et I>0[/b][/td][td][b]Commentaire[/b][/td][/tr][tr][td]Saisir (N)[/td][td]10[/td][td][/td][td][/td][td][/td][td][/td][td][/td][/tr][tr][td]Saisir (P)[/td][td]10[/td][td]10000[/td][td][/td][td][/td][td][/td][td][/td][/tr][tr][td]S prend la valeur 1[/td][td]10[/td][td]10000[/td][td]1[/td][td][/td][td][/td][td][/td][/tr][tr][td]I prend la valeur N[/td][td]10[/td][td]10000[/td][td]1[/td][td]10[/td][td]Vrai[/td][td][/td][/tr][tr][td]S prend la valeur S×I[/td][td]10[/td][td]10000[/td][td]10[/td][td]10[/td][td][/td][td]1ère itération Tant que[/td][/tr][tr][td]I prend la valeur I-1[/td][td]10[/td][td]10000[/td][td]10[/td][td]9[/td][td]Vrai[/td][td][/td][/tr][tr][td]S prend la valeur S×I[/td][td]10[/td][td]10000[/td][td]90[/td][td]9[/td][td][/td][td]2ème itération Tant que[/td][/tr][tr][td]I prend la valeur I-1[/td][td]10[/td][td]10000[/td][td]90[/td][td]8[/td][td]Vrai[/td][td][/td][/tr][tr][td]S prend la valeur S×I[/td][td]10[/td][td]10000[/td][td]720[/td][td]8[/td][td][/td][td]3ème itération Tant que[/td][/tr][tr][td]I prend la valeur I-1[/td][td]10[/td][td]10000[/td][td]720[/td][td]7[/td][td]Vrai[/td][td][/td][/tr][tr][td]S prend la valeur S×I[/td][td]10[/td][td]10000[/td][td]5040[/td][td]7[/td][td][/td][td]4ème itération Tant que[/td][/tr][tr][td]I prend la valeur I-1[/td][td]10[/td][td]10000[/td][td]5040[/td][td]6[/td][td]Vrai[/td][td][/td][/tr][tr][td]S prend la valeur S×I[/td][td]10[/td][td]10000[/td][td]30240[/td][td]6[/td][td][/td][td]5ème itération Tant que[/td][/tr][tr][td]I prend la valeur I-1[/td][td]10[/td][td]10000[/td][td]30240[/td][td][b]5[/b][/td][td]Faux[/td][td]Fin Tant que[/td][/tr][/table]