Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.

Forum Casio - Vos tutoriels et astuces


Index du Forum » Vos tutoriels et astuces » [Tutoriel] Chaines de caractères et tableaux 2D
Purobaz Hors ligne Membre d'honneur Points: 2690 Défis: 110 Message

[Tutoriel] Chaines de caractères et tableaux 2D

Posté le 29/03/2012 20:42

Voici un petit tutorial sur l'utilisation des chaines de caractères en tant que tableaux 2 dimensions aussi appelés Matrices en basic.
Les chaines de caractères ont l'avantage d'être moins gourmandes en mémoire et d'être compatibles avec PRGM2


En revanche vous ne pourrez pas y stocker des grands nombres, ni des nombres décimaux. Dans ce tuto nous utiliserons des nombres compris entre 0 et 99, mais vous pourrez aller au delà quand vous aurez compris le principe.


I. Préparation
Cliquez pour découvrir
Cliquez pour recouvrir
Voici tout ce qu'il faut préparer et savoir avant d'utiliser les chaines de caractères en tant que tableaux 2 dimensions.

Tout d'abord déterminez les dimensions du tableau. Dans la suite du tuto nous choisirons une largeur L, et une longueur K qui a cependant moins d'importance.
X et Y correspondront respectivement à l'abscisse et à l'ordonnée de la cellule choisie. Attention la cellule de coordonnées (1, 1) est en haut à gauche du tableau.
Dans notre exemple, le tableau sera stocké dans la Str 1. Au total il y a 20 Str, évitez de faire des tableaux de plus de 120 cellules, utilisez plutôt plusieurs tableaux.

Enfin nous utiliserons une chaine de caractères de "référence" pour encoder les valeurs.
Mettez donc le code suivant au début de votre programme, vous comprendrez peut-être son utilité plus tard
"0123456789. ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz(){}[]=!=><>=<=^log ln sin cos tan ,->If Then Else IfEndFor  To Step NextWhile WhileEndDoLpWhile Prog ReturnBreakStop"->Str 20

Peut importe les caractères que contient la chaine de caractères, il en faut 100 différents. Vous pouvez vérifier la longueur de la chaine avec StrLen(Str 20)


II. Initialisation du tableau
Cliquez pour découvrir
Cliquez pour recouvrir
La création et l'initialisation de votre tableau en chaine de caractères sont simultanés.
Pour créer un tableau vide utilisez le code suivant :
For 1->A To L*K
Str 1+"0"->Str 1
Next

Vous pouvez aussi initialiser le tableau dès sa création, mais attention il faut respecter l'encodage de votre chaine de référence.
Par exemple le tableau "0A.E49Yfb1E3"->Str 1 et de largeur 4 correspond d'après l'encodage décrit plus haut au tableau :
-------------
| 0|12|10|16|
| 4| 9|36|43|
|13| 1|16| 3|
-------------



III. Lire et écrire des valeurs dans le tableau
Cliquez pour découvrir
Cliquez pour recouvrir
Cette partie est sans doute la plus facile, vous avez simplement à utiliser les codes proposés.

Lire la valeur de coordonnées (X, Y) dans N :
StrSrc(Str 20,StrMid(Str 1,L(Y-1)+X,1))-1->N

Ecrire la valeur N aux coordonnées (X, Y) :
StrLeft(Str 1,L(Y-1)+X-1)+StrMid(Str 20,N+1,1)+StrRight(Str 1,StrLen(Str 1)-L(Y-1)-X)->Str 1


Un petit programme contenant tout le code est en fichier joint

Après ça, vous êtes près à affronter la prochaine version de PRGM2, qui offrira encore plus de possibilités pour vos jeux 8)

Fichier joint


Pierrotll Hors ligne Ancien administrateur Points: 5488 Défis: 41 Message

Citer : Posté le 29/03/2012 20:56 | #


Pour l'initialisation, tu peux éviter d'utiliser Str 2 :
For 1->I To L*K
Str 1+"0"->Str 1
Next

Purobaz Hors ligne Membre d'honneur Points: 2690 Défis: 110 Message

