Page 1 sur 1

[ASTUCE] Sous-catégories infinies

Publié : sam. 26/août/2017 10:07
par microdevweb
Bonjour à tous,

Je vous propose une petite astuce pour concevoir un code qui permet pour l'exemple de créer des catégories qui peuvent avoir des sous-catégories qui peuvent elle-même avoir des sous-catégories qui peuvent elle-même avoir des sous-catégories qui peuvent elle-même avoir des sous-catégories qui peuvent elle-même avoir des sous-catégories ...

:roll: Houla je m'arête la

Pour implémenter cela il faut savoir deux choses importantes
  • Une structure peut contenir sa propre structure
  • Une procédure peut s'appeler elle-même
Et voici le code qui n'est pas très compliqué

Code : Tout sélectionner

Structure CATEGORIE
  nom.s
  List mesCategorie.CATEGORIE()
EndStructure
Global NewList mesCategorie.CATEGORIE()
Procedure AjouteCategorie(Nom.s,*categorie_Mere.CATEGORIE=0)
  ; Si une catégorie mère est renseignée
  If *categorie_Mere
    AddElement(*categorie_Mere\mesCategorie())
    *categorie_Mere\mesCategorie()\nom=nom
    ProcedureReturn *categorie_Mere\mesCategorie()
  Else
    AddElement(mesCategorie())
    mesCategorie()\nom=Nom
    ProcedureReturn mesCategorie()
  EndIf
EndProcedure
Procedure LitCategories(List cat.CATEGORIE())
  ForEach cat()
    Debug cat()\nom
    ForEach cat()\mesCategorie()
      LitCategories(cat()\mesCategorie())
    Next
  Next
EndProcedure

; Ajout de quelque catégories
Define *cat=AjouteCategorie("Catégorie A")
AjouteCategorie("  sous-Catégorie de A A1",*cat)
AjouteCategorie("  sous-Catégorie de A A2",*cat)
*cat=AjouteCategorie("Catégorie B")
AjouteCategorie("  sous-catégorie B BA",*cat)
*cat=AjouteCategorie("  sous-catégorie B BB",*cat)
AjouteCategorie("    sous-catégorie de la sous-categorie BB  BBA",*cat)
AjouteCategorie("    sous-catégorie de la sous-categorie BB  BBB",*cat)
AjouteCategorie("Catégorie C")
LitCategories(mesCategorie())
Voilà j'espère que cela vous aura appris quelque chose qui pourra vous être utile.

Re: [ASTUCE] Sous-catégories infinies

Publié : sam. 26/août/2017 17:10
par falsam
je ne pensais pas que c'était possible d'imbriquer une structure de cette manière. Merci pour cette astuce.

Re: [ASTUCE] Sous-catégories infinies

Publié : sam. 26/août/2017 17:24
par Zorro
pas de raisons que ça ne marche pas, du moment que le contexte procedure est respecté

ce qui m'etonne la dedans, c'est que ça marche avec une Liste Chainée declarée en Globale !!!!????

ça , et seulement ça devrai poser un probleme dans un contexte recursif .... 8O

Re: [ASTUCE] Sous-catégories infinies

Publié : mar. 29/août/2017 11:43
par GallyHC
Merci pour cette petite astuce, cela peut être utile.

GallyHC

Re: [ASTUCE] Sous-catégories infinies

Publié : jeu. 31/août/2017 17:38
par JohnJohnsonSHERMAN
Merci de cette astuce :)

Ca me rapelle la maniére de créer une liste chainée en C :) Je ne savais pas qu'on pouvait faire ca en PB... j'aurais mis des pointeurs ^^
Aprés tout une liste chainée l'est grâce à des pointeurs donc.... ;)