Tout 82
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
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
Résultat étrange avec booléens EmptyDim 16 Oct 2022 - 21:11 par Wistaro

» Bonne année 2018!
Résultat étrange avec booléens EmptyVen 2 Nov 2018 - 19:42 par Ti64CLi++

» Lancement du TI-Concours 2017 !
Résultat étrange avec booléens EmptySam 20 Mai 2017 - 0:27 par Paulo1026

» Chaînes Youtube des membres
Résultat étrange avec booléens EmptyVen 19 Mai 2017 - 22:41 par Wistaro

» cacul du taux d'intêret
Résultat étrange avec booléens EmptyVen 24 Mar 2017 - 21:50 par m@thieu41

» [Projet] Un mario by tout82
Résultat étrange avec booléens EmptyDim 29 Jan 2017 - 14:09 par Wistaro

» Cherche documentation assembleur TI82stat
Résultat étrange avec booléens EmptyMer 25 Jan 2017 - 12:29 par Ti64CLi++

» Probleme Ti-82 Stats fr
Résultat étrange avec booléens EmptyJeu 12 Jan 2017 - 13:56 par Ti64CLi++

» ROM 82 stats.fr
Résultat étrange avec booléens EmptyJeu 15 Déc 2016 - 10:24 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
Aucun utilisateur

-40%
Le deal à ne pas rater :
Tefal Ingenio Emotion – Batterie de cuisine 10 pièces (induction, ...
59.99 € 99.99 €
Voir le deal

Résultat étrange avec booléens

2 participants

Aller en bas

Résultat étrange avec booléens Empty Résultat étrange avec booléens

Message par Mingerton 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
Mingerton
Mingerton
----------------------
----------------------

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

Revenir en haut Aller en bas

Résultat étrange avec booléens Empty Re: Résultat étrange avec booléens

Message par Linkakro 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
Linkakro
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

Revenir en haut Aller en bas

Résultat étrange avec booléens Empty Re: Résultat étrange avec booléens

Message par Mingerton 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é
Mingerton
Mingerton
----------------------
----------------------

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

Revenir en haut Aller en bas

Résultat étrange avec booléens Empty Re: Résultat étrange avec booléens

Message par Linkakro 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
Linkakro
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

Revenir en haut Aller en bas

Résultat étrange avec booléens Empty Re: Résultat étrange avec booléens

Message par Mingerton 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é
Mingerton
Mingerton
----------------------
----------------------

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

Revenir en haut Aller en bas

Résultat étrange avec booléens Empty Re: Résultat étrange avec booléens

Message par Linkakro 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.
Linkakro
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

Revenir en haut Aller en bas

Résultat étrange avec booléens Empty Re: Résultat étrange avec booléens

Message par Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Revenir en haut

- Sujets similaires

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