racine uZine

Dans la même rubrique
Mise en page : manuel de référence
26 mai 2003
16 août 2002
15 juin 2002
11 décembre 2001
7 décembre 2001
2 juin 2001
24 mai 2001
22 mai 2001
20 mai 2001
18 mai 2001
16 mai 2001
14 mai 2001
3 mai 2001
 
mercredi 2 mai 2001

Les boucles récursives

par l’équipe de SPIP

Les boucles récursives sont une fonction très puissante pour gérer la mise en forme de l’interface. Leur programmation est particulièrement simple, mais leur utilisation demande une bonne maîtrise logique de l’enchaînement des boucles.

L’appel d’une boucle récursive est très simple : il suffit d’indiquer dans le TYPE de la boucle le nom d’une autre boucle :

<BOUCLEn(bouclex)></BOUCLEn>

Il n’y a ici aucun critère : en réalité, la boucle n correspond à une copie pure et simple de la boucle x. L’ensemble de la boucle fonctionne comme si l’on avait recopié l’intégralité de la boucle x (toutes les balises et le code HTML, ainsi que les textes conditionnels avant, après et alternatif) à l’endroit où l’on insère la boucle n. (Il faut bien entendu que la boucle x précède la boucle n.)

L’utilisation la plus simple consiste à « dupliquer » une boucle sans avoir à la recopier. Ainsi, toute modification de la boucle d’origine x sera automatiquement dupliquée dans la boucle n.

Tout l’intérêt, en réalité, consiste à placer la boucle n à l’intérieur de la boucle x : on obtient ainsi un comportement récursif : la boucle x contient une boucle n, qui elle-même reproduit la boucle x qui contient la boucle n, et ainsi de suite, jusqu’à ce que la boucle x ne donne plus aucun résultat.

Cette technique permet de créer notamment l’affichage des thread des forums. Cela devient très simple : une première boucle « fabrique » l’entrée des threads (les messages qui répondent directement à un article), une seconde boucle affiche les réponses à ces messages, et une boucle récursive provoque la récursivité sur cette seconde boucle :

<BOUCLE_forum(FORUMS){id_article}>
<P>#TITRE
    <B_reponses>
    <UL>
    <BOUCLE_reponses(FORUMS){id_parent}>
    <LI>#TITRE
      <BOUCLE_recursive(boucle_reponses)>
      </BOUCLE_recursive>
    </BOUCLE_reponses>
    </UL>
    </B_reponses>
</BOUCLE_forum>

On peut ainsi, en très peu de lignes, provoquer l’affichage de l’intégralité de la structure (rubriques, sous-rubriques...) du site.

 
 
l’équipe de SPIP
Imprimer
format impression
l’équipe de SPIP
23 septembre 2001
 
SPIP
Web indépendant


> 18. Les boucles récursives
10 septembre 2001, message de chris
 

Bonjour les amis !
SPIP c’est Génial !!!!

voila ma question :
je veux faire un menu deroulant en java (categorie/sous categorie/sous sous categorie...).
voila en pseudocode ce que je dois faire pour l’arborescence suivante :

CAT1

_S-CAT1
_S-CAT2

|_S-S-CAT1
|
|_S-S-CAT2

1)créer objet CAT1
2)ajouter élément S-CAT1
3)ranger url S-CAT1
4)ajouter élement S-CAT2
5)ranger objet S-CAT2

6)créer objet S-CAT2
7)ajouter element S-S-CAT1
8)ajouter element S-S-CAT2

la difficulté reside ds le fait que si la rubrique concernée a des sous-rubriques je dois creer un nouvel objet, sinon je dois sortir l’url...or quand je parcours la boucle rubrique je ne sais pas encore ce qu’il y a dans sous rubrique.

Qui peut m’aider à écrire le script ???
Est ce que ca se fait avec la récursivité ?

merci à l’avance

p.s : je suis very new avec SPIP :)

Répondre
> > 18. Les boucles récursives, chris, 10 septembre 2001

arffffff spip n’ a pas gardé ma mise en page... je suppose que mon post est incomprehensible !!
Effacez le !

Répondre