Page 1 sur 1

gestion des tableaux (DIM, READ, RESTORE)

Publié : sam. 28/sept./2019 7:12
par drfloyd
Salut les jeunes ! C'est papy Floyd ! J'ai besoin ENCORE de l'aide des petits génies de PURE (surtout pour gagner du temps car je rame avec la doc)

Je suis issu de la vieille ecole du basic des années 60 (je suis vieux !) et en voulant faire des tableaux de données dans PURE bah j'ai l'impression que ça marche pas comme sur mon ZX81 ou APPLE 2 en 1980 :mrgreen:

D'habitude je fais comme ca :

Code : Tout sélectionner

DIM NOM$(3),age(3),taille(3)

restore debutdata
for i-1 to 3
read nom$(i),age(i),taille(i)
next

debutdata:
data "toto le héros",12,134
data "beavis",47,180
data "butthead",48,178
Ca c'est du vrai et pur basic façon Microsoft basic, du basic d'avant guerre !

quel est l'equivalent de ce petit programme dans PURE ?

Re: gestion des tableaux (DIM, READ, RESTORE)

Publié : sam. 28/sept./2019 7:33
par Micoute
Bonjour drfloyd,

Code : Tout sélectionner

Global Dim Nom$(3), Dim age(3), Dim taille(3)

Restore debutdata
For i = 0 To 2
  Read.s Nom$(i)
  Read.i age(i)
  Read taille(i)
  Debug Nom$(i) + " " + age(i) + " " + taille(i)
Next i

DataSection 
  debutdata:
  Data.s "toto le héro"
  Data.i 12, 134
  Data.s "beavis"
  Data.i 47, 180
  Data$ "butthad" ;le signe $ fonctionne aussi pour les strings
  Data.i 48, 178
EndDataSection

Re: gestion des tableaux (DIM, READ, RESTORE)

Publié : sam. 28/sept./2019 7:44
par drfloyd
Merci

ah c'est assez proche en fait

le seul inconvenient est qu'on ne peut pas pas aligner des chiffres et des string sur la meme ligne de READ et de DATA si j'ai bien pigé (ce qui etait pratique pour bien lire les data)

Re: gestion des tableaux (DIM, READ, RESTORE)

Publié : sam. 28/sept./2019 7:56
par Naheulf
Bonjour,

Au pire tu peut toujours regrouper plusieurs commandes data sur la même ligne

Code : Tout sélectionner

DataSection
  debutdata:
  ;           NOM               ÂGE, TAILLE
  Data.s "toto le héro" : Data.i 12, 134
  Data.s "beavis"       : Data.i 47, 180
  Data$  "butthad"      : Data.i 48, 178   ;le signe $ fonctionne aussi pour les strings
EndDataSection

Re: gestion des tableaux (DIM, READ, RESTORE)

Publié : sam. 28/sept./2019 8:31
par drfloyd
Oui en effet, c'est un peu plus lisible.

Bah ecoutez merci et à bientot !

Re: gestion des tableaux (DIM, READ, RESTORE)

Publié : sam. 28/sept./2019 9:25
par Micoute
en fait, tu peux faire aussi comme ça:

Code : Tout sélectionner

Global Dim Nom$(3), Dim age(3), Dim taille(3)

Restore debutdata
For i = 0 To 2
  Read.s Nom$(i) : Read.i age(i) : Read taille(i)
  Debug Nom$(i) + " " + age(i) + " " + taille(i)
Next i

DataSection 
  debutdata:
  Data.s "toto le héro" : Data.i 12, 134
  Data.s "beavis" : Data.i 47, 180
  Data$ "butthead" : Data.i 48, 178 ;le signe $ fonctionne aussi pour les strings  
EndDataSection
Avec PureBasic, il y a toujours plusieurs chemins pour arriver au résultat final.

Re: gestion des tableaux (DIM, READ, RESTORE)

Publié : sam. 28/sept./2019 11:10
par Mesa
Des petits exemples, histoire d'apprendre PureBasic...

Que des string en data:
====================

Code : Tout sélectionner

Dim NOM$(3)
Dim age(3)
Dim taille(3) 

Restore debutdata 
For i=1 To 3 
  Read.s nom$(i)
  Read.s tmp$
  age(i) = Val(tmp$)
  Read.s tmp$
  taille(i) = Val(tmp$) 
Next i

DataSection
  debutdata: 
  Data.s "toto le héros","12","134" 
  Data.s "beavis","47","180" 
  Data.s "butthead","48","178" 
EndDataSection

For i=1 To 3
  Debug nom$(i)
  Debug age(i)
  Debug taille(i)
Next i
Utilisation d'une Macro:
====================

Code : Tout sélectionner

Dim NOM$(3)
Dim age(3)
Dim taille(3) 

Macro ReadInt(tab)
 Read.s tmp$
  tab(i) = Val(tmp$) 
EndMacro

Restore debutdata 
For i=1 To 3 
  Read.s nom$(i)
  ReadInt(age)
  ReadInt(taille) 
