π
<-
Chat plein-écran
[^]

Correction algo exo 4 Spécialité BAC S 2017, Liban

Correction algo exo 4 Spécialité BAC S 2017, Liban

Message non lude critor » 10 Juin 2017, 13:40

Correction algo exercice n°4 de Spécialité du sujet de Maths du BAC S 2017 au Liban :
https://toutmonexam.fr/epreuve.php?id=2177

La programmation de l'algorithme sur la calculatrice graphique, permet d'obtenir directement les réponses justifiées aux premières question, mais aussi de servir de support de recherche et vérification pour les questions suivantes.

Pour la modélisation de la suite ak finie des chiffres de la carte, on peut utiliser le type de variable liste de la calculatrice.

Rajoutons une instruction en fin des deux boucles Pour pour avoir les justifications.


Algorithme
Programme
Code: Tout sélectionner
Initialisation :
   I prend la valeur 0
   P prend la valeur 0
   R prend la valeur 0
Traitement :
   Pour k allant de 0 à 7 :
      R prend le reste de 2a(2k+1) par 9
      I prend la valeur I+R
      Afficher k, a(2k+1), 2a(2k+1), R, I
   Fin Pour
   Pour k allant de 1 à 7 :
      P prend la valeur P+a(2k)
      Afficher k, a(2k) et P
   Fin Pour
Sortie :
   S prend la valeur I+P+c
   Si S est multiple de 10 alors :
      Afficher "numéro carte correct"
   Sinon :
      Afficher "numéro carte incorrect"
   Fin Si
Code: Tout sélectionner
{5,6,3,5,4,0,0,2,9,5,6,1,3,4,1}→⌊A
1→C
0→I
0→P
0→R
For(K,0,7)
   reste(2⌊A(2K+1),9)→R
   I+R→I
   Disp {K,⌊A(2K+1),2⌊A(2K+1),R,I}
End
Pause
For(K,1,7)
   P+⌊A(2K)→P
   Disp {K,⌊A(2K),P}
End
I+P+C→S
If reste(S,10)=0
Then
   Disp "NUM. CARTE CORRECT"
Else
   Disp "NUM. CARTE INCORR."
End


Code: Tout sélectionner
{5,6,3,5,4,0,0,2,9,5,6,1,3,4,1}→⌊A
1→C
0→I
0→P
0→R
For(K,0,7)
   remainder(2⌊A(2K+1),9)→R
   I+R→I
   Disp {K,⌊A(2K+1),2⌊A(2K+1),R,I}
End
Pause
For(K,1,7)
   P+⌊A(2K)→P
   Disp {K,⌊A(2K),P}
End
I+P+C→S
If remainder(S,10)=0
Then
   Disp "NUM. CARTE CORRECT"
Else
   Disp "NUM. CARTE INCORR."
End


Code: Tout sélectionner
Define liban2017sspe()=
Prgm
   {5,6,3,5,4,0,0,2,9,5,6,1,3,4,1}→a
   1→c
   0→i
   0→p
   0→r
   For k,0,7
      mod(2·a[2·k+1],9)→r
      i+r→i
      Disp k,a[2·k+1],2·a[2·k+1],r,i
   EndFor
   For k,1,7
      p+a[2·k]→p
      Disp k,a[2·k],p
   EndFor
   i+p+c→s
   If mod(s,10)=0 Then
      Disp "num. carte correct"
   Else
      Disp "num. carte incorr."
   EndIf
EndPrgm

Code: Tout sélectionner
{5,6,3,5,4,0,0,2,9,5,6,1,3,4,1}→List 1
1→C
0→I
0→P
0→R
For 0→K To 7
   MOD(2List 1[2K+1],9)→R
   I+R→I
   List 1[2K+1]→U
   {K,U,2U,R,I}◢
Next
For 1→K To 7
   P+List 1[2K]→P
   List 1[2K]→U
   {K,U,P}◢
Next
I+P+C→S
If MOD(S,10)=0
Then
   "NUM. CARTE CORRECT"
Else
   "NUM. CARTE INCORR."
IfEnd



Code: Tout sélectionner
{5,6,3,5,4,0,0,2,9,5,6,1,3,4,1}⇒a
1⇒c
0⇒i
0⇒p
0⇒r
For 0⇒k To 7
   mod(2a[2k+1],9)⇒r
   i+r⇒i
   Print {k,a[2k+1],2a[2k+1],r,i}
Next
For 1⇒k To 7
   p+a[2k]⇒p
   Print {k,a[2k],p}
Next
i+p+c⇒s
If mod(s,10)=0
Then
   Print "numéro carte correct"
Else
   "numéro carte incorr."
