Liste

Ce programme présente l'usage des listes de scalaires et d'objets.

Le fichier source est ${UPS_HOME}/upsvtm/demo/${UPS_LANGUAGE}/liste.upl.

Mode compilé

Commande de compilation

upscmp Source=liste.upl

Commande d'exécution

liste

Mode interprété

upssng Source=liste.upl

Fichier source

Source Composant "Exemple d'emploi du type Liste" Version 4.0.0;

Procedure EcrireListe(M : Caractere, L : ListeDe Caractere)
/*********************************************************/
Variable
/******/ Debut
Ecran.Ecrire(M);
Pour C=L.ParcoursAuDebut() JusquA L.DernierElement() Pas L.Suivant() Faire Fin Pour
Ecran.Ecrire("\n");
Fin Procedure

Procedure EcrireListeInverse(M : Caractere, L : ListeDe Caractere)
/****************************************************************/
Variable
/******/ Debut
Ecran.Ecrire(M);
I=L.AllouerIterateur();
Pour C=L.ParcoursALaFin(1) JusquA L.PremierElement() Faire Fin Pour
L.LibererIterateur(I);
Ecran.Ecrire("\n");
Fin Procedure

Principal Optimiser(NePasFactoriserChaine)
/***************************************/
Variable
/******/
Debut
L=ListeDe("A");
L=L+"B";
L+="C";
L+="D";
L+="E";
L+="F";
L+="G";
L+="H";
L+="I";
EcrireListe("Suivant()", L);
EcrireListeInverse("Precedent()", L);
EcrireListe("-()", -L);
EcrireListe("Gauche(3)", L.Cloner().Gauche(3));
EcrireListe("Droite(3)", L.Cloner().Droite(3));
EcrireListe("Milieu(2,3)", L.Cloner().Milieu(2, 3));
C="a";
L2=ListeDe(C);
L2+="b";
L2+="c";
L2+=C;
L2+="b";
L2+="c";
EcrireListe("Inserer(2)", L.Cloner().Inserer(L2, 2));
Ecran.Ecrire("Compter(0)");
Ecran.Ecrire(L2.Compter(C));
Ecran.Ecrire("\n");
Ecran.Ecrire("Compter(1)");
Ecran.Ecrire(L2.Compter(C, 2));
Ecran.Ecrire("\n");
EcrireListe("Remplacer(0)", L2.RemplacerTous(C, "x"));
EcrireListe("Remplacer(1)", L2.RemplacerTous(C, "x", 1));
Ecran.Ecrire("Rechercher(0)");
Ecran.Ecrire(L2.Rechercher(C));
Ecran.Ecrire("\n");
Ecran.Ecrire("Rechercher(1)");
Ecran.Ecrire(L2.Rechercher(C,1));
Ecran.Ecrire("\n");
EcrireListe("Supprimer(0)", L2.SupprimerTous(C));
EcrireListe("Supprimer(1)", L2.SupprimerTous(C, 1));
Ecran.Ecrire("L[0]");
Ecran.Ecrire(L[0]);
Ecran.Ecrire("L[2]");
Ecran.Ecrire(L[2]);
Ecran.Ecrire("PremierElement()");
Ecran.Ecrire(L.PremierElement());
Ecran.Ecrire("DernierElement()");
Ecran.Ecrire(L.DernierElement());
Ecran.Ecrire("NumeroElement()");
Ecran.Ecrire(L.NumeroElement());
EcrireListe("AjouterAuDebut()", L.AjouterAuDebut("X"));
EcrireListe("AjouterALaFin()", L.AjouterALaFin("Y"));
A="A";
B="B";
C="C";
D="D";
E="E";
F="F";
G="G";
H="H";
L=ListeDe(A);
L+=B;
L+=C;
L+=D;
L+=E;
L+=F;
L2=ListeDe(A);
L2+=B;
L2+=D;
L2+=F;
L2+=G;
L2+=H;
EcrireListe("Union()", L.Union(L2));
EcrireListe("Intersection()", L.Intersection(L2));
EcrireListe("Soustraction()", L.Soustraction(L2));
EcrireListe("Exclusion()", L.Exclusion(L2));
Fin Principal

Résultat de l'exécution

Suivant() A B C D E F G H I Precedent() I H G F E D C B A -() I H G F E D C B A Gauche(3) A B C Droite(3) G H I Milieu(2,3) C D E Inserer(2) A B a b c a b c C D E F G H I Compter(0) 2 Compter(1) 1 Remplacer(0) x b c x b c Remplacer(1) a b c x b c Rechercher(0) 0 Rechercher(1) 3 Supprimer(0) b c b c Supprimer(1) a b c b c L[0] A L[2] C PremierElement() A DernierElement() I NumeroElement() 8 AjouterAuDebut() X A B C D E F G H I AjouterALaFin() X A B C D E F G H I Y Union() A B C D E F A B D F G H Intersection() A B D F Soustraction() C E Exclusion() C E G H