Brayane a écrit :La ce que G-Rom ma donné à manger si gentiment, je ne suis pas encore capable de le digérer car c'est encore trop compliquer pour moi.
Je vois à peut prêt se que ça fait mais j'assimile pas encore...
J'ai peut être visé trop haut.
Non, je ne pense pas du tout que tu aies visé trop haut.
D'ailleurs, tu parles de hauteur, qui dit 'travail en hauteur' dit 'échafaudage'.
Le code de G-Rom n'est pas parfait. Je le trouve même craignos, mais il a sûrement fait exprès de le simplifier, pour justement qu'il n'y ait pas 36 explications successives qui se succèdent avant de le comprendre.
On va faire un code source plus craignos encore! Mais qui n'empêche en rien de fonctionner.
On peut réfléchir du plus compliqué au plus simple.
On a là-haut, une structure complexe. car, comme en Cpp, elle contient une union.
Si on 'zappe' cette union, on a une simple structure.
Une structure, ce sont des champs qui se succèdent.
En Quickbasic, il n'y a pas de structure native au langage.
Pourtant, c'est faisable. Ça donnerait:
Code : Tout sélectionner
MaxPersonne = 99
; /!\ de 0 à 99, ça fait 100 personnes!
; Méthode à l'ancienne pour créer une structure et allouer la mémoire suffisante:
; Par exemple, avec 3 champs, on a 3 tableaux
Dim PersonneNom.S(MaxPersonne)
Dim PersonneAge.I(MaxPersonne)
Dim PersonneProfession.S(MaxPersonne)
Là, on a notre structure 'Personne'.
Chaque 'Personne' a donc un nom sous forme de chaîne, un âge sous forme de nombre et une profession sous forme de chaîne (S).
MaxPersonne est réglé à 99, donc avec la personne numéro 0, un total de 100 personnes est descriptible.
C'est-à-dire qu'on va pouvoir lire et modifier les caractéristique (champs de structure) de chacune des 100 personnes à la volée. Avant de voir cette volée, voyons l'équivalent 'moderne' de structure:
Code : Tout sélectionner
Structure PERSONNE
Nom.S
Age.I
Profession.S
EndStructure
Dim Personne.PERSONNE(MaxPersonne)
Woilà! En gros, déjà deux équivalents. Et voici pour lire une caractéristique, à l'ancienne...
...et façon moderne...
Et voici pour modifier une caractéristique, à l'ancienne...
...et façon moderne...
Alors j'ai mis des exemples, mais je n'ai pas précisé 'PersonneCourante', c'est une variable, un nombre entier plus précisément entre 0 et 99 inclus ('MaxPersonne' est modifiable).
C'est donc ainsi avec les tableaux. Objet carré dont la taille est définie "à l'avance" (même si l'on peut modifier cette taille à la volée) pour être l'objet dont l'accès est le plus rapide.
Plus lent, mais gérant l'insertion et la suppression, existe les listes chaînées. C'est quand 'PersonneCourante' est impliqué en interne, donc n'a plus à être précisé.
maxPersonne, idem, n'a plus à être précisé.
Par ex:
(à l'ancienne)
(moderne)
Plus lent encore, mais gérant toute transformation d'accès de données, la map. Le principe d'accès est proche d'un tableau, mais au lieu d'accéder aux données via un nombre (index de tableau), on y accède par un nom, et plus généralement , par une chaîne. Seul le caractère ASCIIZ (0) est interdit dans le nom.
Toi, tu veux stocker des infos, sur des objets. Il te faut donc faire en 1er lieu, un inventaire des objets supportés par ton futur débogueur et y déceler les diverses caractéristiques.
Après, libre à toi de commencer par un code source à l'ancienne, d'abord, puis de l'adapter ensuite en version plus moderne.
N'hésite pas si tu as d'autres question.