Le langage Z Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure dInformatique (ESI) www.zegour.uuuq.com...

download Le langage Z Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure dInformatique (ESI) www.zegour.uuuq.com email: d_zegour@esi.dz.

of 25

  • date post

    03-Apr-2015
  • Category

    Documents

  • view

    118
  • download

    0

Embed Size (px)

Transcript of Le langage Z Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure dInformatique (ESI) www.zegour.uuuq.com...

  • Page 1
  • Le langage Z Pr ZEGOUR DJAMEL EDDINE Ecole Suprieure dInformatique (ESI) www.zegour.uuuq.com email: d_zegour@esi.dz
  • Page 2
  • Le langage Z : Gnralits Un Z-algorithme est un ensemble de modules parallles dont le premier est principal et les autres sont soient des actions composes (ACTION) soient des fonctions de type quelconque (FONCTION). Les objets globaux sont dclars dans le module principal. La communication entre les modules se fait via les paramtres et les variables globales. Les paramtres peuvent tre de nimporte quel type. Le langage permet laffectation globale de tout type. Quatre types standards sont autoriss : ENTIER, BOOLEAN, CAR et CHAINE.
  • Page 3
  • Le langage Z : Gnralits Le langage est l'ensemble des algorithmes abstraits, crits base de modles ( machines abstraites ). On dfinit ainsi des machines de Turing : Machine-caractres et Machine-nombres permettant linitiation lalgorithmique. On dfinit des machines abstraites sur les structures, vecteurs et les listes permettant linitiation aux structures lmentaires de donnes. On dfinit galement une machine abstraite sur les fichiers permettant linitiation aux structures simples de fichiers. Le langage peut tre tendu avec d'autres machines abstraites.
  • Page 4
  • Le langage Z : Gnralits Le langage offre deux fonctions trs utiles permettant de gnrer alatoirement des chanes de caractres (ALEACHAINE) et des entiers (ALEANOMBRE). Le langage permet la lecture et lcriture de scalaires, vecteurs de nimporte quelle dimension et des structures simples ou complexes. Le format des instructions est libre. Pas de distinction entre majuscule et minuscule.
  • Page 5
  • Le langage Z : Structure dun algorithme SOIENT { Objets locaux et globaux } { Annonce des modules } DEBUT { Instructions } FIN Module 1 Module 2.... Module n Chaque module peut tre soit une fonction soit une action.
  • Page 6
  • Le langage Z : Dfinition dune action ACTION Nom (P1, P2,..., Pn) SOIT { Objets locaux et paramtres } DEBUT { Instructions } FIN Les paramtres sont appels par rfrence. Ils ne sont pas protgs par laction.
  • Page 7
  • Le langage Z : Dfinition dune fonction FONCTION Nom (P1, P2,...,Pn) : Type { Objets locaux et paramtres } DEBUT { Instructions } FIN Type peut tre quelconque. Une fonction est utilise dans une expression.
  • Page 8
  • Le langage Z : Exemple dun algorithme SOIENT Mot : CHAINE; C : CAR; M : MACHINE_CAR; DEBUT CREER_MCAR(M, [' Jhh Jsthd Lkql ifd ']); LIRECAR(M, C); TANTQUE C '.' TQ (C=' ') ET (C '.') LIRECAR(M, C) FTQ ; Mot := ''; TQ (C ' ') ET (C '.') Mot := Mot + C ; LIRECAR(M, C) FTQ; SI Mot '' ECRIRE(Mot) FSI FINTANTQUE FIN
  • Page 9
  • Le langage Z : Objets Les objets peuvent tre des entiers (ENTIER), des boolens (BOOLEEN), des caractres (CAR) ou des chanes de caractres ( CHAINE). Exemples : Les objets peuvent tre des machines abstraites : Structures, Vecteurs, Listes linaires chanes, Machine caractres, Machine Nombre et Fichiers. Exemples Soit A, B, C DES BOOLEENS ; I, J : ENTIER ; Ch UNE CHAINE ; C UN CAR ; Soient L1, L2 DES LISTES ; V1 UN VECTEUR(10, 60) ;
  • Page 10
  • Le langage Z : Objets Autres Exemples : Une structure peut tre simple, cad compose uniquement de scalaires Une structure peut tre complexe, cad compose de scalaires et|ou de vecteurs une dimension de scalaires SOIENT V1 UN VECTEUR(10, 60) de (CAR, ENTIER); S UNE STRUCTURE (CHAINE, ENTIER); F UN FICHIER DE (CHAINE, VECTEUR(5) DE ENTIERS) BUFFER V1, V2
  • Page 11
  • Le langage Z : Expressions Comme dans les langages de programmation. Exemples : (B+C) / F, NON Trouv, (X # 5) ET NON Trouv, F(x) 5 A OU B (A 5) Etc.
  • Page 12
  • Le langage Z : Instructions Affectation : V := E Lecture:LIRE(V1, V2,.....) Ecriture:ECRIRE(E1, E2,.....) Conditionnelle:SI E [ : ] { Instructions } [ SINON { Instructions } ] FSI Conventions: V dsigne une variable, E une expression et Idf un nom de module. [ ] dsigne une partie facultative, { } un ensemble.
  • Page 13
  • Le langage Z : Instructions Appel : APPEL Idf [ ( E1, E2,...) ] Rptitive (Forme 1 ):TQ E [ : ] { Instructions } FTQ Rptitive (Forme 2 ):POUR V := E1, E2,E3 { Instructions } FPOUR E3 dsigne le pas. Conventions: V dsigne une variable, E une expression et Idf un nom de module. [ ] dsigne une partie facultative, { } un ensemble.
  • Page 14
  • Le langage Z : Machines abstraites Machine-caractres : LIRECAR, NBRCAR Machine-nombres : LIRENOMBRE, NBRNOMBRE Listes linaires chanes : ALLOUER, LIBERER, VALEUR, SUIVANT, AFF_ADR, AFF_VAL Vecteurs : ELEMENT, AFF_ELEMENT Structures : STRUCT, AFF_STRUCT Fichiers : OUVRIR, FERMER, LIRESEQ, ECRIRESEQ, LIREDIR, ECRIREDIR, RAJOUTER, FINFICH, ENTETE, AFF_ENTETE, ALLOC_BLOC
  • Page 15
  • Le langage Z : Oprations de haut niveau Machine-caractres : CREER_MCAR Machine-caractres : CREER_MNOMBRE Listes : CREER_LISTE Structures : INIT_STRUCT Vecteurs INIT_VECTEUR(ou INIT_TABLEAU) Exemple CREER-LISTE (L, [12, 23, 67, I, I+J] )
  • Page 16
  • Le langage Z : Fonctions standards Nombres ALEACHAINE(Exp), ALEANOMBRE(Exp) Chanes de caractres LONGCHAINE(Chaine), CARACT(Chaine, Exp) Exemples Aleachaine(5) ; {donne par exemple bxrfd} Aleanombre(1000); { donne par exemple 675} Longchaine(bcdgfd) ; {donne 6} Caract(gfrd, 3) {donne r}
  • Page 17
  • Grammaire de Z: Notation EBNF Conventions ~ ---| --- ~ : Choix [ ----] : Partie facultative [[ : Crochet ouvrant ]] : Crochet fermant {---}* : Rptition ( 0 )
  • Page 18
  • Grammaire de Z: Dclarations Types dans {Entier, Booleen, Car, Chaine} Sep dans {:, Un, Une, Des} Cste dsigne une constante numrique entire Idf dsigne un identificateur Opr dans {, >=, =, } Opa dans { +, -, Ou } Opm dans { *, /, Et } Sign dans {+, -} Cstelog dans {Vrai, Faux} Chane chane de caractres Tableau est synonyme de Vecteur Init_tableau est synonyme de Init_vecteur
  • Page 19
  • Grammaire de Z: Dclarations [ ~ Soit|Soient ~ ] Debut Fin [;] { ~ | ~ [;] }* Action Idf [ ( ) ] [;] [ ~ Soit|Soient ~ ] Debut Fin Fonction Idf ( ) : [ ~Soit|Soient ~ ] Debut Fin ;{ [ ~Soit|Soient ~ ] ;}* [Sep ~ | ~Action|Fonction( )~ ~] Idf {, Idf}*
  • Page 20
  • Grammaire de Z: Dclarations Types | | | Machine_car | Machine_nombre | [Pointeur vers [Sep] ] Liste [ De ~Types | ~ | Tableau ( ) [De~ | Types~ ] | Fichier De ~ Types | Vecteur(Cste) De ~Types | | ~ ~ Buffer [Entete] (Types {, types }*) [Structure ](Types {, Types }*) [Structure ]( ~ Types | Vecteur(Cste) De Types ~ {, ~ Types | Vecteur(Cste) De Types ~ }*) Cste {, Cste}*
  • Page 21
  • Grammaire de Z: Instructions { ; }* Idf := | Tantque [ : ] Fintantque | Si [:] [Sinon ] Fsi | Pour Idf:=, [, ][:] Finpour | Appel Idf [(Exp {, }*)] | Lire ( Idf {, Idf }* ) | Ecrire ( {, }* ) |
  • Page 22
  • Grammaire de Z: Instructions ~Liberer | Allouer | Fermer~ ( ) | Ouvrir ((Idf, Chaine, Chaine) | ~Lirecar|Lirenombre|Lireseq|Ecrireseq|Rajouter~ (Idf, Idf) | ~ Aff_adr|Aff_val~ (, ) | ~ Creer_liste |Init_vecteur|Creer_mnombre| Init_struct ~ ( Idf, [[ ~ |[[ {, }*]] ~ {, ~ |[[ {, }*]]~}* ]] ) | Creer_mcar(Idf, [[ Chaine ]]) | Aff_element ( [[ {, }* ]], ) | ~Aff_struct|Aff_entete~(Idf, Cste, ) | ~ Liredir | Ecriredir ~ (Idf, Cste, Idf)
  • Page 23
  • Grammaire de Z: Expressions [ Opr ] [Sign] { Opa }* | {Opm }* Idf [ ( {, } * ) ] | Cste | | NIL | ( ) | Chaine | Non | Cstelogic ~Valeur|Suivant~ ( ) | Element ( [[ {, }* ]] ) ~Struct |Entete|Caract~ ( Idf, Cste) | ~ Aleachaine | Aleanombre | Longchaine~ ( ) | ~Nbrcar|NbrNombre|Finfich|Alloc_bloc~ (Idf)
  • Page 24
  • Grammaire de Z: Complments Une chane de caractres est dlimite par le symbole. Si ce dernier figure dans la chane, il est doubl. Les commentaires sont entre les symboles /* et */. Elles sont insres l o un espace peut figurer.
  • Page 25
  • Grammaire de Z: Exprimentation Bien comprendre la grammaire en exprimentant le langage Z