Imprimer RebZone
Win32 Linux Mac
Rebol
(c) 2025 RebolZone - http://rebolzone.free.fr
[ Général ]
Accueil
FTP
[ Rebol ]
Présentation
Installation
Rebol/View
Rebsites
[ Coding ]
Coding Tutorial Start
Outils MySql VID FAQ
Syntaxe Download
[ Divers ]
Documentation
Liens Recherche
Ecrivez-nous
Visiteurs
Visteurs
Lundi 26 mai 2025

Tutorial

Valid XHTML 1.0!
Les séries
Déplacement dans une série
Accéder à un élément d'une série
Trier une série

Insertion d'éléments
Changement d'éléments
Suppression d'éléments
Recherche d'éléments

Inverser une série
Intersection de 2 séries
Union de 2 séries

Précédent ...
Suivant ...

Les séries


Les séries sont un concept très important en Rebol. Une série regroupe un ensemble de valeurs ordonnées. Ces valeurs peuvent être de même type ou de type différent.
Exemple :
    villes: ["Paris" "Lyon" "Marseille" "Nice" "Londres" "Montréal" "Barcelone"]
	

Déplacement dans une série

Paris
Lyon
Marseille
Nice
Londres
Montréal
Barcelone
 
HEAD
 
 
 
 
 
 
TAIL

