Title: Le langage Z
1Le langage Z
- Pr ZEGOUR DJAMEL EDDINE
- Institut National d'Informatique (INI)
- httpmembres.lycos.frzegour
- email d_zegour_at_ini.dz
2Le langage Z Généralités
- Un Z-algorithme est un ensemble de modules
parallèles dont le premier est principal et les
autres sont soient des actions composées (ACTION)
soient des fonctions de type quelconque
(FONCTION). - Les objets globaux sont déclarés dans le module
principal. - La communication entre les modules se fait via
les paramètres et les variables globales. - Les paramètres peuvent être de nimporte quel
type. - Le langage permet laffectation globale de tout
type. -
- Quatre types standards sont autorisés ENTIER,
BOOLEAN, CAR, CHAINE .
3Le langage Z Généralités
- Le langage est l'ensemble des algorithmes
abstraits, écrits à base de modèles ( machines
abstraites ). -
- On définit ainsi des machines de Turing
Machine-caractères et Machine-nombres permettant
linitiation à lalgorithmique. -
- On définit des machines abstraites sur les
structures, vecteurs et les listes permettant
linitiation aux structures élémentaires de
données. -
- On définit également une machine abstraite sur
les fichiers permettant linitiation aux
structures simples de fichiers. - Le langage peut être étendu avec d'autres
machines abstraites. -
4Le langage Z Généralités
-
- Le langage offre deux fonctions très utiles
permettant de générer aléatoirement des chaînes
de caractères (ALEACHAINE) et des entiers
(ALEANOMBRE). - Le langage permet la lecture et lécriture 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.
5Le 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.
6Le langage Z Définition dune action
- ACTION Nom (P1, P2, ..., Pn)
- SOIT
- Objets locaux et paramètres
- DEBUT
- Instructions
- FIN
- Les paramètres sont appelés par référence. Ils
ne sont pas protégés par laction.
7Le langage Z Définition dune fonction
- FONCTION Nom (P1, P2, ...,Pn) Type
- Objets locaux et paramètres
- DEBUT
- Instructions
- FIN
-
- Type peut être quelconque.
- Une fonction est utilisée dans une expression.
8Le 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 ltgt '.' TQ (C' ') ET (C ltgt '.')
LIRECAR(M, C) FTQ Mot
'' TQ (C ltgt ' ') ET (C ltgt '.')
Mot Mot C LIRECAR(M, C)
FTQ SI Mot ltgt '' ECRIRE(Mot) FSI
FINTANTQUE FIN
9Le langage Z Objets
- Les objets peuvent être des entiers (ENTIER), des
booléens (BOOLEEN), des caractères (CAR) ou des
chaînes de caractères ( CHAINE). - Exemples
-
- Les objets peuvent être des machines abstraites
Structures, Vecteurs, Listes linéaires chaînées,
Machine caractères, Machine Nombre et Fichiers. - Exemples
-
-
- Il sagit des listes et des vecteurs dentiers.
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)
10Le langage Z Objets
- Autres Exemples
-
- Une structure peut être simple, cad composée
uniquement de scalaires - Une structure peut être complexe, cad composée de
scalaires etou 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
11Le langage Z Expressions
- Comme dans les langages de programmation.
- Exemples
-
(BC) / F , NON Trouv, (X 5) ET NON
Trouv, F(x) ltgt 5 A OU B (A lt B) ET(A
gt5) Etc.
12Le langage Z Instructions
- V désigne une variable, E une expression et Idf
un nom de module. - désigne une partie facultative, un
ensemble. -
- Affectation V E
- Lecture LIRE(V1, V2, .....)
- Ecriture ECRIRE(E1, E2, .....)
- Conditionnelle SI E
- Instructions
- SINON
- Instructions
- FSI
13Le langage Z Instructions
- Appel APPEL Idf ( E1, E2, ...)
- Répétitive (Forme 1 ) TQ E
- Instructions
- FTQ
-
- Répétitive (Forme 2 ) POUR V E1, E2,E3
- Instructions
- FPOUR
- E3 désigne le pas.
14Le langage Z Machines abstraites
- Machine-caractères
- LIRECAR, NBRCAR
- Machine-nombres
- LIRENOMBRE, NBRNOMBRE
- Listes linéaires chaînées
- 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
15Le langage Z Opérations de haut niveau
- Machine-caractères
- CREER_MCAR,
- Machine-caractères
- CREER_MNOMBRE,
- Listes
- CREER_LISTE,
- Structures
- INIT_STRUCT
- Vecteurs
- INIT_VECTEUR(ou INIT_TABLEAU)
- Exemple
-
- crée la liste linéaire chaînée L avec les
valeurs entre crochets dans lordre indiqué.
CREER-LISTE (L, 12, 23, 67, I, IJ )
16Le langage Z Fonctions standards
- Nombres
- ALEACHAINE(Exp), ALEANOMBRE(Exp)
- Chaînes de caractères
- 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
17Grammaire de Z Notation EBNF
- Conventions
- --- --- Choix
- ---- Partie facultative
- Crochet ouvrant
- Crochet fermant
- --- Répétition ( ? 0 )
-
18Grammaire de Z Déclarations
- Types dans Entier, Booleen, Car, Chaine
- Sep dans , Un, Une, Des
- Cste désigne une constante numérique entière
- Idf désigne un identificateur
- Opr dans lt, lt, gt, gt, , ltgt
- Opa dans , -, Ou
- Opm dans , /, Et
- Sign dans , -
- Cstelog dans Vrai, Faux
- Chaîne chaîne de caractères
- Tableau est synonyme de Vecteur
- Init_tableau est synonyme de Init_vecteur
19Grammaire de Z Déclarations
- ltAlgo Zgt ? SoitSoient ltPsgt Debut ltLisgt
Fin - ltActgt ltFonctgt
-
- ltActgt ? Action Idf ( ltLigt )
- SoitSoient ltPsgt Debut ltLisgt Fin
-
- ltFonctgt ? Fonction Idf ( ltLigt ) ltTypgt
- SoitSoient ltPsgt Debut ltLisgt Fin
-
- ltPsgt ? ltSgt SoitSoient ltSgt
-
- ltSgt ? ltLigtSep ltTypgtActionFonction(ltT
ypgt) - ltLigt ? Idf , Idf
20Grammaire de Z Déclarations
- ltTypgt ? Types ltStructsimplegt
ltStructcomplexegt - Machine_car
- Machine_nombre
- Pointeur vers Sep Liste De
- Types ltStructsimplegt
- Tableau (ltLcgt) DeltStructsimplegt Types
- Fichier De Types Vecteur(Cste) De Types
- ltStructsimplegt ltStructcomplexegt
- Buffer ltLigt Entete (Types , types )
-
- ltStructsimplegt ? Structure (Types , Types )
- ltStructcomplexegt? Structure ( Types
Vecteur(Cste) De Types - , Types Vecteur(Cste) De Types )
- ltLcgt ? Cste , Cste
-
21Grammaire de Z Instructions
- lt Lis gt ? lt Inst gt lt Inst gt
-
- ltInstgt ?
- Idf ltExpgt
-
- Tantque ltExpgt ltLisgt Fintantque
-
- Si ltExpgt ltLisgt Sinon ltLisgt
Fsi -
- Pour Idf ltExpgt,ltExpgt , ltExpgt ltLisgt
Finpour -
- Appel Idf (Exp ,ltExpgt)
- Lire ( Idf , Idf )
- Ecrire (ltExpgt ,ltExpgt )
22Grammaire de Z Instructions
- ltInstgt ?
- Liberer Allouer Fermer ( ltExpgt )
- Ouvrir ((Idf, Chaine, Chaine)
- LirecarLirenombreLireseqEcrireseqRajouter
- (Idf, Idf)
- Aff_adrAff_val ( ltExpgt , ltExpgt )
- Creer_liste Init_vecteurCreer_mnombre
- Init_struct ( Idf , ltExpgtltExpgt ,
ltExpgt - , ltExpgtltExpgt , ltExpgt )
- Creer_mcar(Idf, Chaine )
- Aff_element ( ltExpgt ltExpgt ,
ltExpgt ,ltExpgt ) - Aff_structAff_entete(Idf, Cste, ltExpgt)
- Liredir Ecriredir (Idf, Cste, Idf)
23Grammaire de Z Expressions
- ltExpgt ? ltExpsgt Opr ltExpsgt
-
- ltExpsgt ? Sign ltTermegt Opa ltTermegt
- ltTermegt ? ltFacteurgtOpm ltFacteurgt
-
- ltFacteurgt ? Idf ( ltExpgt , ltExpgt )
Cste - ltFonctgt NIL ( ltExpgt)
- Chaine Non ltFacteurgt Cstelogic
-
- ltFonctgt ? ValeurSuivant ( ltFonctgt )
- Element ( ltFonctgt
ltExpgt , ltExpgt ) - Struct EnteteCaract ( Idf, Cste)
- Aleachaine Aleanombre Longchaine
- ( ltExpgt )
- NbrcarNbrNombreFinfichAlloc_bloc (Idf)
-
24Grammaire de Z Compléments
- Une chaîne de caractères est délimitée par le
symbole . Si ce dernier figure dans la chaîne,
il est doublé. - Les commentaires sont entre les symboles / et
/. Elles sont insérées là où un espace peut
figurer.
25Grammaire de Z Expérimentation
- Bien comprendre la grammaire en expérimentant le
langage Z