Introduction au génie logiciel : le module
Un module est un élément de petite taille (en général un ou quelques sous-programmes) qui sert, par assemblage, à la construction de logiciels. Un module doit être cohérent et autonome. Un module rend des services ou effectue des traitements. Pour exploiter un module dans un logiciel, il est nécessaire d’avoir une description précise de ce qu’il fait, ce qui, dans la pratique se traduit par le passage d’information à travers son interface. De ce point de vue, on peut dire qu’un module est défini par son interface. D’où les principes de la modularité:
Définir des interfaces explicites chaque fois que deux modules échangent des informations.
Masquer le plus d’information possible. Seules les informations qui servent à la communication avec d’autres modules doivent être publiques (visibles de l’extérieur du module).
Un module doit communiquer avec aussi peu d’autres modules que possible.
Unités linguistiques modulaires : les modules doivent correspondre à des unités syntaxiques du langage.
Structuration d’un programme en F90/95
La nécessité de décomposer un programme en plusieurs parties est maintenant admise. En Fortran 90/95 chacune de ces parties, appelée unité de programmation, est compilable séparément mais en respectant les dépendances.
Il existe trois unités de programmation :
Le programme principal
PROGRAM Toto
CONTAINS
END PROGRAM Toto
La procédure externe
SUBROUTINE Titi(les args)
CONTAINS
END SUBROUTINE Titi
FUNCTION Titi(les args)
CONTAINS
END FUNCTION Titi
Le cadre de programmation : Format libre
La ligne de programme comporte au plus 132 caractères.
Les caractères blancs sont significatifs, sauf en début de ligne IF (LaVar.eq.0) THEN et I F (La Var.eq.0) TH EN
Une ligne de programme peut décrire plusieurs instructions si celles-ci sont séparées
par ;
a=3 ; b=4
c=8 ; write(*,*) a*b*c
Une instruction peut être décrite sur plusieurs lignes (39 au plus) finissant par « & », sauf la dernière
a=38+c* &
& d+b
Dans le passage à la ligne dans l’expression d’une chaîne de caractère la suite de la chaîne doit être précédée par « & »
MaString=’’bonjour& & la formation est bien?‘‘
MaString=’’bonjour&
& la formation est bien? ‘‘
le caractère ! marque le début d’un commentaire qui se termine toujours à la fin de la ligne. Il n’y a pas de restriction sur les caractères utilisés dans un commentaire car ceux-ci sont sans effets. Par conséquent, un commentaire ne peut avoir de suite, un commentaire ne peut être intercalé entre des lignes suites.
! on affecte 3 a la variable A
A=3
B=4 ! on affecte 4 a la variable B
Les éléments lexicaux
Ils sont composés d’au plus 31 caractères alphanumériques dont le premier doit être une lettre.
Les mots clefs : Ce sont les noms communs du langage DO END WHILE MODULE INTEGER MINVAL
Les identificateurs : Ce sont les noms propres choisis par le programmeur pour désigner les entités de son programme
de variables,
de programmes, de procédures, de modules,
de types dérivés,
d’interfaces génériques, etc.
Les étiquettes
Les étiquettes sont utilisées pour référencer une instruction ou un bloc d’instructions.
Pour référencer une instruction, l’étiquette est composée d’au plus 5 chiffres située en début de l’instruction.
Pour référencer un bloc d’instruction, l’étiquette est composée d’un identificateur en début de bloc suivie du séparateur : puis du bloc d’instruction.
MaBoucle : DO i = 1, 10
T(i) = i
END DO MaBoucle
Les instructions exécutables
[etiquette] mot-cl´e [corps]
L’affectation
ObjetFinal = expression_evaluable
l’appel à une procédure
CALL MyProcedure(les arguments)
les I/O
WRITE(6, *) SinPi(x)
les formats
RETURN, STOP
Les “Atomes”
Les types intrinsèques
Numériques : INTEGER, REAL, COMPLEX
Booléens : LOGICAL
Chaînes de caractères : CHARACTER
Les opérateurs intrinsèques
Scalaires +, -, *, **, /, ==, >, <, >=, <=,
Booléens .AND. , .OR. , .NOT.
Chaînes de caractères//, ==
Affectation =
Quelques attributs : PARAMETER, DIMENSION(:,:), ALLOCATABLE,
POINTER, TARGET, SAVE, SEQUENCE, INTENT(IN/OUT/INOUT),
PUBLIC, PRIVATE, EXTERNAL, INTRINSIC
Quelques Mots clefs:
PROGRAM, SUBROUTINE, FUNCTION, MODULE, USE, CALL, CONTAINS,
PUBLIC , PRIVATE, PURE, ELEMENTAL, END, DO, ELSE, IF, SELECT,
CASE, EXIT, CYCLE, WHILE
Introduction
Déclaration des variables
Les pointeurs
Les schémas de décision et les schémas itératifs
Maintenabilité + Réutilisabilité = Modularité
Les interfaces
Visibilité
Vers le Fortran 95/2000/2003