questions sur les .l,.b etc....

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
bernard13
Messages : 1221
Inscription : mer. 05/janv./2005 21:30

questions sur les .l,.b etc....

Message par bernard13 »

bonjour

une petite question svp :

comment sait t'on que l'on mettre :

.l ou .w ou .s ou .b

par exemple que Event.l je comprend pas pourquoi on mets .l
ou procedure.b pourquoi on mets le .b

merci me expliquer svp
poshu
Messages : 1138
Inscription : sam. 31/juil./2004 22:32

Message par poshu »

le type de la variable (donc le .machin) peut etre déterminé par deux choses:
en premier lieu ce que tu compte en faire: certaines fonctions ne sont compatibles qu'avec certain types par exemple. Le .s correspond à string, c'est un cas particulier puis ce qu'il permet de stocker du texte. Pour le reste, elles permettent toute de stocker une valeur plus ou moins longue.
Par exemple, si tu veux faire des divisions à virgule, il te faudra utiliser des float.

en second lieu, la taille prise en mémoire: il faut toujours essayer de prendre la plus petite possible, c'est vraiment une optimisation mineur vu la ram dont on dispose aujourd'hui, mais ca coute rien en général.

Pour plus d'info, reporte toi à l'aide de pure basic.
bernard13
Messages : 1221
Inscription : mer. 05/janv./2005 21:30

Message par bernard13 »

merci
mais qu'on c'eston que l'on le metter le . quelquechose?
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

ben si tu veux stocker une valeur dans une variable
tu tiens compte de la taille de cette valeur

par exemple si tu veux stocker un chiffre de 0 a 255
un Octet suffit car les octets vont de 0 a 255 (-127 a 127)

pour la valeur 5 qui correspond a "101" en binaire
pas besoin d'une variable qui peut contenir 32 bit (a.l)
puisque tu n'a que 3 bit a garder , un octet=8 bits
donc tu pourra faire a.b=5 , le ".b" indique que la variable sera formater en 8 bits
ce qui fera en binaire que le contenu de "a.b" ressemblera a :
"00000101"

alors que a.w=5 ressemble a :
"0000000000000101"

car le ".w" demande que la variable puisse contenir 16 bit ,".w"=Word=Mot de 16 bit

si tu choisi de formater ta variable en 32 bit "a.l"
cela donnera : a.l=5

soit :
"00000000000000000000000000000101"

:D

tu vois qu'une variable :
"a.l" prends 2 fois plus de place en memoire que "a.w"
et 4 fois plus que "a.b"

ce qui veut dire que si tu utilise des .l pour stocker des petit valeurs
non seulement tu prends plus de memoire a chaque variable
mais aussi que c'est plus long pour l'ordi d'y acceder :D

pour la manipulation d'adresse memoire, en general on reste en ".l"
:D
bernard13
Messages : 1221
Inscription : mer. 05/janv./2005 21:30

Message par bernard13 »

merci Dobro
mais j'ai rien compris du tout
Avatar de l’utilisateur
flaith
Messages : 1487
Inscription : jeu. 07/avr./2005 1:06
Localisation : Rennes
Contact :

Message par flaith »

tu es allé voir l'aide de purebasic, dans thèmes généraux => Variables, Types et Opérateurs ?
bernard13
Messages : 1221
Inscription : mer. 05/janv./2005 21:30

Message par bernard13 »

oui jj'étais voir
mais j'ai pas compris c'est quand faut'il mettre un
.quelque chose
Patrick88
Messages : 1564
Inscription : mer. 21/janv./2004 18:24

Message par Patrick88 »

par exemple si tu veux faire un calcul sur 2 valeurs

5 et 3.56

5 est un entier que tu peux affecter à la variable mon_entier
cette variable tu vas la "formater" c'est à dire lui donner un encadrement mini = 0 et maxi ... 255 , 65536, 1 million...

dans l'aide de purebasic , l'écart 0 à 255 est pour les octets ( byte en anglais ) donc "b"
0..65535 est pour les mots ( word en anglais ) donc w

donc mon_entier pourra être affecté à une variable de type byte (b) ou word (w)

