BiL_DelPos

Fonction Catégorie Version
BIL 17 BiL_DelPos Gestion des Listes 1.0 - Janvier 2007

Description

But Supprime un élément d'une liste, d’après son numéro d'ordre
Prototype (BiL_DelPos Liste NumItem)
Argument Liste - La liste à traiter - Liste -
NumItem - Numéro de l’ élément à supprimer - Entier -
Retours La liste modifiée
Var. globales Néant
Description Retourne une liste après y avoir enlevé un élément donné d’après sa position dans la liste.
Notes Le comptage se fait normalement : 1er élément = numéro 1, etc...
Exemples

Commande: (BiL_DelPos '(1 2 3 4 5 6 7 8 9) 5)
	retourne	(1 2 3 4 6 7 8 9)
	
(BiL_DelPos '("a" "b" "c" "d" "e" "f" "g" "h") 3)
	retourne	("a" "b" "d" "e" "f" "g" "h")
	
Commande: (BiL_DelPos (list "aa" "bb" "cc") 0)
	retourne 	("aa" "bb" "cc")
	L’élément n° 0 n’existe pas.

Commande: (BiL_DelPos (list "aa" "bb" "cc") 5)
	retourne   	("aa" "bb" "cc") 
	L’élément n° 5  n’existe pas.

La fonction


  1-    (defun BiL_DelPos(*List1 *PosElm / LstRet Cpt1)

  2-       (setq Cpt1 0)
  3-       (repeat (length *List1)
  4-         (if (/= Cpt1 (1- *PosElm))
  5-           (progn
  6-	        (if (= Cpt1 0)
  7-	          (setq LstRet (list (nth Cpt1 *List1)))
  8-	          (setq LstRet (append LstRet (list (nth Cpt1 *List1))))
  9-	        )
 10-           )
 11-         )
 12-         (setq Cpt1 (1+ Cpt1))
 13-       )
 14-       LstRet
 15-   )

Ligne 2 : Initialise le compteur d’éléments – Le 1er élément est le numéro 0
Ligne 3 : Répète autant de fois qu’il y a d’éléments dans la liste 
Ligne 4 :   Si le compteur numéro d’élément est différent de l’argument Position_d’élément,	
Ligne 6 :      Si c’est le premier élément de la liste,
Ligne 7 :        La liste de retour LstRet est égale au 1er élément de *List1
Ligne 8 :        Sinon ajoute l’élément numéro Cpt1 de *List1 à la liste de retour LstRet 
Ligne 9 :	   Fin  If  ligne 6
Ligne 10 :    Fin Progn  ligne 5
Ligne 11:    Fin  If  ligne 4
Ligne 13 : Fin de la boucle Repeat	
Ligne 14 : Retourne la liste LstRet.(ou nil si l’argument *List1 n’est pas une liste).

Repeat : Ici, évalue les lignes 12 à 18 autant de fois qu'il y a de caractères dans la chaîne à modifier
Length : Renvoie un nombre entier indiquant le nombre d'éléments contenus dans une liste.
List : Prend un nombre quelconque d'expressions et les regroupe dans une liste.
Append : Prend un nombre indéfini de listes et les traite ensemble comme une seule liste.
Nth : Renvoie le nième élément d'une liste. - Le 1er élément est le numéro zéro..