Next i

DataSection
  debutdata: 
  Data.s "toto le héros","12","134" 
  Data.s "beavis","47","180" 
  Data.s "butthead","48","178" 
EndDataSection

For i=1 To 3
  Debug nom$(i)
  Debug age(i)
  Debug taille(i)
Next i
Utilisation d'une procedure (sous-programme):
======================================

Code : Tout sélectionner

Dim NOM$(3)
Dim age(3)
Dim taille(3) 

Procedure ReadInt(Array tab(1),i); ici le "1" veut dire 1 dimension pour le tableau
 Read.s tmp$
  tab(i) = Val(tmp$) 
EndProcedure

Restore debutdata 
For i=1 To 3 
  Read.s nom$(i)
  ReadInt(age(),i)
  ReadInt(taille(),i) 
Next i

DataSection
  debutdata: 
  Data.s "toto le héros","12","134" 
  Data.s "beavis","47","180" 
  Data.s "butthead","48","178" 
EndDataSection

For i=1 To 3
  Debug nom$(i)
  Debug age(i)
  Debug taille(i)
Next i
Utilisation d'un "champ de string":
=============================

Code : Tout sélectionner

Dim NOM$(3)
Dim age(3)
Dim taille(3) 

Restore debutdata 
For i=1 To 3 
  Read.s tmp$
  
  k= 1
  nom$(i) = StringField(tmp$, k, ",")
  age(i) = Val(StringField(tmp$, k+1, ","))
  taille(i) = Val(StringField(tmp$, k+2, ",")) 
Next i

DataSection
  debutdata: 
  Data.s "toto le héros,12,134" 
  Data.s "beavis,47,180" 
  Data.s "butthead,48,178" 
EndDataSection

For i=1 To 3
  Debug nom$(i)
  Debug age(i)
  Debug taille(i)
Next i
et il existe probablement bien d'autres façon s de faire !

M.

Re: gestion des tableaux (DIM, READ, RESTORE)

Publié : sam. 28/sept./2019 12:49
par Micoute
On peu même faire une structure.

Re: gestion des tableaux (DIM, READ, RESTORE)

Publié : lun. 30/sept./2019 8:27
par Zorro
avec Structure ;)

note qu'avec une structure un seul tableau suffit ;
note, que j'utilise un tableau , mais qu'on peut le faire avantageusement avec une liste ;) (qui n'a pas de limite de taille contrairement au tableau )

Code : Tout sélectionner



Structure fiche
		nom.s
		age.i
		taille.i
EndStructure
global dim fiche.fiche(3)


Restore debutdata
; remplis la structure
For i = 0 To 2
		Read.s fiche(i)\Nom.s
		Read.i fiche(i)\age.i
		Read fiche(i)\taille.i  
Next i

; lecture de la structure
For i = 0 To 2
		Debug fiche(i)\Nom.s + " " + fiche(i)\age.i + " " + fiche(i)\taille.i
Next i



DataSection
		debutdata:
		Data.s "toto le héro"
		Data.i 12, 134
		Data.s "beavis"
		Data.i 47, 180
		Data$ "butthad" ;le signe $ fonctionne aussi pour les strings
		Data.i 48, 178
EndDataSection
; Epb
on peut aussi faire sans tableaux

Code : Tout sélectionner

; façon string sans tableau
donnee.s="toto le héro,12,134,beavis,47,180,butthad,48,178"
For i=1 to len(donnee.s)-3 step 3
		nom.s=StringField(donnee.s,i,",")
		c1.s=StringField(donnee.s,i+1,",")
		c2.s=StringField(donnee.s,i+2,",")
		debug nom.s+" "+c1.s+" "+c2.s
Next i

; Epb

Re: gestion des tableaux (DIM, READ, RESTORE)

Publié : lun. 30/sept./2019 11:07
par Zorro
et pour finir de te perdre, on aurai pu aussi utiliser la methode majikeyric :lol:
(ça devrai te rappeler les GFA punch )

Code : Tout sélectionner

macro m:macro:EndMacro:m sf:StringField:EndMacro:m n:next:EndMacro;;;;
m dd:debug:EndMacro:m f:for:EndMacro:m st:step:EndMacro:m ll:len;;;;;;
EndMacro:a.s="116,111,116,111,32,108,101,32,104,233,114,111,44,49,50"+
",44,49,51,52,44,98,101,97,118,105,115,44,52,55,44,49,56,48,44,98,11"+
"7,116,116,104,97,100,44,52,56,44,49,55,56,":f i=1 to ll(a.s)-1;;;;;;;
d.s=d.s+chr(val(Sf(a.s,i,","))):n i:f i=1 to ll(d.s)-3 st 3;;;;;;;;;;;
no.s=sf(d.s,i,","):c1.s=Sf(d.s,i+1,","):c2.s=Sf(d.s,i+2,",");;;;;;;;;;
debug no.s+" "+c1.s+" "+c2.s:n i;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;