La série comporte un curseur que l'on peut faire avancer ou reculer (voir les curseurs SQL, fetch next ...).
Rebol met à disposition les instructions : next (avance à l'item suivant) et back (retour arrière), head permet de se repositionner sur le premier élément, tail se positionne après le dernier élement.
Les fonctions head? et tail? permet de savoir si le curseur est en début de série ou à la fin, index? renvoi le numéro d'index courant.

    villes: next villes ; on avance d'un élément
    print villes ; renvoi "Lyon" "Marseille" "Nice" "Londres" "Montréal" "Barcelone"
    print length? villes  ; renvoi 6
    print index? villes   ; renvoi 2
    print head? villes    ; renvoi false
    print tail? villes    ; renvoi false
    villes: next villes
    print villes ; renvoi "Marseille" "Nice" "Londres" "Montréal" "Barcelone" 
    villes: tail villes   ; on se positionne en fin
    print index villes    ; renvoi 8
    print length? villes  ; renvoi 0
    villes: head villes   ; on se positionne en début de série
    print villes ; renvoi "Paris" "Lyon" "Marseille" "Nice" "Londres" "Montréal" "Barcelone"      
    print length? villes  ; renvoi 7
print index? ville ; revoi 1

On peut obtenir le nombre d'élements d'une série avec l'instruction length?. Cette fonction renvoi le nombre d'éléments à partir de la position actuelle. Si le curseur est sur le premier élément, length? renvoi le nombre total d'éléments.
	
  villes: head villes  ; on se place au début de la série
  print length? villes ; renvoi 7
  villes: next villes  ; on avance le curseur d'une position
  print length? villes ; renvoi 
  

Le parcourt d'une série peut se faire avec l'instruction foreach :
    foreach ville villes [print ville]
  

On peut également utiliser l'instruction forall
    forall villes [print first villes]
    print tail? villes; renvoi true car le curseur est en fin de liste
    villes: head villes ; on se repostionne au début
  

mais aussi forskip :
    forskip villes 2 [ print first villes] ; renvoi Paris Marseille Londre Barcelone
    print tail? villes; renvoi true car le curseur est en fin de liste
    villes: head villes ; on se repostionne au début
  

Accéder à un élément d'une série

On peut accéder à un élément de la série en mentionnant son rang, le premier élément étant le rang 1.
Exemple :
    print villes/3 ; renvoi Marseille
  
On peut aussi utiliser l'instruction pick :
    print pick villes 4 ; renvoi Nice

Rebol fournit également les instructions suivantes : first, second, third, fourth, fifth et last.

Exemple :
    print fifth villes ; renvoi Londres
    print last villes ; renvoi Barcelone
  

 

Trier une série

On peut trier une série avec l'instruction sort.
    sort villes
    print villes ; renvoi Barcelone Londres Lyon Marseille Montréal Nice Paris

Sort permet également d'inverser l'ordre de tri avec le rafinnement /reverse :

    sort/reverse villes
    print villes ; renvoi Paris Nice Montréal Marseille Lyon Londres Barcelone

Remarque : sort peut également faire un tri sensible à la casse avec le raffinnement /case.




Insertion d'éléments

Reprenons notre série du début, l'insertion est réalisée avec l'instruction insert, l'insertion se faisant par rapport à l'index courant.
     villes: ["Paris" "Lyon" "Marseille" "Nice" "Londres" "Montréal" "Barcelone"]
     print index? villes ; renvoi 1, c'est à dire Paris
     insert villes "Genève" ;
     print index? villes ; renvoi 1, c'est à dire Genève, Paris est à l'index 2

Si je veux insérer une valeur avant l'élément "Marseille", il faut que je positionne mon curseur sur "Marseille" :
    villes: next next next villes ; positionnment sur Marseille
    insert villes "Bruxelles"
    villes: head villes ; on se met en début série
    print villes ; renvoi Genè ve Paris Lyon Bruxelles Marseille Nice Londres Montréal Barcelone 
  

On peut également ajouter une nouvelle valeur en fin de série par l'instruction append :
    append villes "Rome"
    print villes ; renvoi Genève Paris Lyon Bruxelles Marseille Nice Londres Montréal Barcelone Rome
  

Changement d'éléments

On peut changer un élément de la série avec les instruction poke (quelques bons souvenirs pour les pionnier du basic ...) ou change.
    villes: ["Genè ve" "Paris" "Lyon" "Marseille" "Nice" "Londres" "Montréal" "Barcelone" "Rome"]
    poke villes 3 "Dallas"  ; change la valeur 3 soit Lyon en Dallas
    change next villes "Milan"  ; change Paris en Milan

L'intruction replace permet également de changer un valeur dans la série :

    villes: ["Genè ve" "Paris" "Lyon" "Marseille" "Nice" "Londres" "Montréal" "Barcelone" "Rome"]
    replace villes "Londres" "Liverpool"	
  

Le raffinnement /all permet de remplacer toutes les occurences dans la série.

Suppression d'éléments

Comme pour l'insertion, l'instruction remove supprime l'élément courant, où est positionné le curseur.
    villes: ["Genè ve" "Paris" "Lyon" "Marseille" "Nice" "Londres" "Montréal" "Barcelone" "Rome"]
    print index? villes ; renvoi 1, soit Genève
    remove villes ; Supprime le premier élément, soit Genève dans notre cas
    print villes  ; renvoi Paris Lyon Marseille Nice Londres Montréal Barcelone Rome
  

On peut également vider une série avec clear :
      clear villes
  

Recherche d'éléments

La recherche d'un élément précis dans une série se fait par la fonction find qui renvoi none si non trouvé ou l'élément et la suite de la série.

    villes: ["Genè ve" "Paris" "Lyon" "Marseille" "Nice" "Londres" "Montréal" "Barcelone" "Rome"]
    find villes "Berlin" ; renvoi none
    find villes "Nice"   ; renvoi ["Nice" "Londres" "Montréal" "Barcelone" "Rome"]
	

Inverser une série

On peut inverser une série avec reverse :
    villes: ["Genè ve" "Paris" "Lyon" "Marseille" "Nice" "Londres" "Montréal" "Barcelone" "Rome"]
    villes: reverse villes
    villes: head villes
    print villes  ; renvoi Rome Barcelone Montréal Londres Nice Marseille Lyon Paris Genè ve
  

Intersection de 2 séries

Pour obtenir l'intersection de 2 séries, il faut utiliser intersect :
    villes: ["Genè ve" "Paris" "Lyon" "Marseille" "Nice" "Londres" "Montréal" "Barcelone" "Rome"]
    capitales: ["Paris" "Londres" "Rome" "Berlin" "Madrid"]
    print intersect villes capitales     ; renvoi Paris Londres Rome

Union de 2 séries

Pour obtenir l'intersection de 2 séries, il faut utiliser union :
    villesEur: ["Genè ve" "Paris" "Lyon" "Marseille" "Nice" "Londres" "Barcelone" "Rome"]
    villesUs: ["Boston" "Dallas" "Los Angeles"] 
    print union villesEur villesUs   ; renvoi Genè ve Paris Lyon Marseille Nice Londres Barcelone Rome Boston Dallas Los Angeles
  
Retour début de page