Rechercher
 
 

Résultats par :
 


Rechercher Recherche avancée

Connexion

Récupérer mon mot de passe

Chatbox externe


Derniers sujets
» [JEU] Mon voisin du dessous
Dim 3 Sep 2017 - 19:50 par Clément.7

» Lancement du TI-Concours 2017 !
Sam 20 Mai 2017 - 0:27 par Paulo1026

» Chaînes Youtube des membres
Ven 19 Mai 2017 - 22:41 par Wistaro

» cacul du taux d'intêret
Ven 24 Mar 2017 - 21:50 par m@thieu41

» [Projet] Un mario by tout82
Dim 29 Jan 2017 - 14:09 par Wistaro

» Cherche documentation assembleur TI82stat
Mer 25 Jan 2017 - 12:29 par Ti64CLi++

» Probleme Ti-82 Stats fr
Jeu 12 Jan 2017 - 13:56 par Ti64CLi++

» ROM 82 stats.fr
Jeu 15 Déc 2016 - 10:24 par Ti64CLi++

» flappy bird
Jeu 15 Déc 2016 - 10:23 par Ti64CLi++

Partenaires
TI-Planet Espace-TI : Forum

Faire un don à Tout-82...
Où va cet argent ?
Membres donateurs:- Persalteas (10€)
- Wistaro (5€)
- jo2geek (22€)

Les posteurs les plus actifs du mois
Ti64CLi++
 
Clément.7
 


Résultat étrange avec booléens

Voir le sujet précédent Voir le sujet suivant Aller en bas

Résultat étrange avec booléens

Message par Mingerton le Mar 11 Nov 2014 - 12:02

Salut à tous !

L'autre jour notre prof nous a "prescrit" un programme pour réaliser l'encadrement d'une solution par dichotomie. Un truc à la con donc, vraiment pas compliqué.

Seulement j'ai pas pu m'empêcher de le revoir un petit coup pour l'optimiser, et j'ai rencontré un problème dans la gestion de conditions à partir de booléens. Ce type de choses ne me pose d'habitude aucun problème dans mes codes, mais là on voit que le résultat diffère selon si les booléens sont utilisés ou pas.

Le code fonctionnel, sans les booléens :