IfEnd
Code: Tout sélectionner
EXPORT liban2017sspe()
BEGIN
   LOCAL a;
   a:={5,6,3,5,4,0,0,2,9,5,6,1,3,4,1};
   C:=1;
   I:=0;
   P:=0;
   R:=0;
   FOR K FROM 0 TO 7 DO
      R:=2*a[2*K+1] MOD 9;
      I:=I+R;
      PRINT({K,a[2*K+1],2*a[2*K+1],R,I});
   END;
   FOR K FROM 1 TO 7 DO
      P:=P+a[2*K];
      PRINT({K,a[2*K],P});
   END;
   S:=I+P+C;
   IF (S MOD 10)=0 THEN
      PRINT("numéro de carte correct");
   ELSE
      PRINT("numéro de carte incorrect");
   END;
END;




Question 1)a) :
Le tableau demandé correspond à la première partie de l'affichage de la calculatrice, soit ce qui est affiché par la première boucle et qu'il suffit juste de recopier.


k01234567
a2k+153409631
2a2k+110680181262
R16800362
I17151515182426


Question 1)b) :
A la fin de la première boucle Pour, la variable I vérifiant les chiffres de rang impair vaut donc 26.
Poursuivons l'exécution de l'algorithme avec la deuxième boucle Pour :
Produisons la justification avec la trace par itération, correspondant cette fois-ci à la deuxième partie de l'affichage de la calculatrice


k1234567
a2k6502514
P6111113181923

A la fin de la deuxième boucle Pour, la variable P vérifiant les chiffres de rang pair vaut donc 23.
Donc en sortie d'algorithme, la variable S vaut
$mathjax$I+P+c=26+23+1\\
\phantom{1+P+c}=50$mathjax$
.
50 étant bien un multiple de 10, le numéro de carte est donc correct.
Image
Avatar de l’utilisateur
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Prochain niv.: 41.8%
 
Messages: 41465
Images: 14479
Inscription: 25 Oct 2008, 00:00
Localisation: Montpellier
Genre: Homme
Calculatrice(s):
MyCalcs profile
YouTube: critor3000
Twitter/X: critor2000
GitHub: critor

Re: Correction algo exo 4 Spécialité BAC S 2017, Liban

Message non lude Bisam » 11 Juin 2017, 12:51

2 questions :
1) La fonction "remainder(" sur z80, c'est à partir de quel OS ?
2) Est-ce vraiment au programme l'utilisation d'une fonction interne à la calculette (comme le calcul du reste d'une division euclidienne, par exemple) ?

J'imagine que tous les profs de spécialité ont expliqué la fonction "mod" ou les fonctions de division euclidienne à leurs élèves... mais est-ce exigible au Bac ?
Avatar de l’utilisateur
BisamAdmin
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Prochain niv.: 69.5%
 
Messages: 5665
Inscription: 11 Mar 2008, 00:00
Localisation: Lyon
Genre: Homme
Calculatrice(s):
MyCalcs profile

Re: Correction algo exo 4 Spécialité BAC S 2017, Liban

Message non lude critor » 11 Juin 2017, 12:58

Bisam a écrit:2 questions :
1) La fonction "remainder(" sur z80, c'est à partir de quel OS ?

Bonne remarque.
A partir des versions 2.xx il me semble, donc ça excluerait les TI-83 non-USB ainsi que les TI-82.

Mais ce ne sera plus un problème dans quelques semaines...

Bisam a écrit:2) Est-ce vraiment au programme l'utilisation d'une fonction interne à la calculette (comme le calcul du reste d'une division euclidienne, par exemple) ?

Niveau programmation, on est de toutes façons déjà hors programme avec une variable de type liste.
Mais on peut s'en tirer sans aucune programmation, en prenant le temps de tester/vérifier à la main pour chaque question de l'exercice.

Je trouvais juste qu'il était pertinent de montrer comment faire, vu le temps que cela fait gagner.

En tous cas, l'algorithme du sujet ne mentionne le reste que sur une seule ligne sans le détailler, et donc le référence comme quelque chose de déjà existant, de la même façon qu'un cosinus ou un logarithme.
Donc de même sur machine, il m'a paru fidèle de transcrire cet algorithme en appelant la fonction reste de la machine.
Elle n'est pas cachée, en français elle s'appelle reste() et se trouve très facilement dans :f41: :f26: .
Image
Avatar de l’utilisateur
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Prochain niv.: 41.8%
 
Messages: 41465
Images: 14479
Inscription: 25 Oct 2008, 00:00
Localisation: Montpellier
Genre: Homme
Calculatrice(s):
MyCalcs profile
YouTube: critor3000
Twitter/X: critor2000
GitHub: critor

Re: Correction algo exo 4 Spécialité BAC S 2017, Liban

Message non lude Adriweb » 11 Juin 2017, 13:00

critor a écrit:
Bisam a écrit:2 questions :
1) La fonction "remainder(" sur z80, c'est à partir de quel OS ?

