LE LANGAGE PASCAL

65
LE LANGAGE PASCAL .

description

LE LANGAGE PASCAL. OBJECTIFS. PASCAL. 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. HISTORIQUE. 1968 CREATION PAR WIRTH - PowerPoint PPT Presentation

Transcript of LE LANGAGE PASCAL

Page 1: LE LANGAGE PASCAL

LE LANGAGE PASCAL

.

Page 2: LE LANGAGE PASCAL

OBJECTIFS

.

Page 3: LE LANGAGE PASCAL

PASCAL

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

Page 4: LE LANGAGE PASCAL

HISTORIQUE 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

Page 5: LE LANGAGE PASCAL

LES ENFANTS DE PASCAL

MODULA II – SUCCESSEUR CREE PAR WIRTH

– MODULAIRE

– UN CERTAIN SUCCES EN GB

ADA 83– CREE POUR LE DoD

– MODULAIRE

– GRANDES EXTENSIONS

Page 6: LE LANGAGE PASCAL

DOMAINES D'APPLICATION

ENSEIGNEMENT– BUT INITIAL

– ADA PREFERE DANS L'ENSEIGNEMENT

PROGRAMMATION NON PROFESSIONNELLE– SUR PC

Page 7: LE LANGAGE PASCAL

PASCAL

QUALITES :– LISIBILITE

– ENCOURAGE LES BONNE PRATIQUES

– BON NIVEAU DE VERIFICATION

DEFAUTS– PAS NORMALISE OU TROP TARD

– PORTABILITE

– INSUFFISANCES

– EN DECLIN

Page 8: LE LANGAGE PASCAL

PASCAL

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

Page 9: LE LANGAGE PASCAL

UNITES LEXICALES ENTIER

– 123, -123

REEL– 123.2, 123E-10

CARACTERE / CHAINE DE CARACTERES– 'C''est une chaine'

IDENTIFICATEURS– NOTATION_SFIM

– NotationBorland

COMMENTAIRES– { commentaire }

– (* commentaire *}

;

Page 10: LE LANGAGE PASCAL

IDENTIFICATEURS

1er CARACTERE = A..Z– TP: '_'

ensuite : A..Z, 0..9, '_' MAJUSCULE = MINUSCULE MOT RESERVE OU IDENTIFICATEUR TRONQUE A N CARACTERES

Page 11: LE LANGAGE PASCAL

STRUCTURE D'UN PROGRAMME PASCAL

PROGRAM NOM_DU PROGRAMME CONST

– DECLARATION DES CONSTANTES

TYPE– DECLARATION DES TYPES

VAR– DECLARATION DES VARIABLES

PROCEDURE|FUNCTION – DECLARATION D'UN SOUS-PROGRAMME

BEGIN– SUITE D'INSTRUCTION

END.

Page 12: LE LANGAGE PASCAL

DECLARATIONS

NOM_CONSTANTE = VALEUR;– TP: NOM_CONSTANTE = EXPRESSION

– TP: NOM_CONSTANTE : TYPE = (...,...,);

NOM_TYPE = DECLARATION_DE_TYPE; NOM_VARIABLE : NOM_TYPE;

Page 13: LE LANGAGE PASCAL

TYPES SIMPLES

– SCALAIRES

» BOOLEEN

» ENTIERS

» ENUMERATIONS

» CARACTERE

– REELS

COMPOSES– TABLEAUX

– ENREGISTREMENT

– ENSEMBLE

– POINTEURS

FICHIER

Page 14: LE LANGAGE PASCAL

OPERATEURS SUR VARIABLES DE TOUS TYPES

AFFECTATION A := B; COMPARAISON = < <= >= > <> TP : @

Page 15: LE LANGAGE PASCAL

TYPES 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

Page 16: LE LANGAGE PASCAL

TYPE CARACTERE

CHAR CHR(NOMBRE) TYPE CHAR ORD(caractere) TP : +

Page 17: LE LANGAGE PASCAL

TYPES BOOLEENS

BOOLEAN– (false, true)

