gestion des tableaux (DIM, READ, RESTORE)

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
drfloyd
Messages : 198
Inscription : mar. 21/août/2007 13:30
Contact :

gestion des tableaux (DIM, READ, RESTORE)

Message 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 ?
Avatar de l’utilisateur
Micoute
Messages : 2522
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

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

Message 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
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 5.73 PB 6.00 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
drfloyd
Messages : 198
Inscription : mar. 21/août/2007 13:30
Contact :

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

Message 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)
Avatar de l’utilisateur
Naheulf
Messages : 191
Inscription : dim. 10/mars/2013 22:22
Localisation : France

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

Message 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
drfloyd
Messages : 198
Inscription : mar. 21/août/2007 13:30
Contact :

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

Message par drfloyd »

Oui en effet, c'est un peu plus lisible.

Bah ecoutez merci et à bientot !
Avatar de l’utilisateur
Micoute
Messages : 2522
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

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

Message 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.
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 5.73 PB 6.00 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Mesa
Messages : 1098
Inscription : mer. 14/sept./2011 16:59

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

Message 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.
Avatar de l’utilisateur
Micoute
Messages : 2522
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

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

Message par Micoute »

On peu même faire une structure.
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 5.73 PB 6.00 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Avatar de l’utilisateur
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

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

Message 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
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Avatar de l’utilisateur
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

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

Message 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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Répondre