Inscription / Connexion Nouveau Sujet
Niveau première
Partager :

Algorithme sur TI

Posté par
zakake
18-09-11 à 21:56

Bonjour,
j'ai réalisé un algorithme avec Algobox, le voici :

1 VARIABLES
2     n EST_DU_TYPE NOMBRE
3     U EST_DU_TYPE LISTE
4     i EST_DU_TYPE NOMBRE
5     a EST_DU_TYPE NOMBRE
6 DEBUT_ALGORITHME
7     LIRE a
8     LIRE n
9     U[0] PREND_LA_VALEUR a
10   POUR i ALLANT_DE 0 A n-1
11       DEBUT_POUR
12       U[i+1] PREND_LA_VALEUR 2*U[i]-i-2011
13       FIN_POUR
14   AFFICHER U[n]
15 FIN_ALGORITHME

Je dois maintenant le transcrire en TI-Basic pour le mettre sur ma calculette TI-89 Titanium, mais mes connaissances en TI-Basic sont quasi-nulles. Voici ce que j'ai commencé à faire :

: algo()
: Prgm
: Local n,U,i,a
: Input a
: Input n
: U[0]->a
: For i,0,n-1,1
: U[i+1]->U[i]-i-2011
: EndFor
: Disp U[n]
: EndPrgm

Mais ça ne marche, j'ai un problème de syntaxe. Pouvez-vous m'aider ?
Merci d'avance.

Posté par
Hydros
re : Algorithme sur TI 19-09-11 à 13:24

Salut,

Essai de remplacer tes majuscules par des minuscules (je sais pas si la 89 supporte la dualité majuscules/minuscules)

La première valeur de la liste est 1 et non 0   (pfff, ça change pour chaque langage )

Il faut que tu définisse u->{} (avec une liste 'vide')

et ça devrait marcher...

Posté par
Hydros
re : Algorithme sur TI 19-09-11 à 13:25