Citer : Posté le 29/03/2012 20:57 | #


Ok, je le rajoute.
Merci
I'll be back !
pour plus de fun
mes programmes fun
de technique
mes projets
et de Swag
les projets que je soutiens
Totoyo Hors ligne Membre d'honneur Points: 16102 Défis: 102 Message

Citer : Posté le 29/03/2012 22:06 | #


Ça me rappelle le code de mon Simply Laby

La prochaine version de PRGM2 contiendra quelles nouveautés ?
Eiyeron Hors ligne Ancien modérateur Points: 5525 Défis: 57 Message

Citer : Posté le 29/03/2012 22:09 | #


Pour le choix des caractères, je préfère de loin faire un système ASCII-Like, tu devrais toi aussi, ya suffisemment de caractères avec la partie maths et grecque
Purobaz Hors ligne Membre d'honneur Points: 2690 Défis: 110 Message

Citer : Posté le 30/03/2012 13:06 | #


Eiyeron a écrit :
Pour le choix des caractères, je préfère de loin faire un système ASCII-Like
Bonne idée, mais chacun fait comme il veut. Cette chaine de caractères n'est pas vraiment importante.

Par contre, si vous utilisez que des caractères "normaux" d'un bit, vous pouvez augmenter la dimension du tableau. Mais les nombres possibles seront plus petits.

Totoyo a écrit :
La prochaine version de PRGM2 contiendra quelles nouveautés ?
La principale amélioration a été de sécuriser la fin des programmes. En effet avant à la fin du programme, le timer d'extinction était fréquemment modifié, ce qui était assez génant. Normalement ce bug est résolu, mais je suis encore en phase de test.
Vous pourrez aussi afficher des sprites et du texte qui seront stockés dans la mémoire de stockage.
Et ausi enregister des valeurs dans la mémoire de stockage.
I'll be back !
pour plus de fun
mes programmes fun
de technique
mes projets
et de Swag
les projets que je soutiens
Totoyo Hors ligne Membre d'honneur Points: 16102 Défis: 102 Message

Citer : Posté le 30/03/2012 16:28 | #


@Purobaz, c'est plus "octet" que "bit", parce qu'un bit, c'est 0 ou 1.

Sympa les améliorations, si ça rend PRGM2 plus stable =)
Purobaz Hors ligne Membre d'honneur Points: 2690 Défis: 110 Message

Citer : Posté le 30/03/2012 18:13 | #


Totoyo a écrit :
@Purobaz, c'est plus "octet" que "bit", parce qu'un bit, c'est 0 ou 1.
En fait dans la doc, c'est multi bytes.

Ce n'est donc ni octet et encore moins bit mais je ne sais pas comment on traduit ça en français.
I'll be back !
pour plus de fun
mes programmes fun
de technique
mes projets
et de Swag
les projets que je soutiens
Pierrotll Hors ligne Ancien administrateur Points: 5488 Défis: 41 Message
Purobaz Hors ligne Membre d'honneur Points: 2690 Défis: 110 Message

Citer : Posté le 30/03/2012 19:16 | #


http://fr.wikipedia.org/wiki/Byte
I'll be back !
pour plus de fun
mes programmes fun
de technique
mes projets
et de Swag
les projets que je soutiens
Pierrotll Hors ligne Ancien administrateur Points: 5488 Défis: 41 Message

Citer : Posté le 30/03/2012 20:31 | #


Ouais, enfin c'est histoire de chipoter, les systèmes basés sur du 7 bits, c'était aux balbutiements de l'informatique, et tout le monde s'est mis d'accord pour utiliser l'octet comme plus petite unité adressable depuis l'arrivée de l'Europe dans le domaine.
Eiyeron Hors ligne Ancien modérateur Points: 5525 Défis: 57 Message

Citer : Posté le 31/03/2012 07:15 | #


L'ascii au départ utilisait 7bits, et chaque type de système à modifie la table pour avoir le 8bit utilisé, mais chacun avaient des caractères différents.
Seul l'ascii original est universel, pas le extended

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 131 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd