Question de débutant sur les tableaux

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Francis13
Messages : 18
Inscription : dim. 21/févr./2010 7:29
Localisation : Marseille

Question de débutant sur les tableaux

Message par Francis13 »

Question de débutant sur les tableaux

Code : Tout sélectionner

  ;les tableaux

;En C on peut créer et initialiser un tableau comme ceci:
;Code : C 
;	int tableau[4] = {10, 23}; // Valeurs insérées : 10, 23, 0, 0
;     int tableau[5]={1,2,3,4,5};
 
;En  PB avec Dim on crée un tableau:(exemple de l'aide)
;Syntax
;Dim nom.<type>(<expression>, [<expression>], ...)
;
;Dim tableau.l(5)=1,2,3,4,5                            ==
;Dim prenom.s(5)=(al,mo,ko,mi,dz)                        ==  rien ne fonctionne
;Dim prenom.s(5) =(<uj>,<ok>,<io>,<uy>,<yt>)         ==        ''
;Dim tableau.s(3) =("toto","tata","utut")                ==         ''
;Dim tableau.l(2) =((1),(2))                           ==


;En PB peut-on initialiser un tableau avec des valeurs diverses d'une manière
;similaire au langage C (si oui comment ) ?
;
Dim tableau.l(3)
tableau(0) =1
tableau(1) =2
tableau(2) =3
tableau(3) =4
For i.l =0 To 3
Debug tableau(i)
Next i
je n'ayant pas trouvé d'exemple de code dans les tutos,je pose le problème dans le forum.
Merci d'avance pour vos explications.
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Question de débutant sur les tableaux

Message par Backup »

.....................
Dernière modification par Backup le dim. 20/mars/2011 14:20, modifié 1 fois.
Francis13
Messages : 18
Inscription : dim. 21/févr./2010 7:29
Localisation : Marseille

Re: Question de débutant sur les tableaux

Message par Francis13 »

bonsoir Dobro
je te remercie pour tes explications.
Pour la pratique j'ai testé avec ces quelques lignes.

Code : Tout sélectionner

;read les data
OpenConsole()
EnableGraphicalConsole(1)
Define.l i
Dim tableau.s(7)
For i =0 To 6
Read.s jour$
tableau(i) =jour$
PrintN(tableau(i))
Next i
;
jour =DayOfWeek(Date())
datum$ = FormatDate("%dd,%mm,%yyyy",Date())
text$ =" Nous sommes le " + tableau(jour) +" " + datum$ 
time$ = FormatDate("%hh:%ii:%ss", Date())
message$ =text$ +"   il est  "+ time$
PrintN("")
Print( message$)

DataSection
Data.s "dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"
EndDataSection
PrintN("")
PrintN("tapez entree pour quitter")
Input()
CloseConsole()
End
:D
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Question de débutant sur les tableaux

Message par Backup »

cool ! :)
boddhi
Messages : 604
Inscription : lun. 26/avr./2010 16:14
Localisation : S 48° 52' 31'' / O 123° 23' 33''

Re: Question de débutant sur les tableaux

Message par boddhi »

Petite précision :
Francis13 a écrit : ;En PB avec Dim on crée un tableau:(exemple de l'aide)
;Syntax
;Dim nom.<type>(<expression>, [<expression>], ...)
;
;Dim tableau.l(5)=1,2,3,4,5 ==
;Dim prenom.s(5)=(al,mo,ko,mi,dz) == rien ne fonctionne
;Dim prenom.s(5) =(<uj>,<ok>,<io>,<uy>,<yt>) == ''
;Dim tableau.s(3) =("toto","tata","utut") == ''
;Dim tableau.l(2) =((1),(2)) ==
(<expression>, [<expression>], ...) : expression signifie ici dimension du tableau qui peut être indiquée par une valeur, une variable ou résultat d'une expression.
La première dimension est obligatoire. Les [] (qui expriment le caractère facultatif de ce qu'ils encadrent) indiquent que d'autres dimensions peuvent être ajoutées selon les besoins du programmeur. Ce ne sont en rien des délimiteurs. Tout comme les <> qui précisent la nature de ce qui doit être saisi en permettant de le distinguer des mots-clés (instructions et fonctions BASIC), variables, etc.

Ainsi :

Code : Tout sélectionner

Dim Nom.s(9)
créera un tableau (à une dimension) qui pourra contenir 10 valeurs indexées de 0 à 9.

De même :

Code : Tout sélectionner

Dim Coordonnées.l(9,9)
créera un tableau (à deux dimensions) qui pourra contenir 100 valeurs indexées comme suit (0,0),(0,1),...,(1,0),(1,1) jusqu'à (9,9).

Si ma mémoire est bonne, à l'inverse d'autres langages, il n'est pas possible sous PB d'alimenter un tableau lors de sa déclaration.
Avatar de l’utilisateur
MLD
Messages : 1124
Inscription : jeu. 05/févr./2009 17:58
Localisation : Bretagne

Re: Question de débutant sur les tableaux

Message par MLD »

Salut Francis13
Pour faire la fonction heure et date de ton exemple, tu peut aussi le faire sans tableau.
Regarde ce code pour avoir l'heure et la date, dans la barre de titre d'une fenêtre.
Tu peu aussi l'adapter a ce que tu veux

Tu lances avec ceci.

Code : Tout sélectionner

Handle = WindowID (#Fenetre) ;Handle de la fenêtre 
Tim1 = SetTimer_ (Handle, 2, 50, @TimerProc2())
Tu écris cette procedure

Code : Tout sélectionner

Procedure TimerProc2(hwnd.l, uMsg.l, idEvent.l, dwTime.l) ;timer pour faire date + pendule dans la barre de titre
     Select uMsg 
         Case #WM_TIMER 
             Select idEvent 
              Case 2
               Select DayOfWeek( Date())
                Case 0
                Jour$ = "Dimanche"
                Case 1
                Jour$ = "Lundi"
                Case 2
                Jour$ = "Mardi"
                Case 3
                Jour$ = "Mercredi"
                Case 4
                Jour$ = "Jeudi"
                Case 5
                Jour$ = "Vendredi"
                Case 6
                Jour$ = "Samedi"
               EndSelect
               Date$ = Jour$ +":" + FormatDate(" %dd : %mm : %yyyy | %hh : %ii : %ss", Date())                      
               SetWindowTitle((#Fenetre,"Ma fenêtre test " + Space(150) + Date$) 
           EndSelect 
     EndSelect      
EndProcedure 
Et tu supprimes le timer comme ceci.

Code : Tout sélectionner

KillTimer_(WindowID(#Fenetre),Tim1) 
Bonne journée :D
Michel
Patrick88
Messages : 1564
Inscription : mer. 21/janv./2004 18:24

Re: Question de débutant sur les tableaux

Message par Patrick88 »

et une instruction DIM personnalisée :mrgreen:

Code : Tout sélectionner

Macro _DimNum(tabl,type,taille,chaine)
  Dim tabl.type(taille) ; on pourrait même supprimer le paramètre taille et le remplacer par un CountString(chaine,",")
 
  For ind = 0 To CountString(chaine,",")
    tabl(ind) = Val(StringField(chaine,ind+1,","))
  Next
EndMacro

;Dim tableau.l(3)
_DimNum(tableau,l,3,"1,2,3,4")

; tableau(0) =1
; tableau(1) =2
; tableau(2) =3
; tableau(3) =4
For i.l =0 To 3
Debug tableau(i)
Next i
et ça marche, j'en suis le premier epatateté....
Répondre