Bonne remarque.
A partir des versions 2.xx il me semble, donc ça excluerait les TI-83 non-USB ainsi que les TI-82.

2.53MP, pour être plus précis.

critor a écrit:Mais ce ne sera plus un problème dans quelques semaines...

En effet...
Image

MyCalcs: Help the community's calculator documentations by filling out your calculators info!
MyCalcs: Aidez la communauté à documenter les calculatrices en donnant des infos sur vos calculatrices !
Inspired-Lua.org: All about TI-Nspire Lua programming (tutorials, wiki/docs...)
Avatar de l’utilisateur
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 80.1%
 
Messages: 14605
Images: 1216
Inscription: 01 Juin 2007, 00:00
Localisation: France
Genre: Homme
Calculatrice(s):
MyCalcs profile
Twitter/X: adriweb
GitHub: adriweb

Re: Correction algo exo 4 Spécialité BAC S 2017, Liban

Message non lude critor » 11 Juin 2017, 13:04

Ah, si récent que ça... :#roll#:
Ma TI Galaxy 10 des années 90 le faisait, donc c'est surprenant. :p
Image
Avatar de l’utilisateur
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Prochain niv.: 41.8%
 
Messages: 41465
Images: 14479
Inscription: 25 Oct 2008, 00:00
Localisation: Montpellier
Genre: Homme
Calculatrice(s):
MyCalcs profile
YouTube: critor3000
Twitter/X: critor2000
GitHub: critor

Re: Correction algo exo 4 Spécialité BAC S 2017, Liban

Message non lude Bisam » 11 Juin 2017, 13:34

Oui, en fait, je dis n'importe quoi à propos des fonctions.

Les fonctions à un seul argument sont courantes... mais celles à plusieurs arguments aussi, ne serait-ce que pour les probas !
Bref, ma remarque ne tient pas la route. C'est juste que j'étais étonné de l'utilisation de cette fonction en particulier.
Avatar de l’utilisateur
BisamAdmin
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Prochain niv.: 69.5%
 
Messages: 5665
Inscription: 11 Mar 2008, 00:00
Localisation: Lyon
Genre: Homme
Calculatrice(s):
MyCalcs profile

Re: Correction algo exo 4 Spécialité BAC S 2017, Liban

Message non lude critor » 11 Juin 2017, 13:41

Les fonctions à plusieurs variables étaient mentionnées au programme de Seconde de 2009.
Je n'ai pas encore bien fait attention à ça dans le nouveau programme de 2017, mais à mon avis ça reste d'une façon ou d'une autre puisque les algorithmes sont présentés comme des fonctions et peuvent prendre plusieurs arguments.

Après en pratique, on n'avait pas forcément le temps de faire grand chose avec, surtout quand les fonctions à 1 variable ne tournent déjà pas rond dans la tête de nombre d'élèves...

Moi j'y consacrais 1 activité concrète dans le contexte de l'algorithmique, avec le calcul de l'indice IMC même si certes on perdait alors l'écriture fonctionnelle, puis bien sûr 4-5 lignes de cours et des exos d'application avec des f(x,y).
Bref c'était fait, mais ça n'allait pas bien loin.
Image
Avatar de l’utilisateur
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Prochain niv.: 41.8%
 
Messages: 41465
Images: 14479
Inscription: 25 Oct 2008, 00:00
Localisation: Montpellier
Genre: Homme
Calculatrice(s):
MyCalcs profile
YouTube: critor3000
Twitter/X: critor2000
GitHub: critor

En ligne

Re: Correction algo exo 4 Spécialité BAC S 2017, Liban

Message non lude parisse » 11 Juin 2017, 19:41

Encore un sujet ou il s'agit de faire du reverse-engeneering au lieu de demander aux eleves de concevoir un algorithme alors qu'ici c'est quand meme tres simple avec deux boucles non imbriquees : on est quand meme avec des eleves de TS specialite maths! Si toutefois on craint que cela leur soit trop difficile de concevoir un algorithme de but en blanc, il est possible de donner une maquette a completer. Le travail demande aux eleves n'est pas creatif, en fait il s'apparente au travail d'un prof qui corrige des copies, c'est ininteressant. En plus, je suis persuade que les concepteurs font fausse route : comprendre une regle a partir d'un algorithme non commente est souvent plus difficile que l'inverse : ici il faut commencer par retenir des notations de variables qui ne deviennent claires qu'une fois la regle comprise, et l'utilisation de 2 variables pour faire les sommes est etrange (une seule variable suffit algorithmiquement parlant) tant qu'on n'a pas compris la regle, sans parler de la mise a l'ecart de c.
Sur HP Prime (et probablement sur TI nspire et ti89/92/v200 et peut-etre d'autre modeles) on peut remplacer les boucles par des sum. Voici l'algorithme en Xcas traduit sous forme d'une fonction prenant en argument une liste (noter que les indices commencent a 0 en Xcas d'ou le decalage):
Code: Tout sélectionner
f(l):=sum(irem(2*l[2*k],9),k,0,7)+sum(l[2*k+1],k,0,7);

