Exemples de Z-algorithmes

 

1. Crée une liste à partir d'une macro-opération, puis la parcourt.
2. Construit un fichier de blocs de n articles avec un taux de remplissage de 100%, puis le parcourt.
3. Construit un arbre de structure à partir d'une macro-opération, puis écrit ses éléments.
4. Crée un arbre de recherche m-aire d'ordre 3 de structures à l'aide d'une macro-opération puis le parcours en inordre.
5. Crée une liste de deux vecteurs dynamiques à l'aide d'une macro-opération, puis imprime les éléments de cette liste.
6. Crée un arbre de recherche binaire à l'aide d'une macro-opération puis le parcours en largeur ( niveau par niveau ) en se servant d'une file d'attente.
7. Remplit un vecteur de caractères à partir de données lues une par une, réalise le tri, puis imprime le tableau trié.
8. Lit globalement un vecteur à 2 dimensions puis l'imprime en un seul ordre d'écriture.
9. Lit globalement une structure complexe puis l'imprime en un seul ordre d'écriture.


1. Crée une liste à partir d'une macro-opération, puis la parcourt.     
Menu Exemples             

SOIENT
    L UNE LISTE;
    P UN POINTEUR VERS UNE LISTE;
    I UN ENTIER;
DEBUT
    I := 8;
    CREER_LISTE( L, [ I, 2*I, 3*I, 4*I] ) ;
    ECRIRE('Parcours De La LISTE ');
    P := L;
    TANTQUE P <> NIL :
        ECRIRE ( VALEUR(P) );
        P := SUIVANT (P)
    FINTANTQUE;
FIN


