Forum

Catégorie : Programmes
Forum : Les programmes des internautes
Vues : 3755
Réponses : 14
Type : discussion
Etat : réponses autorisées

Afficher ses cours

metallica le 12/01/2011 à 15:35
Voilà un programme réutilisable pour écrire ses cours:

PRGM A
Code
:prgmAA
:Ans-)Str1
:length(Str1)-)D
:D-16int(D/16)-)E
:If E
:Str1+sub("_16 espaces_    ",1,16-E)-)Str1
:Delvar P
:Lbl A
:For(A,1,8
:Output(A,1,sub(Str1,16(P+A)-15,16
:End
:Repeat K=45
:getkey-)K
:If max(K={25,34
:Then
:length(Str1)/16-8-)A
:P-(K=25 and P)+(K=34 and P#A-)P
:ClrHome
:Goto A
:End
:End
:ClrHome
:Output(1,1,"


PRGM AA (le cours !)

Code
"LE COURS QUE L'ON VEUT AFFICHER A L'ECRAN       "


Important: Le texte tapé devra possédé un multiple de 16 de nombre de caractères. Pour ce faire, vous devrez si nécessaire écrire des espaces après le dernier caractères du texte écrit.

# correspond à: différent de
-) correspond à: la flèche se trouvant en appuyant sur [sto->]

Les fonctions sont écrites en Anglaises, voici leurs traductions:
Ans = Rép
Str1 = Chaîne 1
Delvar = EffVar
sub( = sous-chaîne(
getkey = codetouche
length( = longueur(
ClrHome = EffEcr
linkakro le 12/01/2011 à 17:20
Code
:length(Str1)-)D
:D-16int(D/16)-)E
:If E
:Str1+sub("_16 espaces_    ",1,16-E)-)Str1

En ajoûtant ceci juste après Ans->Str1, l'utilisateur n'a plus à se préoccuper de la longueur de la chaîne multtiple de 16.
metallica le 12/01/2011 à 17:48
Cool! Merci bien du conseil
perimgui le 15/01/2011 à 15:32
sub, en français, c'est quelle fonction ?
metallica le 15/01/2011 à 17:42
C'est écrit dans le premier post:
sub( = sous-chaîne(

Tu le trouves uniquement dans le catalogue.
perimgui le 15/01/2011 à 17:48
Ok je te remerci grandement !

Au fait, je ne savais pas que l'on pouvait mettre une variable pour le Lbl. Ca sert venir à ce label en fonction de la valeur de la variable, c'est ça ?
metallica le 15/01/2011 à 18:02
Non, c'est juste la lettre.
PS: Si t'as une TI-82 basique(c'est à dire non stats), le programme ne marchera pas (car les fonctions "chaînes" et "sous-chaîne" n'existent pas sur ces modèles.)
perim le 15/01/2011 à 18:09
Non, c'est bon, merci quand même happy.gif
metallica le 15/01/2011 à 18:11
De rien.
PS: Une petite précision, écrit au moins 8 lignes de texte
perimgui le 15/01/2011 à 18:17
Pourquoi ? Il bug sinon ?
metallica le 15/01/2011 à 18:28
Oui, il t'affiche: erreur dim.
perimgui le 15/01/2011 à 19:04
Mais comment faudrait-il faire pour régler ce problème?
Et mettre des espaces pour des lignes vides, ça compte aussi ? Parce que sinon, ça ne pose pas trop de problème...En plus, je crois que l'espace est considéré comme un caractère.
perimgui le 15/01/2011 à 19:30
Et donc ce qui retient en mémoire notre "cours", c'est la chaine 1 ?
metallica le 15/01/2011 à 20:02
Oui c'est ça winkle.gif
Pour répondre à ta question, bien sûr que tu peux remplir avec des espaces.
linkakro le 16/01/2011 à 19:08
perimgui a écrit :
Et donc ce qui retient en mémoire notre "cours", c'est la chaine 1 ?
NON : la chaîne ne sert qu'à l'affichage. On risque de perdre la chaîne.

Le texte est conservé dans un programme. C'est plus pratique et il n'y a que 10 chaînes. Toutefois "A" n'appelle que "AA".

D'ailleurs on a pas besoin du programme "A" car on peut lire ses cours sans.
MAIS la prouesse d'affichage de ce prog est intéresante.

=================

Pour la contrainte de longueur suppérieure à 8 lignesVoici une solution.
Je publie directemnt la totalité du prog car deux modifs sont faîtes.
Code
:prgmAA
:Ans-)Str1
:length(Str1)-)D
:D-16int(D/16)-)E
:If E
:Str1+sub("_16 espaces_    ",1,16-E)-)Str1

:length(Str1)->D    // ajoûté
:min(8,D/16)->F     //

:Delvar P
:Lbl A

:For(A,1,F        // J'ai remplacé 8 par F

:Output(A,1,sub(Str1,16(P+A)-15,16
:End
:Repeat K=45
:getkey-)K
:If max(K={25,34
:Then
:length(Str1)/16-8-)A
:P-(K=25 and P)+(K=34 and P#A-)P
:ClrHome
:Goto A
:End
:End
:ClrHome
:Output(1,1,"