next up previous
suivant: À propos de ce monter: Simplification précédent: Nom-de-variable-pointeur

Exemple d'utilisation complet

Dans ce dernier exemple nous cherchons à donner un apercu de l'utilisation des segments dans Castem2000. Il s'agit de construire le triangle de Pascal (le pivot initial n'est pas forcement égal à 1). Chaque ligne est représentée par un segment. On veut pouvoir avoir accés directement à la n-iéme ligne. La strucure de notre objet triangle de Pascal peut etre :


 		   SEGMENT MPASC 

INTEGER ILIGN(L)
ENDSEGMENT

SEGMENT LIGN
REAL*8 XLIGN(M)
ENDSEGMENT
POINTEUR LIG1.LIGN

Le tableau ILIGN contient la valeur des pointeurs sur le segment LIGN et les valeurs sont dans le tableau XLIGN

Le premier sous-programme crée un triangle de pascal avec XUN comme pivot et avec LI lignes, et le second sous programme écrira un objet triangle de Pascal reçu en argument.


		 		 SUBROUTINE SP11 (XUN,LI,IRET) 

IMPLICIT REAL*8(A-H,O-Z)
SEGMENT MPASC
INTEGER ILIGN(L)
ENDSEGMENT

SEGMENT LIGN
REAL*8 XLIGN(M)
ENDSEGMENT
POINTEUR LIG1.LIGN
L = LI
SEGINI MPASC
IRET = MPASC
IF ( LI.EQ.0) THEN
SEGDES MPASC
RETURN
ENDIF
M=1
SEGINI LIGN
XLIGN(1)= XUN
ILIGN(1)=LIGN
DO 1 I=2,LI
M= I
SEGINI LIG1
ILIGN(I)= LIG1
LIG1.XLIGN(1) = XUN
LIG1.XLIGN(I) = XUN
DO 2 KO = 1,I-2
LIG1.XLIGN(KO+1) = XLIGN(KO) + XLIGN(KO+1)
2 CONTINUE
SEGDES LIGN
LIGN=LIG1
1 CONTINUE
SEGDES LIGN
SEGDES MPASC
RETURN
END




SUBROUTINE SP2(IPASC)
IMPLICIT REAL*8(A-H,O-Z)
SEGMENT MPASC
INTEGER ILIGN(L)
ENDSEGMENT
SEGMENT LIGN
REAL*8 XLIGN(M)
ENDSEGMENT
POINTEUR LIG1.LIGN
MPASC=IPASC
SEGACT MPASC
DO 1 I=1,ILIGN(/1)
LIGN= ILIGN(I)
SEGACT LIGN
WRITE(6,*) (XLIGN(K),K=1,XLIGN(/1))
SEGDES LIGN
1 CONTINUE
SEGDES MPASC
RETURN
END


next up previous
suivant: À propos de ce monter: Simplification précédent: Nom-de-variable-pointeur
traduction LAMS 2004-04-21