Code:
Input "Y1=?",Str1
Prompt A,B,E
Str1->Y1
Repeat E-B+A>0
.5(A+B->M
If Y1(A)Y1(M)≤0
Then
M->B
Else
M->A
End
End
Disp A,B

// Valeurs à l'entrée : Y1=x^3-6x^2+6
//A=0 ; B=4 ; E=0,01
//Valeurs en sortie : A=1,1015625 ; B=1,109375

Après vérification, pour ces entrées les bonnes valeurs de A et B en sortie sont bien celles que j'ai citées dans ce code.

Maintenant, le code défectueux qui me semble pourtant correct :

Code:
Input "Y1=?",Str1
Prompt A,B,E
Str1->Y1
Repeat E-B+A                     //<-Cas n°1
.5(A+B->M
If not(Y1(A)Y1(M                //<-Cas n°2
Then
M->B
Else
M->A
End
End
Disp A,B

Dans le cas n°1, les valeurs en sortie sont 0 et 2. Dans le cas n°2, les valeurs en sortie sont 3,9921875 et 4, avec bien sûr les mêmes valeurs en entrée. Dans le cas 1+2, les valeurs en sortie sont 2 et 4.

Voilà, je comprends pas bien ce qui se passe, pourquoi lorsque j'utilise un booléen qui a a priori le même effet je n'obtiens pas le même résultat.scratch
avatar
Mingerton
----------------------
----------------------

Messages : 251
Points Concours : 103
Productivité : 5
Date d'inscription : 10/10/2013
Localisation : Comté de Kerry, Irlande

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Résultat étrange avec booléens

Message par Linkakro le Mar 11 Nov 2014 - 17:01

Tu as oublié le raisonnement de conversion entre nombre et booléen dans les langages C et TI-Basic.
Tu dois effectuer des comparaisons d'ordre tandis que tes modifications effectuent uniquement des comparaisons d'égalité à zéro.
En effet tout nombre non nul est vrai et seul zéro est faux.
Code:
If A
If A!=0

If not(A
If A=0

If A>0
If not(A<=0
Code:

E-B+A>0
E>B-A

E-B+A
E-B+A != 0

If Y1(A)Y1(M)≤0
Y1(A)<0 and Y1(M)>0 or Y1(A)>0 and Y1(M)<0 or Y1(A)Y1(M)=0   

not(Y1(A)Y1(M
Y1(A)Y1(M)=0
Je suis curieux de votre point de vue à propos d'un détail. La condition Y1(A)Y1(M)≤0 sert à repérer l'opposition de signe. Ce n'est pas ce que j'avais en tête ( Y1(M)>0 ) mais c'est cool ! Comme ça pas besoin de prévoir à l'avance la comparaison de Y1(A) et Y1(B).


Dernière édition par Linkakro le Mar 11 Nov 2014 - 17:25, édité 1 fois

__________________________________________________________________________
Vétéran du TI-Basic Zilog80. Ti82statfr sur Tout82 depuis 2009 et ti84pocketfr depuis noël 2012. Ti83plusfrUSB (été 2014, concours tiplanet suite du geek). Bidouille un peu d'assembleur Z80.
Incappable de gérer le temps et manque de tact, plutôt serviable.
Je prend les commandes de programme. Je suis motivé par les maths et la physique tant que ce n'est pas une simple copie d'antisèche.
Vous pouvez trouver une grande partie de mes données hébergées dans mon mediafire. Le ZIP et la liste sont périmées depuis longtemps.
coucou Invité What a Face
avatar
Linkakro
----------------------
----------------------

Messages : 533
Points Concours : 55
Productivité : 31
Date d'inscription : 30/07/2013
Localisation : origine région centre, puis perpignan
Calculatrice(s) :
  • TI-82 Stats.fr

. : TI-82 Stats.fr

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Résultat étrange avec booléens

Message par Mingerton le Mar 11 Nov 2014 - 17:16

Ah ok ! je pensais qu'un négatif correspondait à faux, alors qu'en fait c'est que 0. Donc du coup je pense que je vais laisser le code où il est, puisque j'y gagne rien en espace et en vitesse avec des "optimisations" en plus.

Deux derniers trucs :

Code:
Input "Y1=?",Str1          // Remarque n°1
Prompt A,B,E
Str1->Y1
Repeat E-B+A>0
.5(A+B->M
If Y1(A)Y1(M)≤0            // Remarque n°2
Then
M->B
Else
M->A
End
End
Disp A,B

- Y a t'il un moyen plus simple de demander l'expression de la fonction autrement qu'en passant par une chaîne, comme je l'ai fait ?
- Lorsque je retire la dernière parenthèse de la ligne, les affichages changent. Comment ça se fait ?

Merci en tout cas (pour le compliment sur la condition) Bien Joué
avatar
Mingerton
----------------------
----------------------

Messages : 251
Points Concours : 103
Productivité : 5
Date d'inscription : 10/10/2013
Localisation : Comté de Kerry, Irlande

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Résultat étrange avec booléens

Message par Linkakro le Mar 11 Nov 2014 - 17:31

Il est possible de saisir une équation de courbe Y# avec Prompt ou Input, mais cela obligera à ajouter des guillemets comme pour Prompt d'une chaîne Str#.

Voici comment est interpétée ta condition sans la dernière parenthèse fermante et la solution pour l'éviter.
Code:
erreur
Y1(A)Y1(M≤0
Y1(A)Y1(M≤0)

solution
0≥Y1(A)Y1(M

__________________________________________________________________________
Vétéran du TI-Basic Zilog80. Ti82statfr sur Tout82 depuis 2009 et ti84pocketfr depuis noël 2012. Ti83plusfrUSB (été 2014, concours tiplanet suite du geek). Bidouille un peu d'assembleur Z80.
Incappable de gérer le temps et manque de tact, plutôt serviable.
Je prend les commandes de programme. Je suis motivé par les maths et la physique tant que ce n'est pas une simple copie d'antisèche.
Vous pouvez trouver une grande partie de mes données hébergées dans mon mediafire. Le ZIP et la liste sont périmées depuis longtemps.
coucou Invité What a Face
avatar
Linkakro
----------------------
----------------------

Messages : 533
Points Concours : 55
Productivité : 31
Date d'inscription : 30/07/2013
Localisation : origine région centre, puis perpignan
Calculatrice(s) :
  • TI-82 Stats.fr

. : TI-82 Stats.fr

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Résultat étrange avec booléens

Message par Mingerton le Mar 11 Nov 2014 - 17:49

Pour la parenthèse, j'ai pensé à ça aussi, mais je voulais comprendre ce qui se passait.

Donc on a quelque chose comme ça :
Code:
Prompt Y1,A,B,E
Repeat E>B-A
.5(A+B->M
If 0≥Y1(A)Y1(M
Then
M->B
Else
M->A
End
End
Disp A,B

Ok c'est parfait ! Bien Joué
avatar
Mingerton
----------------------
----------------------

Messages : 251
Points Concours : 103
Productivité : 5
Date d'inscription : 10/10/2013
Localisation : Comté de Kerry, Irlande

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Résultat étrange avec booléens

Message par Linkakro le Mar 11 Nov 2014 - 17:57

Tu as oublié depuis ta seconde intervention que tu peux écrire E>B-A. J'édite ton dernier message directement pour ne pas se répéter.

__________________________________________________________________________
Vétéran du TI-Basic Zilog80. Ti82statfr sur Tout82 depuis 2009 et ti84pocketfr depuis noël 2012. Ti83plusfrUSB (été 2014, concours tiplanet suite du geek). Bidouille un peu d'assembleur Z80.
Incappable de gérer le temps et manque de tact, plutôt serviable.
Je prend les commandes de programme. Je suis motivé par les maths et la physique tant que ce n'est pas une simple copie d'antisèche.
Vous pouvez trouver une grande partie de mes données hébergées dans mon mediafire. Le ZIP et la liste sont périmées depuis longtemps.
coucou Invité What a Face
avatar
Linkakro
----------------------
----------------------

Messages : 533
Points Concours : 55
Productivité : 31
Date d'inscription : 30/07/2013
Localisation : origine région centre, puis perpignan
Calculatrice(s) :
  • TI-82 Stats.fr

. : TI-82 Stats.fr

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Résultat étrange avec booléens

Message par Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum