Poster un nouveau sujet Poster une réponse
Début dans la programmation
Auteur Message
Kilo.
Invité
Posté le : Lun 28 Nov 2011, 21:59   Citer 

Bonsoir à tous et à toutes,

Je sais qu'un bon nombre de personnes vont répondre assez vite à ce sujet "qu'il faut chercher, utiliser la fonction recherche, ou taper ce qu'on cherche sur son moteur de recherche préféré..bref si vous n'avez pas envie de répondre je ne vous y contraint pas, j'ai brièvement regarder les sujets proposés et aucun n'y réponds, et au moins ça aidera les prochains happy.gif

Alors voili voilou, je n'y connais pas grand chose en programmation, à vrai dire je suis tout juste au dessus de ceux qui n'y connaissent rien (les gens en général) étant donné que j'ai un ami qui se plait à en parler et au bout d'un moment, qu'on le veuille ou non, ça rentre. Breeeef, je suis en Terminale S et je crois savoir que plusieurs personnes n'aiment pas voir les TS entrer des programmes de résolutions d'équation ou autre sur leur calculette (ça n'aide pas), tout ça pour dire que ça n'est pas mon cas. Il s'avère que les algorithmes auraient des chances de tomber au bac cette année et devant un problème simple ré-solvable à la main donné par mon professeur de maths (du genre tant qu'on a pas la valeur voulue, on ajoute 1 à x, jusqu'à toucher la valeur voulue..mais dans une expression avec des puissances, racines et tout partout ça se complique vite: faisons un algorithme!), j'ai carrément adoré le principe même parler à sa calculette pour lui faire faire son boulot. Enfin j'ai bien aimé quoi, c'était sympa (même si je sais toujours pas quoi faire).

J'ai lu au bout de deux ans le manuel d'utilisation de la TI-82 Stats.fr, j'ai téléchargé le pavé de 520 pages (oui, 520!) qui sert de "manuel d'utilisation", bref je sais à quoi servent les fonctions pour les plus simples (if, else, input, etc) mais je manque un peu de compréhension face à des "Lbl" qui disent définir une étiquette..j'ai du mal à voir certaines choses quoi.


J'ai commencé comme quasiment tout le monde avec le fameux programme "Quel âge avec vous?" et tout ce qui en suit. Mais voila, j'aimerai savoir:

1. Je vois bcp de programmes (sur le net) pour calculette ou tout est bien syntaxé, genre "Then" et en dessous ce à quoi ça correspond mais..est-ce possible de passer directement à la ligne suivante sur calculette ou c'est pour la mise en page et une compréhension plus facile du morceau de code?

2. Si l'on ne peut pas passer à la ligne directement, qu'est-ce qui sépare deux fonctions ou deux "trucs" de morceaux de codes? Certaines fois le point et d'autre la virgule il me semble, mais qui dans quels cas?

Et donc surtouuut tout est bon à prendre, je ne cherche pas à devenir un grand professionnel mais surtout assimiler les bases assez rapidement, j'essayerai de développer le reste seul pour le plaisir happy.gif


Bonne soirée.

  Haut de page Bas de page 
 
Persalteas



Autorisation : Membre
Nb de messages : 2086
Inscrit le : Sam 23 Jan 2010, 20:09
Posté le : Lun 28 Nov 2011, 22:46   Citer 

Salut, et bienvenue dans le monde de la progra...

Je n'ai pas compris ta question a propos du Then...

En gros, tu dois séparer tes instructions dans un programme par les deux points ":" .

Le plus simple, c'est de faire un retour à la ligne, puisque ça les fait automatiquement, mais tu peux très bien écrire tout à la suite, bien que ce soit illisible et dangereux.


Code
If A=6:Then:Disp A:Pause:Disp A/2:End:Input B:Disp B/A



Techniquement, tu as le droit, ça marche.
Mais alors, si tu codes comme ça, heureusement pour toi que tu ne souhaites pas te lancer dans la programmation de jeux ou trucs compliqués.

Assez souvent, c'est vrai qu'on regroupe le Then avec le If. Mais c'est pas obligatoire.


Code

:If A=6:Then
:Disp A
:Pause
:Disp A/2
:End
:Input B
:Disp B/A




ensuite: la virgule ne sert pas à séparer des instructions dans un programme, mais des informations dans une fonction.

C'est important, car mettre trop ou pas assez de virgules entraine des ERR:ARGUMENT .

exemple:


Code

:For(A,1,7
:Disp "LIGNE",A
:End



Les points, il servent juste pour faire virgule dans les nombres (3.14159...).

Dans certains langages de progra sur TI, ils sont l'équivalent du // en C++, mais pas en TI Basic (le langage "normal" sur TI 82 stats.fr).

Si t'as d'autres questions, hésite pas...

 Adresse email Haut de page Bas de page 
 
linkakro



Autorisation : Membre
Nb de messages : 3738
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Mar 29 Nov 2011, 19:12   Citer 

Rappelle qu'il ne faut pas mettre de End quand il n'y a pas de Then.
De plus l'abscence de then/end signifie que seule une ligne en dessous du if dépend alors du test du if.
(cela me semble important car j'ai moi-même buté sur ça)

----------------------
ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)

Pour tout le monde et surtout les débutants, quelques-uns des articles courants :
*Traductions Algorithmie/Ti-Basic.
*Caractères spéciaux sur Tout82
Les défauts du TI-Basic : Goto_versus_algo et DelVar/End/Lbl/guillemet/store
 Adresse email Haut de page Bas de page 
 
Google_AdSense



Publicité    



 
Kilo.
Invité
Posté le : Mer 30 Nov 2011, 20:06   Citer 

A vrai dire, voici le problème.

n est l'entier naturel le plus petit possible tel que:
(2^n + 3^n)/n > N
(N étant un nombre donné dans l'ennoncé qui s'avère assez souvent trop grand pour calculer le petit n qu'on cherche à la main)

Naturellement, j'ai compris (et de mémoire c'est ce que le prof a raconté):
- Il faut donner à la calculette la valeur de N et affecter à n la valeur 0 (bien qu'on sache que 0 n'est pas solution, on commence le plus tôt possible.
- Il faut donner à la calculette l'expression (2^n + 3^n)/n < N et lui dire de remplacer n par n+1 tant qu'on y est pas.
- Et dire à la calculette de nous afficher le n qu'elle a trouvé (ça serait dommage qu'elle travaille pour rien (: )


Bon, pour commencer je pose A= (2^n + 3^n)/2 pour pouvoir écrire à ma calculette "tant que A < N.." car je sais pas le faire autrement. Ah et je pose N = 1000 parce que c'est rond, voila!

Donc bon, ce qui me vient à l'esprit c'est à priori ça:

:A=0
:If A<1000
:Then
:Disp A
:Else A=A+1
:Then
:Disp A
:End

Bon je me rends bien compte que c'est pas ça, que ça marche juste quand je le lit dans ma tête, car je le lit:
:A fait 0 (en bon français on initialise A à 0 mais je vois vraiment pas cmt le dire)
:Si A est inférieur à 1000, alors afficher A
:Mais sinon affecter à A la valeur de A+1 (notre prof de maths nous a dit que dans certaines programmes c'était un "=" entre le A et le A+1, dans d'autres une flèche, que ça dépend de la machine..or je ne sais pas ou est la flèche donc par défaut, forcément)
bigmouth.gifès que ça marche afficher A.


Mais jme doute que c'est pas ça, que pour la calculette elle comprends pas tout non plus et qu'elle applique rien. Je vois bien que le programme n'est pas assez "nourri", car visiblement la traduction de français à un programme rajoute pas mal de lignes, vu qu'il faut tout lui dire à cette calculette!
Je vois à peu près ou il manque des choses, mais je ne sais pas ce qu'il manque à la calculette..

  Haut de page Bas de page 
 
Google_AdSense



Publicité    



 
Kilo.
Invité
Posté le : Mer 30 Nov 2011, 20:13   Citer 

(petite parenthèse: ça me pose problème d'écrire A=A+1 car forcément l'égalité n'est pas vrai, mais même avec une jolie flèche au milieu, j'en viens à me demander comment la calculette interprète ceci!

:Else A->A+1 (même si c'est faux, le raisonnement est là).

Donc si j'ai pas atteint la valeur voulue, j'attribue à A la valeur de A+1.


C'est ce qui se passe lorsque la calculette essaye le calcule pour A=0 ou A+1 selon ou l'on a initialisé A (à partir de quelle valeur de A la calculette commence à calculer quoi).


Or là j'ai juste écrit de passer de A à A+1, pas après de passer de A à A+2 ou une quelconque autre notation.

Enfin bref, il faudra que j'arrive à dire à ma calculette d'essayer les nombres du plus petit au plus grand à partir du premier A, soit en lui disant de faire A->B (définissant B comme A+1), C->B+1 (définissant C comme B+1), D->C+1 (définissant D comme C+1), bref m'amuser à tout écrire comme un beubeu...

soit arriver à créer une récurrence qui dit que si on a pas ce qu'on veut, on ajoute 1 à A, une formule de récurrence quoi.

Or je ne sais pas comment dire à ma calculette de faire de la récurrence donc de monter la valeur de n d'un cran à chaque fois sans lui fixer la valeur de tout les crans!



Bref comme je ne sais pas programmer je ne sais pas comment dire à ma calculette "d'affecter au n précédant -qui n'arrive pas à toucher N- la valeur de N+1, et sans faire des milliers de lignes de codes!)

(j'excuse les pavés)

EDIT Persalteas: Pour les pavés, il y a juste a utiliser la touche [entrée] sur un clavier azerty moyen, et hop, ça marche ! glasses.gif

  Haut de page Bas de page 
 
Persalteas



Autorisation : Membre
Nb de messages : 2086
Inscrit le : Sam 23 Jan 2010, 20:09
Posté le : Mer 30 Nov 2011, 20:55   Citer 

Alors...

ton algorithme est parfaitement faisable, je vais essayer de t'expliquer deux trois trucs...

- pour initialiser A à la valeur de A+1, il faut juste mettre dans l'autre sens:


Code

A+1->A



- pour éviter d'avoir a enregistrer plein de lettre ou de faire un tableau:

Il te faut utiliser une fonction de boucle que tu ne connais apparemment pas (je te rassure c'est normal si tu débutes).

Il s'agit de For(

Code

For(  lettre  ,  valeur début   , valeur fin 
...
calculs et patati et patata
...
End



Avec cette fonction, tout le code que tu rentreras entre le For et le End se répètera, chaque fois avec une valeur de A différente (qui vaut 1 de plus).

La première fois, A vaudra la valeur de début, la seconde fois la valeur de début +1, la troisième fois la valeur de début +2 ... etc jusqu'à atteindre la valeur finale.

Donc:

Appelons ton "N" avec la lettre N, et ton "n" avec la lettre A.

ton algo se traduit par:

Code
:Prompt N
:For(A,0,10^99
:If (2^A+3^A)/A > N
:Goto Z
:End
:Lbl Z
:Disp A



En gros:

La TI te demande une valeur pour N (donnée par l'énoncé apparemment).

puis, pour toutes les valeurs de A entre 0 et l'infini, la TI va tester (2^A+3^A)/A > N .

Si c'est vrai, le Goto Z fera passer a la suite du programme (là ou est le Lbl Z) pour sortir de la boucle avant d'être obligé d'attendre que la TI arrive à l'infini.

Le Disp A affiche la valeur de n que tu cherches.

CQFD. godgrace.gif

Des questions ?

 Adresse email Haut de page Bas de page 
 
The K



Autorisation : Membre
Nb de messages : 850
Inscrit le : Sam 15 Oct 2011, 11:07
Posté le : Mer 30 Nov 2011, 21:01   Citer 


Code
:A=0
:If A<1000
:Then
:Disp A
:Else A=A+1
:Then
:Disp A
:End



Peut donner, si on en suit ta logique :


Code

EffVar A
While 1
If A<1000
Then
Disp A
Else
A+1->A
Disp A
End
End



Des éclaircissements :
EffVar A = 0-> A, mettre 0 dans A (la flèche est la touche sto juste au dessus du On)
While 1 = une boucle infinie, pour faire continuer de tourner le programme
If A<1000 = si a est plus petit que 1000
Then = alors
Disp A = afficher A
Else = sinon (attention ! ne jamais rien écrire après un then/else !)
A+1->A = mettre la valeur 1+A dans A
Disp A
End = fin du "if"
End = fin du While

Bon après clairement ce programme n'apporte rien du tout, puisque A sera TOUJOURS inférieur à 1000, du fait que l'on n'augmente pas sa valeur pour A=0.
Et il faut appuyer sur On pour l'arrêter aussi ^^'

Je précise que j'ai fait l'algorithme, enfin, que tu proposais, pour qu'il soit syntaxiquement correct. winkle.gif

Afin qu'il soit mathématiquement correct, je propose ceci :


Code

Prompt N
1->M
While (2^M+3^M)/M<N
M+1->M
End
Disp M



En explications :
Prompt N : demande N le nombre qu'il faut dépasser pour (2^n + 3^n)/n
1->M : met la valeur 1 dans M, qui remplace ici le petit n
While (2^M+3^M)/M<N : tant que (2^M+3^M)/M est plus petit que N
M+1-> M : mettre la valeur M+1 dans M
End : fin du while
Disp M : afficher M
Voila voila ...

Dans les faits, je pense que ce programme sera assez long surtout si N est élevé karate.gif

----------------------
La la la ...

Avez-vous pensé à regarder le manuel avant de demander conseil ? Un manuel est fait avant tout pour être consulté : MANUEL

Vous avez un problème avec l'ordinateur avec votre calculatrice ? SOLUTION EN VIDEO

Mes programmes sur le site : Produit scalaire KMorpion Puissance 4 Mastermind

Mes nouveaux programmes de calcul formel : FCarré FPrime

Projet base de données : ici mais abandonné. Trop de travail ...
 Adresse email Haut de page Bas de page 
 
Persalteas



Autorisation : Membre
Nb de messages : 2086
Inscrit le : Sam 23 Jan 2010, 20:09
Posté le : Mer 30 Nov 2011, 21:04   Citer 

HA !

t'as posté en retard-euh...

godgrace.gif

 Adresse email Haut de page Bas de page 
 
The K



Autorisation : Membre
Nb de messages : 850
Inscrit le : Sam 15 Oct 2011, 11:07
Posté le : Mer 30 Nov 2011, 21:07   Citer 

Mais-euh ! cry.gif

En plus j'ai vu ton edit m'suis dit ... tiens ? il va post ?
Bah gagné laugh.gif

----------------------
La la la ...

Avez-vous pensé à regarder le manuel avant de demander conseil ? Un manuel est fait avant tout pour être consulté : MANUEL

Vous avez un problème avec l'ordinateur avec votre calculatrice ? SOLUTION EN VIDEO

Mes programmes sur le site : Produit scalaire KMorpion Puissance 4 Mastermind

Mes nouveaux programmes de calcul formel : FCarré FPrime

Projet base de données : ici mais abandonné. Trop de travail ...
 Adresse email Haut de page Bas de page 
 
Kilo.
Invité
Posté le : Mer 30 Nov 2011, 22:03   Citer 

Cela maaaaaarche, c'est beau (j'ai essayé avec le code de persalteas et non The-K vu que c'est le premier lu).

A remarquer aussi qu'il y avait une petite erreur (de ma part aussi, ayant voulu initialiser A à 0), l'expression étant une fraction son dénominateur est forcément différent de 0, donc on initialise à 1.

Je relirai tout clairement en détail demain, j'ai d'autres choses à finir ce soir, mais clairement "Goto Z", ça veut dire "ne pas faire le reste des valeurs de A jusqu'à 10^99 (dans le cas-là)" ?

La lettre Z ça fait un peu "fin" forcément, mais si on aurait mit une autre lettre aurait-ce marché, ou bien seul le Z après Goto amène à la fin de la boucle (complètement inutile mais voilà, curiosité de savoir si Z est définit comme tel de base)?


Le "End" ne se place donc pas à la fin du code complet (comme ça pourrait l'indiquer quand même), mais entre la partie qui exécute et la partie qui transmet à l'utilisateur (moi en l'occurrence), dans tout les cas?

Et Lbl Z..qui est-ce? J'ai juste un peu de mal de Goto à Lbl pour comprendre le pourquoi du sens des instructions.
J'ai beau savoir à quoi ça correspond, savoir que Lbl "définit une étiquette" d'après le manuel d'utilisation, ça ne m'aide pas bcp happy.gif

(les questions posées ne sont pas d'une importance primordiale, c'est plus pour comprendre l'intérieur de la machine et son "langage" que par non compréhension en lui même)

EDIT persalteas: oublie pas: la touche [entrée] ! winkle.gif

  Haut de page Bas de page 
 
linkakro



Autorisation : Membre
Nb de messages : 3738
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Mer 30 Nov 2011, 22:39   Citer 

End sert à fermer une boucle.

Code
code...
While      // entrée d'une boucle (ici c'est while)
code...
End        // sortie de la boucle
code...

Goto A sert à envoyer au Lbl A.
Goto B sert à envoyer au Lbl B.
Quand un Goto est lu, la calculatrice recherche le Lbl (Lbl=label=étiquette) portant le même nom(=étiquette) que le Goto qui vient d'être lu.
Le reste du programme n'a pas d'influence quand un Goto est executé.

Goto Z sert ici à sortir de la boucle. Par habitude on appelle souvent la sortie Z. C'est plus pratique quand le programme est long.

De plus les noms de gotos et lbl sont toujours des chiffres et/ou des lettres groupés par 1 ou par 2.

----------------------
ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)

Pour tout le monde et surtout les débutants, quelques-uns des articles courants :
*Traductions Algorithmie/Ti-Basic.
*Caractères spéciaux sur Tout82
Les défauts du TI-Basic : Goto_versus_algo et DelVar/End/Lbl/guillemet/store
 Adresse email Haut de page Bas de page 
 
Persalteas



Autorisation : Membre
Nb de messages : 2086
Inscrit le : Sam 23 Jan 2010, 20:09
Posté le : Mer 30 Nov 2011, 22:40   Citer 


Citer
"Goto Z", ça veut dire "ne pas faire le reste des valeurs de A jusqu'à 10^99 (dans le cas-là)" ?



C'est excactement ça.

La lettre Z je l'ai choisie au hasard, ça peut être n'importe quelle lettre ou chiffre, voire deux caractères (11, A2, BZ etc...)

Le "End" sert a terminer n'importe quelle fonction de boucle, For et aussi d'autres (While, Repeat, Is, Ds etc...) mais ne finit pas le programme. Il sert a délimiter la partie du code qui sera répétée plusieurs fois.

Lbl/Goto...

Alors, vois tu, quand tu as un programme, la TI lit les instructions de haut en bas et de droite à gauche.

Quand tu mets un Goto A , la TI se "téléporte" à l'endroit ou il y a un Lbl A et recommence à lire a partir de cet endroit.

C'est très imagé, mais j'espère que ça ira...

 Adresse email Haut de page Bas de page 
 
The K



Autorisation : Membre
Nb de messages : 850
Inscrit le : Sam 15 Oct 2011, 11:07
Posté le : Jeu 01 Déc 2011, 19:19   Citer 

Et c'est la que j'me sens bien inutile cry.gif cry.gif
Sinon euh oui label/goto c'est même encore plus simple que if/then/else/end bigmouth.gif

----------------------
La la la ...

Avez-vous pensé à regarder le manuel avant de demander conseil ? Un manuel est fait avant tout pour être consulté : MANUEL

Vous avez un problème avec l'ordinateur avec votre calculatrice ? SOLUTION EN VIDEO

Mes programmes sur le site : Produit scalaire KMorpion Puissance 4 Mastermind

Mes nouveaux programmes de calcul formel : FCarré FPrime

Projet base de données : ici mais abandonné. Trop de travail ...
 Adresse email Haut de page Bas de page 
 
Kilo.
Invité
Posté le : Jeu 01 Déc 2011, 19:38   Citer 

Persalteas: c'est très bien quand c'est imagé, je préfère ça que le charibia qui se trouve dans le manuel d'utilisation.

Enfin tout marche bien, j'ai incorporé les fonctions/instructions principales et j'ai fait un truc simplet ou lorsqu'on entre son âge on apprends si l'on est majeur ou pas..simplet mais ça marche bien, donc à cet instant précis je sais:
- demander à ma calculette de faire tout plein de valeurs pour trouver la bonne (des trucs de récurrence comme il peut y en avoir au bac)
- affecter à une valeur entrée un "rangement" (si je rentre que j'ai 19 ans, je serai dans les majeurs, si je rentre 17, dans les mineurs..et quand j'ai 18? C'est la prochaine question bigmouth.gif)

Donc en bref je sais faire du "Si oui, alors..", "sinon, alors.." ..mais qu'en est-il par exemple lorsque j'essaye de complexifier la chose? J'avais un peu de temps devant moi ce matin alors j'ai essayé de faire un truc d'apparence pas trop compliqué, comme donner une appréciation en fonction de la note rentrée. Pour un A (qui est la note rentrée) compris entre 0 et 10 (exclus), tu n'as pas ton bac, de 10 à 12 (exclus) tu es proche de la mention, de 12 à 14 (exclus) tu as la mention assez bien, etc.
Et bien ça s'est avéré très instructif pour comprendre qu'il me manquait un élément. J'en suis pas si loin visiblement vu que je n'avais pas une "ERROR", mais si je rentrais un "11" pour A, il pouvait me donner les commentaires pour toutes les mentions du dessus ("pas loin de la mention", "mention bien", "très bien", "excelleeeent"). J'ai essayé avec le "End" pour clore chaque instruction, avec le Lbl et Gozo (un peu hasardivement je l'avoue) et ça n'a pas conclu. Je ne sais pas inclure une hausse du nombre de possibilités qui m'est limité à 2 pour l'instant, car ma valeur rentrée se range soit à droite soit à gauche de celle que j'avais définit de base pour séparer deux "classes" (ici ce sont les majeurs et mineurs). Je ne l'ai pas là donc je refais ce que j'avais du faire à priori ce matin:



Citer
:Disp "Quel fut ta note au bac?"
:Prompt A
:For(A,0,20)
:If A<10
:Then
:Disp "Tu n'as pas ton bac"
:Else
:Goto Z
:End
:Lbl Z
:If 10<A<12
:Then
:Disp "Pas loin de la mention, dommage"
:Else
:Goto E
:End
:Lbl E
:If 12<A<14
:Then
:Disp "Mention assez bien"
:Else
:Goto R
:End
:Lbl R
:If 14<A<16
:Then
:Disp "Mention bien, bravo"
:Else
:Goto R
:End
:Lbl R
:If 16<A<20
:Then
:Disp "excellent travail"




(osef des commentaires entre guillemets ici, c'était plus pour meubler)

Enfin bref, j'ai fait ça assez intuitivement (donc loin d'être nécessitement juste). J'ai donc dit à la calculette de formuler la question pour la note, de demander A pour un nombre compris entre 0 et 20.
J'ai suivi la logique là tout le long.
- Si A <10
- Alors
- Affiche "tu n'as pas ton bac"
- Sinon
- Va a Z (donc en faite au Lbl Z)
- End-> fin? (me demander pas pourquoi je l'ai mit à chaque fois, je sais pas (: )
- Lbl Z (donc la calculette après avoir vu "Goto Z" se retrouve à la ligne là)
- Si 10<A<12
- Alors
- Affiche "pas loin de la mention
- Sinon
(...)

Bref si A est bien compris entre le machin voulu, affiche moi un petit commentaire pour me dire à quoi ça correspond ("très bien", "mention assez bien", etc"), sinon va voir au prochain Lbl si on peut te caser!

Logiquement ça me parait bon, c'est pas ce que j'ai fais ce matin (j'ai tout changé là en faite), mais j'ai pas encore tapé!

  Haut de page Bas de page 
 
The K



Autorisation : Membre
Nb de messages : 850
Inscrit le : Sam 15 Oct 2011, 11:07
Posté le : Jeu 01 Déc 2011, 21:30   Citer 

J'espère être cette fois le premier a répondre bigmouth.gif

Oh eh bien euh ton programme ... Tu supprime la boucle for et logiquement il marche winkle.gif
Après en général on j'utilise pas de lbl/Goto après un then parce que ça ralentit le programme ... Quoique la ça ne serait pas très flagrant winkle.gif

Il faut sinon apprendre une chose : si tu met un If sans then, la ligne juste après le If, et uniquement celle la est exécutée. On économise donc en place le then/else/End.

Ton programme peut donc donner ceci :


Code

EffEcr
Disp "Quelle fut ta note au bac ?
Prompt A
If A<10
Disp "tu n'as pas eu ton bac
If A>=10 et A<12                          //on ne peut pas mettre 12>=A>=10 ça ne marche pas
Disp "Pas loin de la mention, dommage
If A>=12 et A<14
Disp "Assez bien
If A>=14 et A<16
Disp " Mention bien, bravo
If A>=16
Disp "Excellent travail !



Plus court, non ? winkle.gif

----------------------
La la la ...

Avez-vous pensé à regarder le manuel avant de demander conseil ? Un manuel est fait avant tout pour être consulté : MANUEL

Vous avez un problème avec l'ordinateur avec votre calculatrice ? SOLUTION EN VIDEO

Mes programmes sur le site : Produit scalaire KMorpion Puissance 4 Mastermind

Mes nouveaux programmes de calcul formel : FCarré FPrime

Projet base de données : ici mais abandonné. Trop de travail ...
 Adresse email Haut de page Bas de page 
 
Persalteas



Autorisation : Membre
Nb de messages : 2086
Inscrit le : Sam 23 Jan 2010, 20:09
Posté le : Jeu 01 Déc 2011, 21:53   Citer 

Oui, pourquoi as-tu voulu utiliser une boucle For dans ce programme ?

Parce que là, tu demandes une valeur pour A au début du programme (Prompt A) et ensuite tu mets une fonction de boucle qui pour chaque valeur de A entre 0 et 20 va afficher quelle mention le bachelier aurait eu...

Il n'y a pas besoin de la boucle:

Prompt A demande la valeur de A, et tu effectue les test pour cette valeur de A et SEULEMENT pour cette valeur de A.

Tu vas pas t'amuser à tester toutes les valeurs de A, puisqu'il n'y en a qu'une qui t'intéresse.

 Adresse email Haut de page Bas de page 
 
linkakro



Autorisation : Membre
Nb de messages : 3738
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Jeu 01 Déc 2011, 21:57   Citer 

Ce qu'écrit The K dans les tests s'obtient avec le menu test.
Tu as déjà trouvé "<" donc il ne te manque plus que "<=" dans le même menu et la fonction "et" se trouve aussi dans ce menu mais un onglet à droite.
Et sâche que tu n'es pas obligé d'écrire "A<14" comme lui mais que tu peux aussi écrire "14>A".

----------------------
ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)

Pour tout le monde et surtout les débutants, quelques-uns des articles courants :
*Traductions Algorithmie/Ti-Basic.
*Caractères spéciaux sur Tout82
Les défauts du TI-Basic : Goto_versus_algo et DelVar/End/Lbl/guillemet/store
 Adresse email Haut de page Bas de page 
 
Kilo.
Invité
Posté le : Jeu 01 Déc 2011, 23:16   Citer 

Et bien figure toi The-K que ça donne le même problème que moi ce matin. J'entre "8", il me dit que j'ai pas mon bac, mais aussi que je suis pas loin de la mention, que j'ai la mention assez bien, que j'ai la mention bien et que j'ai la mention très bien. Le code recopié est le même, je n'ai pas fait l'erreur dans les "inférieur ou égal" et "supérieur ou égal", je ne vois donc pas vraiment.
Donc quand j'entre une valeur, il m'entre le commentaire qui en résulte mais aussi tout ceux qui suivent (et non pas ceux qui précèdent, si j'ai 11 au bac il me dira tout ce qu'on dit au dessus de 11 mais pas en dessous).

Donc voili voilou, je vais essayer avec celui que j'avais fait ce matin en modifiant légèrement, ça va être très lourd et assez peu pro mais avec un peu de bricolage ça devrait marcher.


Mais sinon bonne question...pourquoi ai-je mit For(, une erreur d'inatention, j'ai écrit ça en pensant définir un intervalle de nombres acceptables pour la calculette (seulement entre 0 et 20), je sais pas vraiment pourquoi.

Mais par contre je ne comprends pas "EffEcr", à quoi est-ce que cela correspond?

  Haut de page Bas de page 
 
Kilo.
Invité
Posté le : Jeu 01 Déc 2011, 23:38   Citer 

Bon, j'ai ça:


Citer
:Prompt A
:If A<10
:Disp "Pas de bac"
:Else
:Goto Z
:End
:Lbl Z
:If 10<A et A<12
:Disp "Pas de mention"
:Else
:Goto E
:End
:Lbl E
:If 12<A et A<14
:Disp "mention assez bien"
:Else
:Goto R
:End
:Lbl R
:If 14<A et A<16
:Disp "mention bien"
:Else
:Goto G
:End
:Lbl G
:If 16<A et A<20
:Disp "mention très bien"
:End



Et donc j'ai une erreur syntaxe à la troisième ligne pour le "Else", qu'elle est-elle je ne vois vraiment pas.
Je vois que si A est en dessous de 10, il n'a pas son bac, si c'est au dessus de 10 alors on se rends en Z ou il est écrit de vérifier si A est compris entre 10 et 12, etc..je vois pas ce qui cloche avec mon "Then" sachant qu'il amène la juste l'autre possibilité.

  Haut de page Bas de page 
 
Kilo.
Invité
Posté le : Jeu 01 Déc 2011, 23:46   Citer 

(bon désolé du triple post la situation évolue vite!)

Il suffisait de supprimer les "Else" et le "End" de fin, le code final qui marche correctement est donc:


Citer
:Prompt A
:If A<10
:Disp "Pas de bac"
:Goto Z
:End
:Lbl Z
:If 10<A et A<12
:Disp "Pas de mention"
:Goto E
:End
:Lbl E
:If 12<A et A<14
:Disp "mention assez bien"
:Goto R
:End
:Lbl R
:If 14<A et A<16
:Disp "mention bien"
:Goto G
:End
:Lbl G
:If 16<A et A<20
:Disp "mention très bien"



Et: quelqu'un sait comment afficher la totalité d'une phrase sur la calculette? Quitte à ce qu'elle soit sur plusieurs lignes plutôt qu'elle soit bouffée par le bord de cette dernière. Car quand A=16, on a "mention très bi.." par exemple, rogné par le bord droit de la TI.

  Haut de page Bas de page 
 
linkakro



Autorisation : Membre
Nb de messages : 3738
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Ven 02 Déc 2011, 0:05   Citer 


Code
Disp "A","B","C"  // ainsi de suite pour pluisieurs ligne
Output(1,1,"AZERTYUIOPQSDFGHJVBN"  // retour automatique à la ligne


Code
If A<8
Then
 Disp "CASSOS
Else
 If A<12
 Then
  Disp "BOF
 Else
.....
 End
End

Ainsi de suite.
Then et End sont indispensables.

EffEcr sert à effacer l'écran.

Tes bugs dans le code de The K ne devraient pas exister. Tu t'es peut être trompé dans l'usage des "et".

----------------------
ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)

Pour tout le monde et surtout les débutants, quelques-uns des articles courants :
*Traductions Algorithmie/Ti-Basic.
*Caractères spéciaux sur Tout82
Les défauts du TI-Basic : Goto_versus_algo et DelVar/End/Lbl/guillemet/store
 Adresse email Haut de page Bas de page 
 
Persalteas



Autorisation : Membre
Nb de messages : 2086
Inscrit le : Sam 23 Jan 2010, 20:09
Posté le : Ven 02 Déc 2011, 8:24   Citer 

eh eh ...


Citer : kilo

:Prompt A
:If A<10
:Disp "Pas de bac"
:Goto Z
:End
:Lbl Z
:If 10<A et A<12
:Disp "Pas de mention"
:Goto E
:End
:Lbl E
:If 12<A et A<14
:Disp "mention assez bien"
:Goto R
:End
:Lbl R
:If 14<A et A<16
:Disp "mention bien"
:Goto G
:End
:Lbl G
:If 16<A et A<20
:Disp "mention très bien"



Tu m'as l'air d'avoir des soucis avec les If...

Il y a deux manières d'utiliser If:

If condition
Then
instruction 1
instruction 2
etc...
End


ou alors

If condition
instruction 1

(si tu ne mets pas de Then et de End, une seule instruction est possible comme faisant partie de la condition...)

donc ton code devient:


Code

:Prompt A
:If A<10
:Disp "Pas de bac"
:Goto Z
:Lbl Z
:If 10<A et A<12
:Disp "Pas de mention"
:Goto E
:Lbl E
:If 12<A et A<14
:Disp "mention assez bien"
:Goto R
:Lbl R
:If 14<A et A<16
:Disp "mention bien"
:Goto G
:Lbl G
:If 16<A et A<20
:Disp "mention très bien"



et je pense que tu auras remarqué que mettre Goto R:Lbl R (ou autres lettres) directement à la suite, on peut supprimer tout les Goto/Lbl qui ici ne servent à rien...


Code

:Prompt A
:If A<10
:Disp "Pas de bac"
:If 10<A et A<12
:Disp "Pas de mention"
:If 12<A et A<14
:Disp "mention assez bien"
:If 14<A et A<16
:Disp "mention bien"
:If 16<A et A<20
:Disp "mention très bien"



 Adresse email Haut de page Bas de page 
 
The K



Autorisation : Membre
Nb de messages : 850
Inscrit le : Sam 15 Oct 2011, 11:07
Posté le : Ven 02 Déc 2011, 16:19   Citer 

Mon programme ne marche pas ?

Désolé, il marche. Je l'ai justement conçu pour éviter ce que tu me dis winkle.gif
Va voir la réponse de linka pour plus de précisions, ila déja tout dit à propos des bugs que tu as.

----------------------
La la la ...

Avez-vous pensé à regarder le manuel avant de demander conseil ? Un manuel est fait avant tout pour être consulté : MANUEL

Vous avez un problème avec l'ordinateur avec votre calculatrice ? SOLUTION EN VIDEO

Mes programmes sur le site : Produit scalaire KMorpion Puissance 4 Mastermind

Mes nouveaux programmes de calcul formel : FCarré FPrime

Projet base de données : ici mais abandonné. Trop de travail ...
 Adresse email Haut de page Bas de page 
 
Kilo.
Invité
Posté le : Dim 04 Déc 2011, 12:31   Citer 

Oui The K ton programme marche (j'avais fait une petite erreur je ne sais plus ou), simplement je n'ai pas reposté pour le signaler, ayant légèrement abusé avec le multi post.

Pour le If j'avais effectivement un problème avec comment la calculette interprétait le "If" et ce qui suivait, m'enfin c'est bon maintenant. Merci à tous !

  Haut de page Bas de page 
 
Poster un nouveau sujet Poster une réponse





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