PS :
dans le For i,0,n-1,1  , le 1 à la fin est optionnel (l'incrément est par défaut de 1)

Posté par
zakake
re : Algorithme sur TI 19-09-11 à 18:53

Merci de ta réponse. Tout d'abord j'avais fais une erreur (l'assignation fonctionne dans l'autre sens) :

: algo()
: Prgm
: Local n,u,i,a
: Input a
: Input n
: a->u[0]
: For i,0,n-1,1
: 2*u[i]-i-2011->u[i+1]
: EndFor
: Disp u[n]
: EndPrgm

Mais si je commence la suite par u1 (u1=a), cela va tout me changer au niveau des résultats. Comment faire ?

Et je n'ai pas très bien compris :

Citation :
Il faut que tu définisse u->{} (avec une liste 'vide')

Posté par
Hydros
re : Algorithme sur TI 19-09-11 à 19:35

-Créer une liste est assez "spéciale", avec le ti basic, il faut faire une simili déclaration de variable pour les listes et les matrices. Soit tu créer une liste vide avec les crochets soit tu met directement ta variable dedans {a}

-Le premier élément de la liste est numéroté 1 et non 0 ; ex: L={1;2;3;4}  L[0]=ERROR  L[1]=1, etc

: algo()
: Prgm
: Local n,u,i,a
: Input a
: Input n
: {a}->u
: For i,0,n-1,1
: 2*u[i+1]-i-2011->u[i+2]
: EndFor
: Disp u[n+1]
: EndPrgm

Il faut donc rajouter 1 à toutes tes références de listes...

Posté par
zakake
re : Algorithme sur TI 19-09-11 à 21:32

Merci ça marche !!
Mais je n'

: algo()
: Prgm
: Local n,u,i,a
: Input a
: Input n
: {a}->u
: For i,0,n-1,1
: 2*u[i+1]-i-2011->u[i+2]
: EndFor
: Disp u[n+1]
: EndPrgm

Posté par
zakake
re : Algorithme sur TI 19-09-11 à 21:57

Oops, j'ai appuyé sur "envoi en cours" sans le vouloir...

Donc je disais :
Le programme marche nickel, merci beaucoup !!
Mais j'ai pas trop compris la ligne en gras ({a}->u) : pourquoi nous ne mettons pas {a}->u[1]. Et peux-tu aussi m'expliquer le principe de la boucle "For ... EndFor" (parce que j'avais compris mais on a un peu modifié) ?

: algo()
: Prgm
: Local n,u,i,a
: Input a
: Input n
: {a}->u
: For i,0,n-1,1
: 2*u[i+1]-i-2011->u[i+2]
: EndFor
: Disp u[n+1]
: EndPrgm

Et j'aimerais apporté quelques modifications dans le programme :
- je voudrais écrire "valeur de a", "valeur de n" au début et "valeur de un" à la fin (par exemple si n=2 : "valeur de u2")
- j'aimerais que, dès que le programme se termine, je puisse le relancer à nouveau, en appuyant sur une touche, par exemple (et pas le relancer à partir du menu "var-link")
- je voudrais qu'à chaque nouvelle session, l'écran s'efface ; c'est-à-dire que dès que je relance le programme, les résultats précédents disparaissent (je crois que c'est avec "ClrHome" mais je ne suis pas sur).

Posté par
Hydros
re : Algorithme sur TI 20-09-11 à 07:36

Si tu fais a->u[1], la calculatrice t'enverra balader car elle ne sait pas que u est liste, par défaut, celle ci est une variable dans lequel on ne peut mettre qu'un chiffre ou du texte. Essaie de le taper directement dans les calculs...
Autrement dit, pour pouvoir ajouter une valeur à une liste avec son numéro, il faut déjà que cette liste soit une liste !!!

Citation :
- je voudrais écrire "valeur de a", "valeur de n" au début et "valeur de un" à la fin (par exemple si n=2 : "valeur de u2")


Tout simplement :
Disp "valeur de a"
Input a

Tu peux également séparer ce que tu veux afficher par des virgules : Disp "valeur de u",n," : ",u[n+1]

Citation :
j'aimerais que, dès que le programme se termine, je puisse le relancer à nouveau, en appuyant sur une touche, par exemple (et pas le relancer à partir du menu "var-link")


j'écrirais la suite tout à l'heure

Posté par
Hydros
re : Algorithme sur TI 20-09-11 à 12:23

Il faut insérer un Lbl (label au début) puis à la fin demander 1 ou 0 pour revenir à Lbl x avec la commande Goto
Lbl ma
...
Disp "recommencer ? 0/1 "
Input a
If a=1
Then
Goto ma
EndIf

je suis pas sur de la syntaxe du if

Citation :
je voudrais qu'à chaque nouvelle session, l'écran s'efface ; c'est-à-dire que dès que je relance le programme, les résultats précédents disparaissent (je crois que c'est avec "ClrHome" mais je ne suis pas sur)

Il faut essayer

Posté par
zakake
re : Algorithme sur TI 20-09-11 à 21:58

Pour relancer le programme à nouveau, on peut aussi faire soit  :
: Prgm
: Lbl start
: ...
: ...
: Goto start
: EndPrgm

soit ça :
: Prgm
: Loop
: ...
: ...
: EndLoop
: EndPrgm

Pour le texte, ça marche ! Et pour ClrHome, ça ne fonctionne pas donc je vais voir sur le manuel pour voir comment faire...
En tout cas, merci beaucoup pour ton aide !!



Vous devez être membre accéder à ce service...

Pas encore inscrit ?

1 compte par personne, multi-compte interdit !

Ou identifiez-vous :


Rester sur la page

Inscription gratuite

Fiches en rapport

parmi 1675 fiches de maths

Désolé, votre version d'Internet Explorer est plus que périmée ! Merci de le mettre à jour ou de télécharger Firefox ou Google Chrome pour utiliser le site. Votre ordinateur vous remerciera !