Page 1 of 2

Retour ligne résultat trop long (+ questions subsidiaires)

Unread postPosted: 01 Feb 2015, 23:21
by maxence1402
Bonsoir tout le monde !
Je suis en train de coder un petit programme qui doit afficher une liste à la sortie. J'ai cependant un petit problème : la liste est souvent plus longue et la largeur de l'écran n'est souvent pas suffisante pour pouvoir l'afficher en entier sans avoir à naviguer. Existe-t-il une commande qui permettrait de forcer le retour à la ligne quand le résultat est trop long ?

Merci de vos réponses !

PS : Y a-t-il par ailleurs un moyen de sauter des étapes définies dans une boucle "for" (par exemple sauter i=3 dans l'instruction for i,1,5) ?
PS 2 : Et est-il possible de faire un arrondi à la précision voulue, indépendamment des réglages du classeur (exemple 10^-2 comme on pourrait avoir approx(sqrt(2),10^-2)) ?
PS 3 : Pensez-vous que cette console est dépassée ? Merci d'avoir lu !

Re: Retour ligne résultat trop long (+ questions subsidiaire

Unread postPosted: 01 Feb 2015, 23:28
by Adriweb
Pour le PS1 : Il n'y a malheureusement pas de continue dans le langage Nspire-Basic, qui serait l'instruction parfaite pour faire ceci...

Mais bon, on se débrouille comme on peut (salement, ici) :

Code: Select all
Define a1()=
Prgm
:Local i
:For i,1,6
:  If i=3 Then:Goto finfor: EndIf
:  Disp i
:  Lbl finfor
:EndFor
:EndPrgm


Image

Re: Retour ligne résultat trop long (+ questions subsidiaire

Unread postPosted: 01 Feb 2015, 23:37
by maxence1402
Merci déjà d'avoir répondu à cette question, cela conforte mon hypothèse.

Re: Retour ligne résultat trop long (+ questions subsidiaire

Unread postPosted: 01 Feb 2015, 23:40
by Adriweb
Pour la question principale, non, pas à ce que je sache, mais tu peux toujours afficher bout par bout la liste... si tu connais la largeur de l'écran de la cible (autrement dit, si ton programme va être que pour calculette (et pas iPad ou logiciel ordi), tu peux tester et faire ca rapidement.

Re: Retour ligne résultat trop long (+ questions subsidiaire

Unread postPosted: 01 Feb 2015, 23:45
by maxence1402
Je sais déjà que la résolution de la ti-nspire cx cas est du QVGA, c'est-à-dire du 320x240. En revanche, j'ignore comment procéder pour afficher bout par bout (tu veux dire du rang 1 à 8, puis de 9 à 15 etc... ?)

Re: Retour ligne résultat trop long (+ questions subsidiaire

Unread postPosted: 01 Feb 2015, 23:48
by Adriweb
maxence1402 wrote:j'ignore comment procéder pour afficher bout par bout (tu veux dire du rang 1 à 8, puis de 9 à 15 etc... ?)

Oui, juste une boucle for qui déplace la fourchette d'affichage.
Par exemple :

mid({1,2,3,4,5},2,3)
{2 3 4}

Donc voila, la commande mid() est ton ami (fonctionne aussi sur les strings)

Re: Retour ligne résultat trop long (+ questions subsidiaire

Unread postPosted: 02 Feb 2015, 00:55
by Levak
Pour le PS2, round(x, n) ou approx(x, n) - je sais plus - arrondi à n chiffres après la virgule.

Re: Retour ligne résultat trop long (+ questions subsidiaire

Unread postPosted: 02 Feb 2015, 03:59
by Adriweb
Pour en revenir à l'histoire du continue, il y aurait aussi l'équivalent de cette solution en Lua car le Lua n'a pas non plus de continue, et pas de label/goto en 5.1 (c'est venu en 5.2) :

En bref, mettre une structure breakable à l'intérieur du for.
Code: Select all
local len = 5
for i = 1, len do
    repeat
        if i%2 == 0 then break end
        print(" i = "..i)
        break
    until true
end


i = 1
i = 3
i = 5


Source : http://stackoverflow.com/a/25781200/378298

Re: Retour ligne résultat trop long (+ questions subsidiaire

Unread postPosted: 02 Feb 2015, 08:41
by Bisam
C'est peut-être idiot, mais j'aurais tendance à préférer :
Code: Select all
Define a1()=
Prgm
:Local i
:For i,1,6
:  If i≠3 Then
:    Disp i
:  EndIf
:EndFor
:EndPrgm


Quant à l'histoire de la liste trop longue : estime-toi heureux de pouvoir afficher des résultats et de pouvoir les visualiser en navigant après la fin du programme ! Sur les TI89, ce n'était pas possible : il fallait soit découper l'affichage, soit mettre une pause dans le programme au moment de l'affichage pour que l'utilisateur ait le temps de visualiser tout.
Là, tu n'es pas obligé de le faire... donc, je trouve cela plutôt confortable.

Re: Retour ligne résultat trop long (+ questions subsidiaire

Unread postPosted: 02 Feb 2015, 21:14
by Adriweb
Bisam wrote:C'est peut-être idiot, mais j'aurais tendance à préférer :
Code: Select all
Define a1()=
Prgm
:Local i
:For i,1,6
:  If i≠3 Then
:    Disp i
:  EndIf
:EndFor
:EndPrgm



Ouaip, c'est généralement ce qui est fait, d'ailleurs, devient rapidement chiant si il y a plusieurs conditions (enfin bon, comme à peu près le reste des workarounds...)