| N° | Fonction | Catégorie | Version |
|---|---|---|---|
| BIL 08 | BiL_DelPrim | Gestion des Listes | 1.0 - Janvier 2007 |
| But | Retourne une liste après y avoir enlevé les n premiers éléments. |
| Prototype | (BiL_DelPrim Nbr Liste1) |
| Argument | Nbr - Nombre d'éléments à enlever de la liste - Entier - Liste1 - La liste à réduire - Liste - |
| Retours | La liste réduite ou nil |
| Var. globales | Néant |
| Description | Retourne une liste après y avoir enlevé les n premiers éléments de la liste. |
| Notes | Si le nombre à enlever est égal à zéro ou nul, la liste entière est retournée. Voir également les fonctions BiL_DelItem et BiL_DelOne. |
| Exemples |
Command: (setq list1 '(1 2 3 4 5 6 7 8 9))
(1 2 3 4 5 6 7 8 9)
(BiL_DelPrim 2 list1) retourne (3 4 5 6 7 8 9)
(BiL_DelPrim 0 list1) retourne (1 2 3 4 5 6 7 8 9)
(BiL_DelPrim 8 list1) retourne (9)
(BiL_DelPrim 9 list1) retourne nil
(BiL_DelPrim z list1) retourne (1 2 3 4 5 6 7 8 9)
(Bil_DelPrim 2 '("aa" "bb" "cc")) retourne ("cc")
(Bil_DelPrim 3 '("aa" "bb" "cc")) retourne nil
|
1- (Defun BiL_DelPrim (*Nbr *List1 / Cpt1)
2- (if (and *List1
3- Listp *List1)
4- (= (type *Nbr) 'INT)
5- )
6- (progn
7- (setq Cpt1 0 )
8- (while (< Cpt1 *Nbr)
9- (setq *List1 (cdr *List1)
10- Cpt1 (1+ Cpt1)
11- ) ; fin de setq
12- ) ; fin de while
13- ) ; fin de progn
14- ) ; fin de if
15- *List1
16- )
Ligne 2 : si *List1 existe
Ligne 3 : et que c' est bien une liste
Ligne 4 : et si *Nbr est un nombre entier,
Ligne 7 : initialisation du compteur Cpt1
Ligne 8 : Boucle tant que le compteur Cpt1 est plus petit que *Nbr,
Ligne 9 : enlève le 1er élément de *List1
Ligne 10: et incrémente le compteur Cpt1 de 1
Ligne 12 : fin de boucle while - Remonte si Cpt1 inférieur à *Nbr
Ligne 15 : retourne *List1 qui n’aura pas changé si les conditions lignes 2 à 4
ne sont pas remplies.