TP : BOOLEAN = BYTEBOOL– WORDBOOL, LONGBOOL

AND NOT OR TP : XOR

Page 18: LE LANGAGE PASCAL

AUTRES TYPES SCALAIRES

INTERVALLES– MIN..MAX

ENUMERATION– COULEUR = (BLEU, BLANC, ROUGE)

– VALEURS NON IMPOSEES ( 0,1,2,3...)

– BLANC..ROUGE SOUS-INTERVALLES

Page 19: LE LANGAGE PASCAL

OPERATEURS SUR TYPES SCALAIRES

SUCC(VARIABLE) PRED(VARIABLE) ORD(VARIABLE)

Page 20: LE LANGAGE PASCAL

TYPE REEL

REAL (6)– TP : SINGLE (4), DOUBLE(8), EXTENDED(10), COMP(8)

OPERATEURS– +-*/

– SQR, SQRT

– SIN, COS, TAN

– EXP, LN

– TRUNC, ROUND

Page 21: LE LANGAGE PASCAL

TP : CHAINES

STRING[N]– ARRAY[0..N] OF CHAR;

– TAILLE DYNAMIQUE

+ LENGTH

Page 22: LE LANGAGE PASCAL

TABLEAUX

[PACKED]ARRAY[DEBUT..FIN,DEBUT..FIN,...] OF TYPE_ELEMENT;

TYPE MATRICE = ARRAY[-5..4, 1..10] OF REAL;

VAR M1,M2 : MATRICE; M1 := M2 M1[4] := M2[2] M1[4,2] := M2[2,2]

Page 23: LE LANGAGE PASCAL

SET OF

TYPE ENSEMBLE = SET OF COULEUR VAR E1,E2,E3 : ENSEMBLE; E1 := [BLEU, BLANC] E1 := E2+E3 E1 := E2-E3 E1 := E2*E3 OK := BLEU IN E1

TYPE

Page 24: LE LANGAGE PASCAL

RECORD

TYPE PERSONNE = RECORD

NOM : STRING[10];AGE : INTEGER;

END;VAR

LEON : PERSONNE;

LEON.NOM := 'LEON';

nom

age

Page 25: LE LANGAGE PASCAL

WITHTYPE

PERSONNE = RECORDNOM : STRING[10];AGE : INTEGER;

END;VAR

LEON : PERSONNE;

WITH LEON DO BEGIN

NOM := 'LEON';AGE :=10;

END;

Page 26: LE LANGAGE PASCAL

VARIANT RECORD

TYPE PERSONNE = RECORD

NOM : STRING[10];AGE : INTEGER;CASE CITOYEN : BOOLEAN OF

TRUE : (LIEU_NAISS : STRING[40]);FALSE:(PAYS : STRING[20];

LIEU_ARRIVEE : STRING[20];DATE_ARRIVEE : TDATE);

END;

Page 27: LE LANGAGE PASCAL

VARIANT RECORD

NOM

AGE

CITOYEN

LIEU_NAISS PAYS

LIEU_ARRIVEE

DATE_ARRIVEE

Page 28: LE LANGAGE PASCAL

FILE

FILE OF PERSONNE– HOMOGENE

– FORMAT BINAIRE

TEXT– FILE OF CHAR

– HETEROGENE

– FORMAT AFFICHABLE

Page 29: LE LANGAGE PASCAL

ENTREES/SORTIES TOUS FICHIERS

RESET(F:FILE); REWRITE(F:FILE); PUT(F:FILE OF ELEMENT ,X:ELEMENT); FUNCTION GET(F:FILE OF

ELEMENT):ELEMENT; EOF(F:FILE);

Page 30: LE LANGAGE PASCAL

ENTREES/SORTIES TEXT

READ(F, A, B, C); READLN(F, A, B, C); WRITE(F, A:LN, B:LN:DIGIT, C); WRITELN(F, A, B, C); EOLN(F);

Page 31: LE LANGAGE PASCAL

POINTEUR