2. Construit un fichier de blocs de n articles avec un taux de remplissage de 100%, puis le parcourt.  
Menu Exemples                                                                                                        

    SOIENT
        F UN FICHIER DE ( ENTIER , VECTEUR ( 5 ) DE CHAINES )
                                   BUFFER B1 ENTETE ( ENTIER , ENTIER ) ;
        { fichier de blocs contenant le nombre d'articles et un tableau d'articles}
        { entête : nombre d'articles, nombre de blocs}
        Creer , Imprimer DES ACTIONS ;
    DEBUT
        APPEL Creer ;
        APPEL Imprimer ;
    FIN

    /***** Chargement de n articles avec un chargement ... 100% ****/
    ACTION Creer ;
    SOIENT
        I , K , N , Nbblocs DES ENTIERS ;
    DEBUT
        OUVRIR ( F , 'f.pas' , 'N' ) ;
        I := 0 ;
        Nbblocs := 0 ;
        N := 500 ;
        AFF_ENTETE ( F , 1 , N ) ;
        TQ I < N :
            K := 0 ;
            TQ ( K < 5 ) ET ( I < N )
                K := K + 1 ;
                I := I + 1 ;
                AFF_ELEMENT ( STRUCT ( B1 , 2 ) [ K ] , ALEACHAINE )
            FTQ ;
            AFF_STRUCT ( B1 , 1 , K ) ;
            Nbblocs := Nbblocs + 1 ;
            ECRIRESEQ ( F , B1 ) ;
        FTQ ;
        AFF_ENTETE ( F , 2 , Nbblocs ) ;
        FERMER ( F ) ;
    FIN

    /***** Impression des articles du fichier ****/
    ACTION Imprimer ;
    SOIENT
        I , K DES ENTIERS ;
    DEBUT
        I := 0 ;
        OUVRIR ( F , 'f.pas' , 'A' ) ;
        TQ NON FINFICH ( F )
            I := I + 1 ;
            ECRIRE ( 'B L O C n� ' , I ) ;
            LIRESEQ ( F , B1 ) ;
            POUR K := 1 , STRUCT ( B1 , 1 )
                ECRIRE ( ELEMENT ( STRUCT ( B1 , 2 ) [ K ] ) )
            FPOUR
        FTQ;
    FIN


3. Construit un arbre de structure à partir d'une macro-opération, puis écrit ses éléments.
Menu Exemples

    SOIT
        A UN ARB DE ( CHAINE , ENTIER ) ;
        V UN ( CHAINE , ENTIER ) ;
    DEBUT
        INIT_STRUCT ( V , [ 'xyz' , 1001 ] ) ;
        CREER_ARB ( A , [ [ 'x' , 23 ] , V , [ 'y' , 123 ] , [ 'z' , 23 ] ] ) ;
        ECRIRE ( INFO ( A ) ) ;
        ECRIRE ( INFO ( FD ( A ) ) ) ;
        ECRIRE ( INFO ( FD ( FD ( A ) ) ) ) ;
    FIN


4. Crée un arbre de recherche m-aire d'ordre 3 de structures à l'aide d'une macro-opération puis le parcours en inordre.  
Menu Exemples                                                                               

    SOIT
        M UN ARM ( 3 ) DE ( CHAINE , ENTIER ) ;
        Inordre UNE ACTION ;

    DEBUT
        CREER_ARM ( M , [   [ 'x' , 3 ] , [ 'a' , 3 ] , [ 'y' , 3 ] , [ 'z' , 3 ] , [ 'h' , 3 ] , [ 'e' , 3 ] , [ 'd' , 3 ]  ] ) ;
        APPEL Inordre ( M ) ;
    FIN
    ACTION Inordre ( Q )
    SOIT
        Q UN ARM ( 3 ) DE ( CHAINE , ENTIER ) ;
        I UN ENTIER ;
    DEBUT
        SI Q <> NIL
            POUR I := 1 , DEGRE ( Q )
                APPEL Inordre ( FILS ( Q , I ) ) ;
                ECRIRE ( INFOR ( Q , I ) )
            FINPOUR ;
            APPEL Inordre ( FILS ( Q , DEGRE ( Q ) + 1 ) )
        FSI
    FIN


5. Crée une liste de deux vecteurs dynamiques à l'aide d'une macro-opération, puis imprime les éléments de cette liste
Menu Exemples                                          

    SOIT
        Lv UNE LISTE DE VECTEURS ( 5 ) DYNAMIQUES DE ENTIERS ;
    SOIENT
        V1 , V2 , V DES VECTEURS ( 5 ) DYNAMIQUES DE ENTIERS ;
        I UN ENTIER ;
    DEBUT
        ALLOC_TAB ( V ) ;
        V1 := V ;
        INIT_VECT ( V1 , [ 2 , 4 , 8 , 9 , 56 ] ) ;
        ALLOC_TAB ( V ) ;
        V2 := V ;
        INIT_VECT ( V2 , [ 12 , 14 , 18 , 19 , 156 ] ) ;
        CREER_LISTE ( Lv , [ V1 , V2 ] ) ;
        TQ Lv <> NIL :
            V := VALEUR ( Lv ) ;
            POUR I := 1 , 4 :
                ECRIRE ( ELEMENT ( V [ I ] ) )
            FPOUR ;
            Lv := SUIVANT ( Lv ) ;
        FTQ
    FIN

6. Crée un arbre de recherche binaire à l'aide d'une macro-opération puis le parcours en largeur ( niveau par niveau ) en se servant d'une file d'attente  
Menu Exemples                       

    SOIT
        F UNE FILE DE ARB ;
        A UN ARB ;
        M UN POINTEUR VERS ARB ;
    DEBUT
        CREER_ARB( A , [ 23 , 45 , 65 , 55 , 33 , 3 , 56 , 76 , 231 , 5 , 45 , 56 ]);
        CREERFILE ( F ) ;
        M := A ;
        ENFILER ( F , A ) ;
        TQ NON FILEVIDE ( F )
            DEFILER ( F , M ) ;
            ECRIRE ( INFO ( M ) ) ;
            SI FG ( M ) # NIL
                ENFILER ( F , FG ( M ) )
            FSI ;
            SI FD ( M ) # NIL :
                ENFILER ( F , FD ( M ) )
            FSI
        FTQ
    FIN


7. Remplit un vecteur de caractères à partir de données lues une par une, réalise le tri, puis imprime le tableau trié.
Menu Exemples                                                                     

    SOIENT
        V UN VECTEUR ( 10 ) DE CAR ;
        I , J DES ENTIERS ;
        Val , Temp DES CAR ;
    DEBUT
        POUR I := 1 , 10
            LIRE ( Val ) ;
            AFF_ELEMENT ( V [ I ] , Val )
        FINPOUR ;
        POUR I := 1 , 9
            POUR J := 10 , I + 1 , - 1
                SI ELEMENT ( V [ J - 1 ] ) > ELEMENT ( V [ J ] )
                    Temp := ELEMENT ( V [ J - 1 ] ) ;
                    AFF_ELEMENT ( V [ J - 1 ] , ELEMENT ( V [ J ] ) ) ;
                    AFF_ELEMENT ( V [ J ] , Temp )
                FSI
            FINPOUR
        FINPOUR ;
        ECRIRE ( 'Tri Termin‚e' ) ;
        POUR I := 1 , 10
            ECRIRE ( ELEMENT ( V [ I ] ) )
        FINPOUR ;
    FIN

8. Lit globalement un vecteur à 2 dimensions puis l'imprime en un seul ordre d'écriture.
Menu Exemples

    SOIT
        V UN VECTEUR ( 3 , 2 ) DE CHAINES ;
    DEBUT
        LIRE ( V ) ;
        ECRIRE ( V ) ;
    FIN

9. Lit globalement une structure complexe puis l'imprime en un seul ordre d'écriture.Menu Exemples

    SOIT
        S2 UN (
                    VECTEUR ( 5 ) DE CHAINES ,
                    VECTEUR ( 5 ) DE ENTIERS ,
                    CHAINE
                    ) ;
        DEBUT
            LIRE ( S2 ) ;
            ECRIRE ( S2 ) ;
        FIN