Title: LE LANGAGE PASCAL
1LE LANGAGE PASCAL
2OBJECTIFS
3PASCAL
- INTRODUCTION
- HISTORIQUE
- DOMAINE D'APPLICATION
- AVANTAGES / DESAVANTAGES
- DEFINITION DU LANGAGE
- LES MOTS DU LANGAGE
- LES TYPES ET LES DONNEES
- LES INSTRUCTIONS
- MODULARITE
- TURBO PASCAL
- CONSEILS
- CONCLUSION
4HISTORIQUE
- 1968 CREATION PAR WIRTH
- 1970 PREMIER COMPILATEUR VERSION ZURICH
- BUT ENSEIGNEMENT
- 1975 DEBUT DE NORMALISATION
- UTILISATION CROISSANTE DANS L'INDUSTRIE
- 1976 VERSION UCSD P-CODE
- 1981 SECOND DRAFT ISO, NORMALISE BSI
- 198X POPULARISATION DANS L'INDUSTRIE VIA
TURBO-PASCAL - 1985 UTILISATION DECROISSANTE DANS L'INDUSTRIE
- MAINTIENT DE LA COMPETITIVITE DE TURBO-PASCAL PAR
DES EXTENSIONS OBJETS
5LES ENFANTS DE PASCAL
- MODULA II
- SUCCESSEUR CREE PAR WIRTH
- MODULAIRE
- UN CERTAIN SUCCES EN GB
- ADA 83
- CREE POUR LE DoD
- MODULAIRE
- GRANDES EXTENSIONS
6DOMAINES D'APPLICATION
- ENSEIGNEMENT
- BUT INITIAL
- ADA PREFERE DANS L'ENSEIGNEMENT
- PROGRAMMATION NON PROFESSIONNELLE
- SUR PC
7PASCAL
- QUALITES
- LISIBILITE
- ENCOURAGE LES BONNE PRATIQUES
- BON NIVEAU DE VERIFICATION
- DEFAUTS
- PAS NORMALISE OU TROP TARD
- PORTABILITE
- INSUFFISANCES
- EN DECLIN
8PASCAL
- ZURICH VERSION DE BASE
- X UCSD EXTENSIONS CLASSIQUE
- TP EXTENSIONS TURBO PASCAL
- B.S.O.
- CROISE UTILISE A LA SFIM
- PEU PERFORMANT ET MODULAIRE
- OREGON
- CROISE UTILISE A LA SFIM
- PERFORMANT ET MODULAIRE
9UNITES LEXICALES
- ENTIER
- 123, -123
- REEL
- 123.2, 123E-10
- CARACTERE / CHAINE DE CARACTERES
- 'C''est une chaine'
- IDENTIFICATEURS
- NOTATION_SFIM
- NotationBorland
- COMMENTAIRES
- commentaire
- ( commentaire
10IDENTIFICATEURS
- 1er CARACTERE A..Z
- TP '_'
- ensuite A..Z, 0..9, '_'
- MAJUSCULE MINUSCULE
- MOT RESERVE OU IDENTIFICATEUR
- TRONQUE A N CARACTERES
11STRUCTURE D'UN PROGRAMME PASCAL
- PROGRAM NOM_DU PROGRAMME
- CONST
- DECLARATION DES CONSTANTES
- TYPE
- DECLARATION DES TYPES
- VAR
- DECLARATION DES VARIABLES
- PROCEDUREFUNCTION
- DECLARATION D'UN SOUS-PROGRAMME
- BEGIN
- SUITE D'INSTRUCTION
- END.
12DECLARATIONS
- NOM_CONSTANTE VALEUR
- TP NOM_CONSTANTE EXPRESSION
- TP NOM_CONSTANTE TYPE (...,...,)
- NOM_TYPE DECLARATION_DE_TYPE
- NOM_VARIABLE NOM_TYPE
13TYPES
- SIMPLES
- SCALAIRES
- BOOLEEN
- ENTIERS
- ENUMERATIONS
- CARACTERE
- REELS
- COMPOSES
- TABLEAUX
- ENREGISTREMENT
- ENSEMBLE
- POINTEURS
- FICHIER
14OPERATEURS SUR VARIABLES DE TOUS TYPES
- AFFECTATION A B
- COMPARAISON lt lt gt gt ltgt
- TP _at_
15TYPES ENTIERS
- INTEGER
- -MAXINT..MAXINT
- TP INTEGER -32768..32767
- SHORTINT -128..127
- LONGINT -214483648..2147483647
- BYTE 0..255
- WORD 0..65535
- - DIV MOD ODD ABS SQR
- TP NOT AND OR XOR SHL SHR
16TYPE CARACTERE
- CHAR
- CHR(NOMBRE) TYPE CHAR
- ORD(caractere)
- TP
17TYPES BOOLEENS
- BOOLEAN
- (false, true)
- TP BOOLEAN BYTEBOOL
- WORDBOOL, LONGBOOL
- AND NOT OR
- TP XOR
18AUTRES TYPES SCALAIRES
- INTERVALLES
- MIN..MAX
- ENUMERATION
- COULEUR (BLEU, BLANC, ROUGE)
- VALEURS NON IMPOSEES ( 0,1,2,3...)
- BLANC..ROUGE SOUS-INTERVALLES
19OPERATEURS SUR TYPES SCALAIRES
- SUCC(VARIABLE)
- PRED(VARIABLE)
- ORD(VARIABLE)
20TYPE REEL
- REAL (6)
- TP SINGLE (4), DOUBLE(8), EXTENDED(10), COMP(8)
- OPERATEURS
- -/
- SQR, SQRT
- SIN, COS, TAN
- EXP, LN
- TRUNC, ROUND
21TP CHAINES
- STRINGN
- ARRAY0..N OF CHAR
- TAILLE DYNAMIQUE
-
- LENGTH
22TABLEAUX
- PACKEDARRAYDEBUT..FIN,DEBUT..FIN,... OF
TYPE_ELEMENT - TYPE MATRICE ARRAY-5..4, 1..10 OF REAL
- VAR M1,M2 MATRICE
- M1 M2
- M14 M22
- M14,2 M22,2
23SET OF
- TYPE ENSEMBLE SET OF COULEUR
- VAR E1,E2,E3 ENSEMBLE
- E1 BLEU, BLANC
- E1 E2E3
- E1 E2-E3
- E1 E2E3
- OK BLEU IN E1
TYPE
24RECORD
TYPE PERSONNE RECORD NOM STRING10 AGE
INTEGER END VAR LEON PERSONNE LEON.NOM
'LEON'
nom
age
25WITH
TYPE PERSONNE RECORD NOM STRING10 AGE
INTEGER END VAR LEON PERSONNE WITH LEON DO
BEGIN NOM 'LEON' AGE 10 END
26VARIANT RECORD
TYPE PERSONNE RECORD NOM STRING10 AGE
INTEGER CASE CITOYEN BOOLEAN OF TRUE
(LIEU_NAISS STRING40) FALSE(PAYS
STRING20 LIEU_ARRIVEE STRING20 DATE_ARRIVE
E TDATE) END
27VARIANT RECORD
NOM
AGE
CITOYEN
LIEU_NAISS
PAYS
LIEU_ARRIVEE
DATE_ARRIVEE
28FILE
- FILE OF PERSONNE
- HOMOGENE
- FORMAT BINAIRE
- TEXT
- FILE OF CHAR
- HETEROGENE
- FORMAT AFFICHABLE
29ENTREES/SORTIES TOUS FICHIERS
- RESET(FFILE)
- REWRITE(FFILE)
- PUT(FFILE OF ELEMENT ,XELEMENT)
- FUNCTION GET(FFILE OF ELEMENT)ELEMENT
- EOF(FFILE)
30ENTREES/SORTIES TEXT
- READ(F, A, B, C)
- READLN(F, A, B, C)
- WRITE(F, ALN, BLNDIGIT, C)
- WRITELN(F, A, B, C)
- EOLN(F)
31POINTEUR
ZONE DYNAMIQUE
- TYPE TLIEN OBJET
- VAR LIEN TLIEN
- NEW(LIEN)
- LIEN4
- DISPOSE(LIEN)
- MARK
- RELEASE
NIL
4
NIL
32TYPE ANONYME
VAR LEON RECORD NOM STRING10 AGE
INTEGER END LEON.NOM 'LEON'
33TYPAGE FORT
TYPE X INTEGER Y INTEGER VAR AX BY BEGIN
A B A X(B) EN TURBO PASCAL SEULEMENT
END.
34BLOC
35TANT QUE
- WHILE CONDITION DO
- ACTION
36REPETER
- REPEAT
- ACTION
- UNTIL CONDITION
37BOUCLE
- FOR INDICE DEBUT TO FIN DO
- ACTION(INDICE)
- FOR INDICEFIN DOWNTO DEBUT DO
- ACTION(INDICE)
38CONDITION
IF CONDITION THEN ACTION IF CONDITION
THEN ACTION ELSE AUTRE_ACTION
PAS DE ''
39CONDITION
commentaire sur l'instruction complète IF (
i 2 )THEN BEGIN commentaire sur la branche
action2 END ELSE IF ( j 3 )THEN BEGIN
commentaire sur l'autre branche
action END.
40AIGUILLAGE
case valeur_testee of cas_1
traitement_1 cas_2, cas_3
traitement_2 . . .
cas_n traitement_n else
traitement_autres_cas
END
TP
41GOTO LABEL
PROCEDURE X LABEL 10,20 IDENT
AUTORISE EN TURBO PASCAL BEGIN 10 ......... GOTO
10 END
42PROCEDURE
PROGRAM DEMO VAR A,B INTEGER PROCEDURE SUB(
X INTEGER EN ENTREE
VAR Y INTEGER) EN SORTIE BEGIN
YX X2 END BEGIN
SUB(A,B) END
43FONCTION
PROGRAM DEMO VAR A,B INTEGER FUNCTION FNC( X
INTEGER EN ENTREE
)INTEGER EN SORTIE BEGIN
FNC X END BEGIN A FNC(B) END
44FORWARD
PROCEDURE A(XINTEGER)
FORWARD PROCEDURE B BEGIN
A(4) END PROCEDURE A BEGIN B
END
45EXTERNAL
PROCEDURE A(XINTEGER) EXTERNAL
46PROCEDURE EN PARAMETRE
PROCEDURE DERIVER(FUNCTION FNC(XREAL)REAL BEGIN
.... END FUNCTION F1(YREAL)REAL BEGIN EN
D BEGIN DERIVER(F1) END
47TABLEAUX VARIABLES EN PARAMETRE
FUNCTION ADD(TAB ARRAYMIN..MAXINTEGEROF
INTEGER)INTEGER VAR I,RINTEGER BEGIN R
0 FOR IMIN TO MAX DO RRTABI END
48IMBRICATION/VISIBILITEPROGRAM P
- CONST A 3 TYPE B CHAR VAR C B
- PROCEDURE X
- CONST A 4 TYPE B INTEGER VAR C B
- PROCEDURE Y
- CONST A 5 TYPE B REAL VAR C B
- PROCEDURE Z
- BEGIN
- END
- BEGIN
- END
- BEGIN
- END
- BEGIN
- END.
49PASCALLANGAGE NON MODULAIRE
- UN SEUL SOURCE
- MAINTENANCE
- EXTENSION INCLUDE
- I definitions.def
- COMPILATION LONGUE
- EXTENSION REFERENCE EXTERNE
- NON PORTABLE
- DUPLICATION DES DEFINITIONS (SAUF PARTAGE PAR
INCLUDE)
50MODULARITE A LA SFIMEN PASCAL CROISE
trans_def_ref
trans_def_ref
M1.DEF
M2.DEF
M1.REF
M2.REF
include M1.DEF
include M2.DEF
M1.PAS
M2.PAS
include M1.REF
51MODULARITE A LA SFIM
- CROISE OREGON
- CROISE BSO
- DIGITAL
52MODULARITE A LA SFIM
53UNITE TURBO-PASCAL
UNITE P INTERFACE USES CRT,DOS DECLARATIONS
GLOBALES/EXPORTEE IMPLEMENTATION USES WINDOW
CODE DES SOUS-PROGRAMMES BEGIN
INIITIALISATION END
54APPELS CROISES
INTERFACE
INTERFACE
IMPLEMENTATION
IMPLEMENTATION
55TURBO-PASCAL
- MODULARITE INSPIRATION ADA
- ORIENTATION OBJET INSPIRATION C
- TURBO-VISION BIBLIOTHEQUE ORIENTEE OBJETS DOS
TEXTE - OBJECT-WINDOW BIBLIOTHEQUE ORIENTEE OBJETS
WINDOWS - BGI BIBLIOTHEQUE GRAPHIQUE DOS
56RECURSIVITE
FUNCTION FACTORIELLE(NINTEGER)INTEGER BEGIN IF(N
1)THEN FACTORIELLE 1 ELSE FACTORIELLE
FACTORIELLE(N-1)N END
57ARBRES
TYPE LIENNOEUD NOEUD RECORD CLEF
T_CLEF INFO T_INFO AVANT, APRES
LIEN END VAR ARBRELIEN NIL FUNCTION
RECHERCHE(COURANTLIEN,CLEFLIEN)T_INFO BEGIN IF
COURANT NIL THEN RECHERCHE AUCUNE_INFO ELSE
IF COURANT.CLEF CLEF THEN RECHERCHE
COURANT.INFO ELSE IF COURANT.CLEF lt CLEF
THEN RECHERCHE COURANT.AVANT ELSE RECHERCHE
COURANT.APRES END
58CONSEILS LISIBILITE
- TYPER ET DEFINIR DES CONSTANTES
- NOMMAGE LISIBLE
- PREFIXER LES GLOBAUX PAR LE NOM DE L'UNITE
- SFIM CRT_AFFICHE(...)
- TP CRT.AFFICHE(....)
- INDENTER ET COMMENTER
- PAS DE GOTO
- SEPARER LES SOUS-EXPRESSIONS
- NOM_UNITE.NOM POUR LES EXTERNES
59CONSEILS COMMUNICATION
- LIMITER LES VARIABLES GLOBALES
- TRANSMETTRE PAR PARAMETRE
- UTILISER DES RECORD POUR LIMITER LE NOMBRE DE
PARAMETRES - TRANSMETTRE PAR VARIABLE POUR LES GROS OBJETS
60CONSEILS SECURITE
- PREVOIR LES CAS AUTRES (ELSE DANS CASE ET IF)
- UTILISER LES ()
- CONTROLER LES PARAMETRES D'ENTREE
- LA MEMOIRE N'EST PAS INEPUISABLE
- RECURSIVITE
- ALLOCATION DYNAMIQUE
- TRAITER LES CAS D'ERREUR
61CONSEILS SOUPLESSE
- PARAMETRER LES LIMITATIONS
- EX TAILLE DE TABLEAUX
- NE PAS LIMITER
- UTILISER DES LISTES DYNAMIQUES
62CONSEILS MISE AU POINT
- PREVOIR DES TRACES
- PREVOIR UN PROGRAMME DE TEST DES UNITES
63CONSEILS UNITES
- CREER DES TYPES RECORD
- LES CHAMPS SONT LIES LOGIQUEMENT
- LES COMMUNICATIONS SONT GLOBALES
- DEFINIR LE TYPE
- UNE SEULE VARIABLE -gt DANS L'IMPLEMENTATION
- PLUSIEURS VARIABLES -gt DANS L'INTERFACE
- REGROUPER DANS L'UNITE
- LES SOUS-PROGRAMMES AGISSANT SUR LE TYPE
- LES UNITES UTILISATRICES PEUVENT
- CREER DES CONSTANTES/VARIABLES DU TYPE
- N'AGISSENT SUR LA VARIABLE QUE VIA LES
SOUS-PROGRAMMES DE L'UNITE PROPRIETAIRE
64CONSEILS USAGETURBO-PASCAL
- UTILISER LES UNITES
- UTILISER LES OBJETS
65PASCAL OR NOT PASCAL
- PASCAL
- ALLERGIE A LA SYNTAXE DU C
- ADA NON DISPONIBLE
- PROGRAMMATION OCCASIONNELLE
- NOT PASCAL
- C PORTABILITE
- ADA PROJET LOURD
- C PROGRAMMATION PROFESSIONNELLE
- BASIC INTEGRE A OUTILS