mon_entier.b = 5

pour 3.56, la t'a pas le choix c'est un nombre à virgule flottante ou float (f) en anglais

mon_flottant.f = 3.56

le resultat de l'addition de ces 2 valeurs sera un float

mon_resultat.f = mon_entier + mon_flottant

après rien ne t'empèche de mettre toutes tes variables en ".f" , ça "consomme" plus de mémoire, mais ça marchera quand même...

t'as compris ?

pat
Guimauve
Messages : 1015
Inscription : mer. 11/févr./2004 0:32
Localisation : Québec, Canada

Message par Guimauve »

Lorsque l'on fait de la programmation il faut éviter de consommer de la mémoire inutilement et donc le choix du type de variable est primordial.

Dans un code tu as besoin d'une variable pour un test vrai ou faux.

Variable = 0 ou Variable = 1 et pas autre chose. Dans ce cas de figure, c'est ridicule d'utiliser 4 octets de mémoire (.l) pour mémoriser 0 ou 1. Il est plus approprié d'utiliser 1 octet de mémoire (.b). (Idéalement les booléens deveraient être ajouter à purebasic)

Lorsque l'on dessine sur un image, la grandeur maximale est dans les 8000 X 8000 environ. Donc l'utilisation de 2 octets de mémoire (.w) est suffisant pour positionner les coordonnées des commandes de dessin.

A+
Guimauve
bernard13
Messages : 1221
Inscription : mer. 05/janv./2005 21:30

Message par bernard13 »

merci pour vos reponses

quand je vois ceci :

procedure.w cela veux dire que ma procedure va moins consommer ?
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

bernard13 a écrit :merci pour vos reponses

quand je vois ceci :

procedure.w cela veux dire que ma procédure va moins consommer ?
non cela veut dire que la valeur que la procédure va retourner
ne pourra pas dépasser -32768 à +32767
c'est a dire une valeur qui tiens sur 2 octets
car 16 bit (.W) = 2 octets (2*8bits)
bernard13
Messages : 1221
Inscription : mer. 05/janv./2005 21:30

Message par bernard13 »

mais comment on sait que l'on va mettre le .w ?
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

bernard13 a écrit :mais comment on sait que l'on va mettre le .w ?

non cela veut dire que la valeur que la procédure va retourner
ne pourra pas dépasser -32768 à +32767
c'est a dire une valeur qui tiens sur 2 octets
car 16 bit (.W) = 2 octets (2*8bits)
bernard13
Messages : 1221
Inscription : mer. 05/janv./2005 21:30

Message par bernard13 »

desoler Dobro

mais j'ai pas compris ....
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

bernard13 a écrit :desoler Dobro

mais j'ai pas compris ....
colle cette exemple dans l'editeur et lance le en mode debuger
et lit les commentaires
et effectue le changement demandé, et regarde a nouveau




Code : Tout sélectionner

Procedure.b Bernard13(argument)
   resultat=argument+255
    ProcedureReturn resultat
EndProcedure


; cela devrai afficher 355 (100+255) 
Debug Bernard13(100)





; mais cela affiche 99 !! car un .b ne peut pas contenir autre chose que -127 a 127
; et resultat sera en fait resultat.b

;355 en binaire ça donne "101100011"
;c'est a dire 9 bits !!
;hors en .b on ne peut recevoir que 8 bits !!
;si l'on prends les 8 premiers bits de 355
;cela donne "01100011" on perds le premier "1"
;et "01100011" en decimal cela donne la valeur 99
;voila pourquoi tu as 99 au lieu de 355







; change le procedure.b par procedure.w
; et reessaye  ....

; cela va t'afficher 355 car resultat sera en fait resultat.w et pourra contenir la valeur 355
; car en .w on peut retenir 16 bit
; et 355 ça en occupe que 9 bits
; donc c'est bon 




si tu ne comprends pas ça , arrete de chercher a apprendre la programmation
c'est manifestement pas fait pour toi ...

cherche un travaille dans les "espaces vert" , les tondeuses, c'est bien aussi :D
Répondre