TYPE TLIEN = ^OBJET; VAR LIEN : TLIEN; NEW(LIEN); LIEN^=4 DISPOSE(LIEN); MARK RELEASE

LIEN

LIEN

ZONEDYNAMIQUE

NIL

LIEN NIL

LIEN 4

Page 32: LE LANGAGE PASCAL

TYPE ANONYME

VAR LEON : RECORD

NOM : STRING[10];AGE : INTEGER;

END;

LEON.NOM := 'LEON';

Page 33: LE LANGAGE PASCAL

TYPAGE FORT

TYPEX = INTEGER;Y = INTEGER;

VARA:X;B:Y;

BEGINA :=B;A := X(B); { EN TURBO PASCAL SEULEMENT }

END.

Page 34: LE LANGAGE PASCAL

BLOC

BEGIN END

Page 35: LE LANGAGE PASCAL

TANT QUE

WHILE CONDITION DO ACTION;

Page 36: LE LANGAGE PASCAL

REPETER

REPEAT ACTION UNTIL CONDITION;

Page 37: LE LANGAGE PASCAL

BOUCLE

FOR INDICE := DEBUT TO FIN DO ACTION(INDICE); FOR INDICE:=FIN DOWNTO DEBUT DO ACTION(INDICE);

Page 38: LE LANGAGE PASCAL

CONDITION

PAS DE ';'

IF CONDITION THENACTION;

IF CONDITION THENACTION

ELSEAUTRE_ACTION;

Page 39: LE LANGAGE PASCAL

CONDITION{ commentaire sur l'instruction complète }IF ( i = 2 )THENBEGIN { commentaire sur la branche } action2;ENDELSE IF ( j = 3 )THENBEGIN { commentaire sur l'autre branche } action;END.

Page 40: LE LANGAGE PASCAL

AIGUILLAGE

case valeur_testee of cas_1 : traitement_1;

cas_2, cas_3 : traitement_2; . . . cas_n : traitement_n;

else traitement_autres_cas; END

TP

Page 41: LE LANGAGE PASCAL

GOTO LABEL

PROCEDURE X;LABEL 10,20; { IDENT AUTORISE EN TURBO PASCAL}BEGIN

10:.........GOTO 10

END;

Page 42: LE LANGAGE PASCAL

PROCEDUREPROGRAM DEMO;VAR A,B : INTEGER;

PROCEDURE SUB( X : INTEGER; { EN ENTREE } VAR Y: INTEGER) { EN SORTIE }BEGIN Y:=X; X:=2;END;

BEGIN SUB(A,B);END;

Page 43: LE LANGAGE PASCAL

FONCTIONPROGRAM DEMO;VAR A,B : INTEGER;

FUNCTION FNC( X : INTEGER { EN ENTREE } ):INTEGER; { EN SORTIE }BEGIN FNC := X;END;

BEGIN A := FNC(B);END;

Page 44: LE LANGAGE PASCAL

FORWARDPROCEDURE A(X:INTEGER); FORWARD;

PROCEDURE B;BEGIN A(4);END;

PROCEDURE A;BEGIN B; END;

Page 45: LE LANGAGE PASCAL

EXTERNAL

TP: APPEL AUTRES LANGAGES

PROCEDURE A(X:INTEGER); EXTERNAL;

Page 46: LE LANGAGE PASCAL

PROCEDURE EN PARAMETRE

PROCEDURE DERIVER(FUNCTION FNC(X:REAL):REAL;BEGIN ....END;

FUNCTION F1(Y:REAL):REAL;BEGINEND;

BEGIN DERIVER(F1);END;

Page 47: LE LANGAGE PASCAL

TABLEAUX VARIABLES EN PARAMETRE

FUNCTION ADD(TAB :ARRAY[MIN..MAX:INTEGER]OF INTEGER):INTEGERVAR I,R:INTEGER;BEGIN

R := 0;FOR I:=MIN TO MAX DO

R:=R+TAB[I];END;

Page 48: LE LANGAGE PASCAL

IMBRICATION/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.

Page 49: LE LANGAGE PASCAL

PASCALLANGAGE 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)

