Dim Prix(2) as integer Prix(0) = 2 Prix(1) = 5 Prix(2) = 8
Ci-dessus chaque emplacement contient un prix
Maintenant un exemple avec une structure
Structure Legumes Dim Nom as String Dim Prix as Integer Dim Origine as String End Structure
Dim Produits(2) as Legumes Produits(0).Nom = "Poivron" ' le poivron coûte 2 € et vient du Maroc Produits(0).Prix = 2 Produits(0).Origine = "Maroc"
Produits(1).Nom = "Chou" ' le chou 5 € et vient de France Produits(1).Prix = 5 Produits(1).Origine = "France"
Produits(2).Nom = "Scarole" ' la scarole 8 € et vient d'Italie Produits(2).Prix = 8 Produits(2).Origine = "Italie"
Dans la structure ci-dessus l'emplacement 0 contient le nom du produit 0 , le prix du produit 0 ainsi que l'origine du produit 0 .
Il en est de même pour chaque emplacement . L'emplacement est à considérer comme une boite qui porte un numéro ( l'indice du tableau)
La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.
bonjour , ok donc dans l'emplacement du tableau (qui est un objet) on peux mettre plusieurs variables de la structure passer en "paramètres" ?
pourquoi on peux pas le faire avec un simple tableau ? car par exemple le type string , c'est le nom d'une classe est la variable (tableau) devient un objet ?
Produit(0) c'est une seul variable, et comme la structure possède un champ Nom tu saisir un nom et comme la structure possède aussi un champ Prix tu peux saisir un prix.
Une structure est je le répète une variable avec plusieurs champs => une variable avec plusieurs informations
Prix n'est pas une variable, c'est un champ, une variable c'est autonome, un champ c'est dépendant d'une variable.
Le tableau ne va pas dans la structure, la structure est la description du type. Une fois que tu t'en sers, que tu initialises une variable de ce type, un emplacement mémoire lui est attribué. Dans cet emplacement le lien avec les champs est décrit. On en revient au fait que c'est une variable à part entière.
comment on fais alors pour savoir si c'est une variable ou non (je parle pas spécialement de la structure) car dans la structure elle se déclare comme des variables ,
Le tableau ne va pas dans la structure
oui c'est la structure qui vas dans la variable ou tableau de variable , mais une fois que le tableau à l'emplacement (0) ou autre elle renvoi ce qui à a cette emplacement donc la structure avec les champ ou rien ?
comment on fais alors pour savoir si c'est une variable ou non
Je te l'ai dit une variable est autonome, elle fonctionne d'elle même, un champ est dépendant, tu ne peux pas utiliser le champ seul, tu utilises le champ Truc de la variable de type Bidule.
dans la structure elle se déclare comme des variables
oui car la structure est le modèle, il faut bien définir que le Nom est un String, le Prix un Double etc..
Bonjoue Hixale
Lorsqu'on arrive à l'emplacement 0 on y voit un objet de type Legumes ( si on reprend mon exemple) mais quelle information veux-tu lire ou écrire : son nom , son prix ou son origine
Structure Legumes Dim Nom as String Dim Prix as Integer Dim Origine as String End Structure
Dim Produits(2) as Legumes ' un tableau de 3 Produits de type Legumes
Produits(0).Nom = "Poivron" ' Le produit 0 est 1 poivron Produits(0).Prix = 2 ' Ce même poivron coute 2 € Produits(0).Origine = "Maroc"' Ce même poivron vient du Maroc
Nom, Prix et Origine sont des champs qui caractérisent un produit de type Legumes
Si tu ne comprends pas cela c'est plutôt mal parti pour apprendre Vb Net ou tout autre langage de programmation quel qu'il soit
Non, ça n'est pas un ensemble de variables, c'est un type (comme integer ou double), dont on pourra instancier des variables possédant chacune des champs tels que définit dans la structure.
Quand j'étais petit, la mer Morte n'était que malade.
George Burns
bonjour
Le sujet est toujours ouvert Hixale !
La preuve je te réponds
Cela ne sert à rien d'envoyer un message en privé pour de l'aide
Ce forum est ouvert à toute personne désireuse de comprendre et d'apprendre un domaine en informatique et spécialement un langage de développement .
Maintenant vu ton niveau de compréhension de notions de base j'ai de sérieux doutes pour la réussite de cet apprentissage .
Ce sera mon dernier message ( plus de 100 messages échangés entre les bénévoles qui t'ont répondu et toi ) et ceci sur des notions de base qui sont plus évidentes à mon avis )
Désolé si tu te sens lésé ou offensé !
j'aimerais savoir que contient un objet par exemple un tableau de structure comme ceci
Structure Legumes
Dim Nom As String
Dim Prix As Integer
Dim Origine As String
End Structure
on vas créer une variable donc un objet avec ce type "Legumes"
Dim Produits(2) As Legumes
la variable Produits(2) devient un objet , mais que contient cette objet ? est-il juste un chemin d’accès à la structure qui est créer hors du Main() ou contient tout la structure comme ceci
Prodruits = Structure Legumes
Dim Nom As String
Dim Prix As Integer
Dim Origine As String
End Structure
bref je voulais savoir de façon général que contient concrètement un objet
Au chapitre fonction
Petit exercice
Pour clore ce chapitre, je vous propose un petit exercice.
Je vais vous demander de remplir un tableau de dix cases et d'additionner les valeurs, la récupération de ces valeurs devant se faire en toute sécurité, comme dans notre TP sur l'addition.
La partie qui demande la valeur et qui vérifie s'il s'agit d'un nombre devra être écrite dans une fonction séparée.
As tu essayé de le faire ou as tu regardé la solution tout de suite
je vais utiliser une analogie qui est plus adaptée à un objet qu'à une structure, mais je n'ai pas trouvé mieux.
La structure c'est un plan
Structure fichier
Dim auteur As String
Dim genre As string
Dim titre As String
End Structure
La variable initiée à partir de cette structure, c'est une maison construite à partir du plan.
Si on imagine une cité ouvrière des années 50, toutes les maisons sont identiques.
La cité c'est le tableau, chaque maison une instance différente, les habitants sont propres à chaque instance, tout comme la décoration, le mobilier etc...
Si tu dois te rendre à une de ces maisons, pour la première fois de ta vie, tu vas aller à son adresse, son emplacement dans le tableau.
Puis pour toquer à la porte, vas tu faire demi-tour, te rendre à la mairie pour consulter le permis de construire?
Non, tu vas regarder la maison et voir qu'il y a une porte.
Et bien pour un tableau de structures c'est pareil, chaque instance place en mémoire tout ce qu'il faut pour que le programme accède aux habitant, à la porte et à la sonnette.
laisse tomber c'est pas en expliquant avec des maisons que je vais mieux comprendre , un objet doit pas se créer comme par magie juste parce-que une classe ou un type peu importe est considerer comme un "plan" il dois bien y avoir une procédure des étapes détaillés pour créer un "objet" et que cet "objet" puisse accéder aux informations de la "classe" ou que la classe envois ses données à "l'objet" et que cet objet dois les stocker d'une certaines manières et pas en vrac etc...
bref avoir des explications pertinentes informatiquement pas juste schématiser avec des explications d'objets réel
je vais m'en tenir juste avec l'explications du cours comme quoi qu'une structure est un ensemble de variables et que chaque emplacement contient différentes données , comme par magie :)
Pas en vrac, selon la définition de la structure, comme c'est décrit sur le plan.
D'abord le nom qui est une string, ensuite le prix qui est un entier et enfin l'origine qui est une string, tout ça encapsulé dans une seule variable du type Legume.
voila un autre exemple qui je l’espère t'aidera a y voir plus clair
Structure FilmInfo Dim Titre As String Dim Genre As String Dim Note As Byte End Structure
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
'"""""""Ecriture tableau
'ici declare ta variable en utilisant ta structure comme un type de variable c a dire que 'NewFilmInfo contient les variable Titre, Genre et Note (de type different la c 2 string et 1 byte) Dim NewFilmInfo As FilmInfo
'ici tu declare ton tableau avec le nombre déléments et le type de donné stocké, donc c la structure FilmInfo Dim ListeFilmInfo(2) As FilmInfo
'ici tu donne une valeur aux variable Titre, Genre et Note contenu dans NewFilmInfo NewFilmInfo.Titre = "Alien" NewFilmInfo.Genre = "Horreur" NewFilmInfo.Note = 20 'et ici tu intègre NewFilmInfo(qui contient les variable Titre, Genre et Note) dans la 1er case du tableau ListeFilmInfo(0) = NewFilmInfo
'ici tu donne une nouvelle valeur aux variable Titre, Genre et Note de NewFilmInfo NewFilmInfo.Titre = "Fast And Furious" NewFilmInfo.Genre = "Action" NewFilmInfo.Note = 0 'et ici tu intègre la nouvelle valeur de NewFilmInfo dans la 2em case du tableau ListeFilmInfo(1) = NewFilmInfo
'""""""" lecture Tableau 'un des avantage de la structure est que tu peut appelé un sub 'ou une fonction avec 1 argument contenant plusieurs variable. 'de même pour la valeur retourné par une fonction, grâce a la structure elle peut contenir plusieurs variable au lieu d'une.
'ici on appelle le sub AffichageInfo avec le tableau (qui contiens les variable de type FilmInfo ) comme argument
le NewFilmInfo on lui à attribuer d'autres valeurs comment ListeFilmInfo(0) peut il garder ses valeurs ? si NewFilmInfo aurais étais un tableau j'aurais compris
Bonsoir Rykudos,
ton exemple pose la problématique des types valeurs et types références.
Hixale n'en est pas encore là et du coup, il te pose la question.
J'y répondrai à la fin.
Hixale je vais refaire une analogie avec un tableur
La première ligne, qui correspondrait à l'emplacement 0 dans le tableau contient toutes les informations de la structure, y compris le nom de chaque champs, grâce à la ligne d'entête.
Et idem pour la suite.
Une structure est un type valeur, ce qui veut dire qu'à chaque transfert (passage de paramètre, affectation etc...) une copie de la variable est créée.
Donc
ListeFilmInfo(0) = NewFilmInfo' ListeFilmInfo(0) contient un clone de (NewFilmInfo à l'instant t1)
et
ListeFilmInfo(1) = NewFilmInfo' ListeFilmInfo(1) contient un clone de (NewFilmInfo à l'instant t2)
s'agissant de clones les modifications de NewFilmInfo n'ont aucunes influences sur ListeFilmInfo(0) et ListeFilmInfo(1).
Quand tu travailleras avec des objets, qui sont des types référence ListeFilmInfo(0), ListeFilmInfo(1) et NewFilmInfo seront une seule et même variable, et là toute modification aura un impact.
Pour que l'exemple prête moins à confusion, cela aurait pu être
Dim NewFilmInfo As FilmInfo
'ici tu declare ton tableau avec le nombre déléments et le type de donné stocké, donc c la structure FilmInfo
Dim ListeFilmInfo(2) As FilmInfo
For i = 0 to 1
Dim NewFilmInfo as FilmInfo'à chaque itération la variable est nouvelle
if i = 0 then
NewFilmInfo.Titre = "Alien"
NewFilmInfo.Genre = "Horreur"
NewFilmInfo.Note = 20
else
NewFilmInfo.Titre = "Fast And Furious"
NewFilmInfo.Genre = "Action"
NewFilmInfo.Note = 0
end if
ListeFilmInfo(i) = NewFilmInfo
next
Bon maintenant, même si la structure est plus ou moins un passage obligé vers l'objet, en .Net ça ne sert à rien.
Certains vont te dire que si: à la compatibilité avec des programmes ou des dll en C, c'est faux, on peut très bien faire avec un objet bien écrit.
La seule raison qui fait qu'une structure existe encore en .Net, c'est que ça a toujours existé et qu'il ne faut pas brusquer ceux qui ne veulent pas se mettre à l'objet. Mais bon .Net c'est un langage objet....
"La première ligne, qui correspondrait à l'emplacement 0 dans le tableau contient toutes les informations de la structure"
quelle ligne quelle informations ? le Nom de la structure et les champs ?
donc le tableau ne contient pas que les champs ?
"Une structure est un type valeur, ce qui veut dire qu'à chaque transfert (passage de paramètre, affectation etc...) une copie de la variable est créée.
s'agissant de clones les modifications de NewFilmInfo n'ont aucunes influences sur ListeFilmInfo(0) et ListeFilmInfo(1). "
ah ok c'est du clonage j'avais vu ça je sais plus ou...
effectivement j'ai pas encore vu les clonages
Dim NewFilmInfo As FilmInfo
'ici tu declare ton tableau avec le nombre déléments et le type de donné stocké, donc c la structure FilmInfo Dim ListeFilmInfo(2) As FilmInfo
For i = 0 to 1 Dim NewFilmInfo as FilmInfo'à chaque itération la variable est nouvelle
if i = 0 then NewFilmInfo.Titre = "Alien" NewFilmInfo.Genre = "Horreur" NewFilmInfo.Note = 20 else NewFilmInfo.Titre = "Fast And Furious" NewFilmInfo.Genre = "Action" NewFilmInfo.Note = 0 end if
ListeFilmInfo(i) = NewFilmInfo next
Dim NewFilmInfo as FilmInfo'à chaque itération la variable est nouvelle
quelle ligne quelle informations ? le Nom de la structure et les champs ?
celle de la capture d'écran de mon tableur (pas tableau)
la première ligne c'est Tomate 1.2 Espagne, et en levant les yeux on voit les entêtes de colonne Nom Prix Origine. Il y a tout ce qu'il te faut pour comprendre ce qu'est un Produit.
Pour le tableau c'est plus ou moins le même principe, quand tu l'initialises pour 10 entiers, il prépare la place pour stocker entiers c'est à dire 10 fois (description d'un entier + valeur), et quand tu l'initialises pour 10 Produits idem 10 fois (decscription de la structure et valeurs des champs).
cette ligne n'est pas obligé ?
ben si, avant le For NewFilmInfo n'existe pas. En le déclarant dedans à chaque itération, il s'agit bien d'une nouvelle variable et donc y'a pas de question à se poser si c'est un type valeur ou pas.
Mais en soit cette "correction" de l'exemple de Rykudos n'est pas utile, en vrai on n'utilise pas de variable intermédiaire, ça prend de la place et perd du temps d'exécution.
effectivement j'ai pas encore vu les clonages
pour l'instant tu n'as utilisé que des types valeurs, donc t'avais à le voir puisque ça se fait tout seul.
"celle de la capture d'écran de mon tableur (pas tableau) "
ah oui exact le tableur c'étais pas afficher désolé
"ben si, avant le For NewFilmInfo n'existe pas"
Dim NewFilmInfo As FilmInfo ' ICI
'ici tu declare ton tableau avec le nombre déléments et le type de donné stocké, donc c la structure FilmInfo Dim ListeFilmInfo(2) As FilmInfo
For i = 0 to 1 Dim NewFilmInfo as FilmInfo'à chaque itération la variable est nouvelle
if i = 0 then NewFilmInfo.Titre = "Alien" NewFilmInfo.Genre = "Horreur" NewFilmInfo.Note = 20 else NewFilmInfo.Titre = "Fast And Furious" NewFilmInfo.Genre = "Action" NewFilmInfo.Note = 0 end if
ListeFilmInfo(i) = NewFilmInfo next
Regarde au début du code la ou c'est marquer 'ICI , elle ne compte pas cette déclaration ?
ok donc , quand on initialise un tableau de structure les emplacement ont directement les Champs ? Nom Prix et Origine, sans qu'on leur à attribuer de valeurs ? et au niveau de la ram chaque emplacement du tableau c'est à dire que Tbleau(0) à son propre emplacement dans la ram et que Tableau(1) a aussi son propre emplacement dans la ram ?
Lol 28 messages
tu as dit dans l´un de tes postes
j'en ai pour 30 ans pour apprendre tout ça lol
tu fais penser à une personne qui apprend à conduire et le moniteur lui explique que lorsqu'on arrive à un stop il faut freiner
la personne :" je ne comprends pas quand j'appuis sur la pedale
du frein comment la voiture s'arrete
le moniteur : c'est la pression hydraulique bla bla
la personne : ah comme par magie bon je vais m'en tenir juste avec l'explication qu'à un stop il faut freiner et stopper avant la
ligne blanche
je vais m'en tenir juste avec l'explications du cours comme quoi qu'une structure est un ensemble de variables et que chaque emplacement contient différentes données , comme par magie :)
donc tu veux savoir comment fonctionne le compiler
Je te l'ai dit une variable est autonome, elle fonctionne d'elle même, un champ est dépendant, tu ne peux pas utiliser le champ seul, tu utilises le champ Truc de la variable de type Bidule.
oui car la structure est le modèle, il faut bien définir que le Nom est un String, le Prix un Double etc..
et
on appel les champs de la structure dans l'emplacement du tableau pour leur mettre des valeurs ?
Lorsqu'on arrive à l'emplacement 0 on y voit un objet de type Legumes ( si on reprend mon exemple) mais quelle information veux-tu lire ou écrire : son nom , son prix ou son origine
Nom, Prix et Origine sont des champs qui caractérisent un produit de type Legumes
Si tu ne comprends pas cela c'est plutôt mal parti pour apprendre Vb Net ou tout autre langage de programmation quel qu'il soit