Le meme prenant un nombre entier de 16 chiffres et renvoyant un entier qui doit etre multiple de 10, avec une variable locale pour stocker les chiffres du nombre
Code: Tout sélectionner
fonction f(x)
  local l,k;
  l:=revlist(convert(x,base,10)); // extraction des chiffres de x en base 10
  return sum(irem(2*l[2*k],9),k,0,7)+sum(l[2*k+1],k,0,7);
ffonction:;

Si le code de la carte commence par des 0, il faut rajouter la ligne de code suivante apres la definition de l:
Code: Tout sélectionner
  si size(l)<16 alors l:=concat(seq(0,16-size(l)),l); fsi;

Il n'y a vraiment pas beaucoup d'arithmetique la-dedans (la division euclidienne par 9 c'est du programme du primaire en fait!) et elle a ete rajoutee artificiellement car le veritable test des cartes bancaires ne calcule pas le reste de la division euclidienne par 9 mais retire 9 si on est plus grand que 9. Je m'en suis apercu en testant mon numero de carte bancaire qui est considere comme incorrect par la regle de cet exercice de bac.
Avatar de l’utilisateur
parisseVIP++
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Prochain niv.: 77.2%
 
Messages: 3499
Inscription: 13 Déc 2013, 16:35
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile

Re: Correction algo exo 4 Spécialité BAC S 2017, Liban

Message non lude critor » 16 Juin 2017, 21:17

parisse a écrit:Si toutefois on craint que cela leur soit trop difficile de concevoir un algorithme de but en blanc, il est possible de donner une maquette a completer.

En même temps, dans les IUFM/ESPE on présente le texte à trous comme la pire des abominations.
Je ne suis donc pas surpris que les algorithmes à trous restent extrêmement rares au BAC, même si personnellement je les sors régulièrement en DS (histoire qu'il y ait un minimum de "production" par l'élève).

Faire écrire un cours, c'est pas intéressant pour les élèves, faut pas faire.
Donner des polycopiés de cours pour passer plus rapidement à l'application, c'est pas bien puisque l'élève ne s'approprie pas le cours.
Donner des polycopiés à trous pour que l'élève soit obligé de suivre le cours, c'est exclu.

Conclusion logique ?
Ben je suppose qu'on a voulu nous faire comprendre qu'il ne fallait plus faire cours... :p
Image
Avatar de l’utilisateur
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Prochain niv.: 41.8%
 
Messages: 41465
Images: 14479
Inscription: 25 Oct 2008, 00:00
Localisation: Montpellier
Genre: Homme
Calculatrice(s):
MyCalcs profile
YouTube: critor3000
Twitter/X: critor2000
GitHub: critor

Re: Correction algo exo 4 non-Spé BAC S 2017, Centres Etrang

Message non lude critor » 17 Juin 2017, 09:22

@parisse Ah ben voilà, tu vas être content je pense, et l'ESPE aussi :
Image

La toute première fois que ça tombe au BAC il me semble, hier en Polynésie française.
En plus, c'est l'algo type présent dans l'écrasante majorité des sujets, avec recherche d'un seuil sur une suite récurrente.

Sauf que... c'est le sujet pour non spécialites commun aux séries ES/L.
J'ai peur qu'il y ait eu beaucoup de dégâts, avec nombre de candidats sautant la question (ou pire le reste de l'exercice alors que c'est sans rapport).
De quoi convaincre les concepteurs de sujets de ne pas récidiver, je crains. :(

https://toutmonexam.fr/epreuve.php?id=1910

En passant, je l'ai corrigé.
viewtopic.php?f=61&t=20169#p218633
En détaillant/justifiant la production de l'algorithme.
Image
Avatar de l’utilisateur
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Prochain niv.: 41.8%
 
Messages: 41465
Images: 14479
Inscription: 25 Oct 2008, 00:00
Localisation: Montpellier
Genre: Homme
Calculatrice(s):
MyCalcs profile
YouTube: critor3000
Twitter/X: critor2000
GitHub: critor

Suivante

Retourner vers Corrections BAC avec calculatrice

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité

-
Rechercher
-
Social TI-Planet
-
Sujets à la une
Comparaisons des meilleurs prix pour acheter sa calculatrice !
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
Phi NumWorks jailbreak
123
-
Faire un don / Premium
Pour plus de concours, de lots, de tests, nous aider à payer le serveur et les domaines...
Faire un don
Découvrez les avantages d'un compte donateur !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partenaires et pub
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
1255 utilisateurs:
>1235 invités
>15 membres
>5 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)
-
Autres sites intéressants
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)