Poster un nouveau sujet Poster une réponse
While et Repeat
Auteur Message
Alain
Invité
Posté le : Lun 12 Aoû 2013, 15:26   Citer 

Bonjour,

Je dispose d'un algorithme que je souhaite entrer sur ma TI82.
Je n'y arrive cependant pas.

Voici le programme en langage naturel :

Entrée : U
Traitement : Afficher U
et sortie :
Tant que A différent de 1
Si U est pair
Affecter la valeur U/2 à U
Sinon
Affecter la valeur (3U + 1)/2 à U
Afficher U

Voici ce que j'ai tapé :

Prompt U
While U=/1
Repeat
If int(U/2)=U
Then (U/2)-> U
Else
(3*U+1)/2->U
End
Disp "U=",U

Je ne suis pas très doué, quelqu'un pourrait-il m'expliquer pourquoi cela ne fonctionne pas ? (apparemment ca plante au niveau du Repeat)

  Haut de page Bas de page 
 
m@thieu41



Autorisation : Membre
Nb de messages : 848
Inscrit le : Mer 18 Juil 2012, 18:44
Posté le : Lun 12 Aoû 2013, 20:43   Citer 

Bonjour!

Après // ce sont des commentaires

Code
//Explications par rapport à ton code:
Prompt U

While U!=1  //Te serait tu trompé dans ton code en langage "naturel"? (tu as mis A

//Repeat équivaut à jusqu'à, et n'a rien à faire ici

If int(U/2)=U
Then
(U/2)->U //Retour à la ligne obligatoire!
Else
(3*U+1)/2->U
End

Disp "U=",U

End //Fin de la boucle (tu l'as oublié je ne sais pas où le mettre précisément)



Le code épuré de commentaires:

Code
Prompt U
While U!=1
If int(U/2)=U
Then
(U/2)->U
Else
(3*U+1)/2->U
End
Disp "U=",U
End



Est tu sur d'avoir bien recopié le code en langage naturel? il manque la fin du tant que, je ne suis pas sur d'où le placer...
Et le traitement et la sortie semblent être inversés...

----------------------
Pour vous aidez dans vos débuts (et même ensuite ^^) :
*Tuto Algo->Ti Basic (par Linkakro) : Traduisez vos algo (de type algobox) en prgm pour votre TI!
*Catalogue des emplacements et traductions (anglais/français) des fonctions sur la TI.
*Faites vos propres programmes de maths (par ash)

Et au fait: la politesse n'a jamais tué personne winkle.gif
 Adresse email Haut de page Bas de page 
 
Alain
Invité
Posté le : Lun 12 Aoû 2013, 22:07   Citer 

Bonjour,

Merci pour ta réponse.
Je me suis effectivement trompé pour le A (il s'agissait de U).

Je te remercie de m'avoir fait remarquer qu'il fallait aller à la ligne après le Then
Je m'étais par ailleurs trompé : u pair équivaut à int(U/2) = U/2 (j'avais oublié le /2)


L'algorithme en langage naturel ne précise pas où est la fin du Tant que. (après le Afficher U vu la présentation).

En tout cas, le programme semble donner ce qu'il faut.
Merci.

  Haut de page Bas de page 
 
m@thieu41



Autorisation : Membre
Nb de messages : 848
Inscrit le : Mer 18 Juil 2012, 18:44
Posté le : Lun 12 Aoû 2013, 22:49   Citer 

Effectivement ça marche en faisant If U/2=int(U/2

C'est ce que j'ai trouvé dans certains des prgm proposé par le manuel de 1ère, mais je ne comprends pas la logique de faire ça: plutot que d'introduire la fonction partie entière, pourquoi ne pas tester directement la partie décimale tant qu'à faire?
Enfin...

Donc on peut aussi considérer que si U/2 a une partie décimale, c'est qu'il est impair. Sinon (si sa partie décimale est nulle), il est pair.

Il existe pour ça la fonction fPart (PartDéc en français), qui renvoi la partie décimale d'un nombre passé en argument.

Ex:
fPart(5.6 //Renvoi .6
fPart(89 //Renvoi 0
fPart(3.5 //Renvoi .5
fPart(4/2 //Renvoi 0
fPart(7/2 //Renvoi .5

Tu peux donc faire:

Code
Prompt U
While U!=1
If fPart(U/2 //On teste si U/2 possède une partie décimale (si U est impair donc)
Then
(3U+1)/2->U  //Impair
Else
(U/2->U  //Pair
End
Disp "U=",U
End


Remarque: Les calculs pair/impairs sont donc inversé puisqu'on teste si U est impair.

----------------------
Pour vous aidez dans vos débuts (et même ensuite ^^) :
*Tuto Algo->Ti Basic (par Linkakro) : Traduisez vos algo (de type algobox) en prgm pour votre TI!
*Catalogue des emplacements et traductions (anglais/français) des fonctions sur la TI.
*Faites vos propres programmes de maths (par ash)

Et au fait: la politesse n'a jamais tué personne winkle.gif
 Adresse email Haut de page Bas de page 
 
Poster un nouveau sujet Poster une réponse





  Page générée en 6 requêtes