Page 50: LE LANGAGE PASCAL

MODULARITE A LA SFIMEN PASCAL CROISE

M1.DEF

M1.PAS

M2.DEF

M2.PAS

include M1.DEF include M2.DEFinclude M1.REF

M1.REF M2.REF

trans_def_ref trans_def_ref

Page 51: LE LANGAGE PASCAL

MODULARITE A LA SFIM

CROISE OREGON CROISE BSO DIGITAL

Page 52: LE LANGAGE PASCAL

MODULARITE A LA SFIM

INTERFACE

CORPS

M1.DES

M1.PAS

BASE

DE

DONNEES

OSCAR

M1.ORE

Déclarations

importations

exportations

%include 'M1.PAS'

COMPILATION

Page 53: LE LANGAGE PASCAL

UNITE TURBO-PASCAL

UNITE P;

INTERFACEUSES CRT,DOS;{ DECLARATIONS GLOBALES/EXPORTEE}

IMPLEMENTATIONUSES WINDOW;{ CODE DES SOUS-PROGRAMMES }

BEGIN{ INIITIALISATION }

END;

Page 54: LE LANGAGE PASCAL

APPELS CROISES

INTERFACE

IMPLEMENTATION IMPLEMENTATION

INTERFACE

Page 55: LE LANGAGE PASCAL

TURBO-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

Page 56: LE LANGAGE PASCAL

RECURSIVITE

FUNCTION FACTORIELLE(N:INTEGER):INTEGERBEGIN

IF(N=1)THENFACTORIELLE := 1;

ELSEFACTORIELLE := FACTORIELLE(N-1)*N;

END;

Page 57: LE LANGAGE PASCAL

ARBRESTYPE LIEN=^NOEUD;NOEUD= RECORD

CLEF : T_CLEFINFO : T_INFO;

AVANT, APRES : LIEN;END;

VAR ARBRE:LIEN = NIL;

FUNCTION RECHERCHE(COURANT:LIEN,CLEF:LIEN):T_INFO;BEGIN

IF COURANT = NIL THENRECHERCHE := AUCUNE_INFO

ELSE IF COURANT^.CLEF = CLEF THENRECHERCHE := COURANT^.INFO

ELSE IF COURANT^.CLEF < CLEF THENRECHERCHE := COURANT^.AVANT

ELSERECHERCHE := COURANT^.APRES;

END;

Page 58: LE LANGAGE PASCAL

CONSEILS 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

Page 59: LE LANGAGE PASCAL

CONSEILS COMMUNICATION

LIMITER LES VARIABLES GLOBALES TRANSMETTRE PAR PARAMETRE UTILISER DES RECORD POUR LIMITER LE

NOMBRE DE PARAMETRES TRANSMETTRE PAR VARIABLE POUR LES

GROS OBJETS

Page 60: LE LANGAGE PASCAL

CONSEILS 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

Page 61: LE LANGAGE PASCAL

CONSEILS SOUPLESSE

PARAMETRER LES LIMITATIONS– EX TAILLE DE TABLEAUX

NE PAS LIMITER– UTILISER DES LISTES DYNAMIQUES

Page 62: LE LANGAGE PASCAL

CONSEILS MISE AU POINT

PREVOIR DES TRACES PREVOIR UN PROGRAMME DE TEST DES

UNITES

Page 63: LE LANGAGE PASCAL

CONSEILS UNITES

CREER DES TYPES RECORD– LES CHAMPS SONT LIES LOGIQUEMENT

– LES COMMUNICATIONS SONT GLOBALES

DEFINIR LE TYPE– UNE SEULE VARIABLE -> DANS L'IMPLEMENTATION

– PLUSIEURS VARIABLES -> 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

Page 64: LE LANGAGE PASCAL

CONSEILS USAGETURBO-PASCAL

UTILISER LES UNITES UTILISER LES OBJETS

Page 65: LE LANGAGE PASCAL

PASCAL 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