Vous êtes sur la page 1sur 23

Département de Génie Energétique et Environnement

1ère G.E.E

COURS PROGRAMMATION INFORMATIQUE

-Fortran -

Réalisé par:

Pr. ARMOU Sara

Année universitaire : 2021/2022


Chapitre I : Introduction au Fortran
I- Introduction

 Fortran est un langage de programmation, développé par IBM vers 1955.


 FORTRAN ou FORmula TRANslator est un langage de programmation particulièrement
destiné au traitement des applications scientifiques telles que les statistiques, le calcul
numérique, la simulation, etc….
 Fortran a fait l'objet de plusieurs normalisations : fortran 77, fortran 90 et 95, et plus
récemment fortran 2003.
 Un programme Fortran nécessite trois types de fichiers pour son élaboration :
 Les fichiers source (extension .FOR, .F90 sous MS-D OS ou WINDOWS)
 Les fichiers objet (extension .OBJ sous MS-DOS)
 Le fichier exécutable (extension .EXE sous MS-DOS ou WINDOWS).

II- Structure d’un programme


Un module comporte différentes parties. L'entête ou le nom du module en FORTRAN on peut
trouver:
- PROGRAM suivi du nom du programme pour le programme principal
program nom
………………….
end
- SUBROUTINE ou on l’appelle un sous-programme
subroutine nom (arguments)
………………….
end
- FONCTION un sous-programme d’une fonction
function nom (arguments)
………………….
end

Le programme principal se découpe en deux parties distinctes successives détaillées:


- Partie déclaration, c’est dans cette partie ou on définit les objets (type+nom) qui
seront manipulé par le programme

1
- Partie exécutable, l’exécution d’un programme Fortran consiste à dérouler dans
l’ordre toutes les instructions de la partie exécutable du programme principal. Elle
comporte les opérations mathématiques, la lecture et l’écriture de fichiers et l’appel à
des sous-programmes. program <Nom du programme>
:
: Instructions de déclaration
:
:
: Instructions exécutables
:
end program <Nom du programme>

Les Eléments de base du langage Fortran : Les caractères reconnus par le compilateur
• Les 36 caractères alphanumériques: les 10 chiffres décimaux et les 26 lettres de
l'alphabet
• Le caractère espace
• Caractères spéciaux ( ! * + < ( ) = ; % / : - , ? ‘ . &….)

Un texte FORTRAN s’écrit en revenant à la ligne après chaque instruction. Une ligne d’un
programme FORTRAN est formée de 72 caractères (ou 72 colonnes).

 Les colonnes 1 à 5 sont réservées aux étiquettes ou à une ligne commentaire avec le
caractère C à la première colonne.
 La colonne 6 est réservée seulement aux lignes de continuation. Dans ce cas, on met
un caractère quelconque dans cette colonne et le compilateur comprendra que cette
ligne est la suite de la ligne précédente, le nombre de lignes de continuation ne peut en
aucun cas excéder 19.
 Les colonnes 7 à 72 sont réservées aux instructions FORTRAN.
 Les colonnes 73 à 80 sont ignorées par le compilateur.

Exemple :

2
Chapitre II : Constantes et variables
I- Constantes
1. Définition
Une constante est une valeur qui ne peut être modifiée lors de l’exécution d’un programme.
Cette valeur peut être:
• Numérique,
• Chaîne de caractères
• Logique
2. Constante entière
Une constante présente une suite de chiffres sans signe ou avec une signe.

Exemple :

Expression en L-Fortran Expression Mathématique


1 1
140 140
-43 -43
3. Constante réelle
a. Constante réelle simple précision
Une constante réelle simple précision doit obligatoirement comporter :
 Le point décimal
 Le caractère E pour la notation en virgule flottante.
Remarque :
 Pour les nombres écrits 0.xxxxx, on peut omettre le 0 avant le point décimal.
 Les constantes avec exposant (E) peuvent comporter 7 chiffres significatifs.
Expression en L-Fortran Expression Mathématique
0. 0
.1 0,1
Exemples
1. 1
3.1415 3,1415
-4
31415E-4 31415. 10
b. Constante réelle double précision
Une constante double précision doit obligatoirement être écrite en virgule flottante, en
remplaçant le E par un D. La partie décimale comportera 15 à 16 chiffres significatifs.
3
Expression en L-Fortran Expression Mathématique
0D0 0
Exemples 0.D0 0
1.D0 1
3.1415D0 3,1415
-4
31415D-4 31415. 10
4. Constante complexe
Une constante de type COMPLEX est obtenue en combinant deux constantes réelles entre
parenthèses séparées par une virgule.

Exemple :

Expression Mathématique Expression en L-Fortran


2,5 + 3,2i (2.5,3.2)
1-i (1.,-1.)
1.34.10-3+4,89.10-4i (1.34e-3, 4.89e-4)

5. Constante logique

Une constante logique n'a que deux valeurs possibles :

.TRUE.
.FALSE.

6. Constante chaîne de caractère

Une constante chaînes de caractères est une suite de caractères encadrée par l’apostrophe '
ou bien ".

Exemple :
' La somme des n premiers entiers est : '
' l'écoulement d’un fluide : '
' l'écoulement d’un fluide : '

7. Déclaration des constantes

En FORTRAN, les constantes n'ont pas de nom. Cependant, il peut être utile de nommer des
constantes, ce qui permet de les décrire en début de programme, on utilise pour celà la déclaration
PARAMETER.

Exemple :

Parameter PI = 3.14159

4
II- Variables
1. Variables simples

Une variable est une quantité susceptible de prendre diverses valeurs au cours d’un
programme de calcul. Il est nécessaire de la représenter par un nom symbolique qui est son
identificateur.

Les identificateurs ou noms de variables sont constitués par une suite de 1 à 6 ou 1 à 8


caractères alphanumériques, le premier caractère gauche est toujours une lettre. Une variable
peut être de type:

 Entier
 Réel
 Double précision
 Complexe
 Logique
 Chaîne de caractère

a. Variables entières :

Leur nom commence par l’une des lettres I, J, K, L, M, N ou sont déclarées dans une
instruction de type INTEGER qui doit figurer au début du programme.

Exemple :

Integer X1, X2, Y, Z


Integer*4 X (est une variable entière stockée sur 4 octets)

b. Variables réelles :

Elles sont déclarées dans une instruction de type REAL qui doit figurer au début du
programme.

Exemple:

Real I
Real SIGMAXX, SIGMAYY, SIGMAZZ

c. Variables double précision :

Elles doivent obligatoirement figurer dans une déclaration de type DOUBLE PRECISION
en tête du programme.

5
Exemple :

DOUBLE PRECISION V1, V2, V3


d. Variables complexes :

Elles doivent obligatoirement figurer dans une déclaration de type COMPLEX en tête du
programme.

Exemple :

COMPLEX Z1, Z2, Z3

e. Variables chaîne de caractères :

Elles sont constituées de chiffres, lettres, caractères spéciaux. Elles sont déclarées par
l’instruction CHARACTER en spécifiant leur longueur.

Exemple :

CHARACTER*20 NOM, PRENOM (NOM et PRENOM sont des variables chaînes de 20


caractères de longueur chacune)
CHARACTER CH*3, D1*4, ST*15 (La variable CH contient 3 caractères, D1 en contient 4,
ST a pour longueur 15 caractères)

 Déclaration implicite :

On peut ne pas déclarer une variable (fortement déconseille), fortran attribue implicitement un
type a une variables non définies en fonction de la première lettre, en utilisant les règles
suivantes :
 Une variable dont le nom commence par i,j,k,l,m,n est automatiquement de type integer.
 Une variable commençant par toute autre lettre (de a à h et de o à z) est automatiquement
de type real

Si on a une longue liste de variables d’un type donné à déclarer, il est commandé d’utiliser la
déclaration IMPLICIT.

Implicit type (lettre1-lettre2,lettre3,…)

 Toute variable commençant par une lettre comprise entre lettre1 et lettre2 ou
commence par lettre3 sera par défaut du type indiqué.
 Cette directive doit être écrite juste après Program, Subroutine ou function.

6
Exemple :

Implicit real (a-c,e,w-z) (Tout ce qui commence par a,b,c,e,w,x,y,z sera real)

Implicit complex (z) (Tout ce qui commence par z est complex par défaut)

Implicit none (Aucune variable n'est utilisable si elle n'est pas déclarée)

2. Variables indicées (Tableaux)

Un tableau en FORTRAN est un ensemble de variables indicées, identifié par un seul nom de variable.
Les noms de tableau obéissent aux mêmes lois de construction et de type que les noms de variables
simples.

Un élément du tableau est représenté par le nom du tableau suivi de 1 à 7 indices placés entre
parenthèses et séparés par des virgules. Toutes les variables d’un même tableau sont du même type;
celui du nom du tableau.

Il est nécessaire d’indiquer en début du programme la taille maximale du tableau, ce qui se fait par
l’instruction DIMENSION.

Exemple :

DIMENSION A(10), I(5,7), B(5 :20), K(2,3,0 :10)

 Le tableau A est un vecteur réel d’indice varie de 1 à 10.

 Le tableau I est une matrice de variables entières, le premier indice varie de 1 à 5, le


deuxième varie de 1 à 7.

 Le tableau B est un vecteur réel dont l’indice varie de 5 à 20.

 Le tableau K est un tableau entier à 3 dimensions, les 2 premiers indices varient


respectivement de 1 à 2 et de 1 à 3, le troisième varie de 0 à 10.
Remarque :

Les deux déclarations :


REAL I
DIMENSION I(10)
peuvent se regrouper en :
REAL I(10)

Exemple :
DIMENSION A(2,5)

7
 Elle réserve 2×5 =10 places de réels en mémoire et indique que A est un tableau
rectangulaire réel de 2 lignes et 5 colonnes.

 En mémoire, le tableau est rangé en ligne de la façon suivante :

A(1,1)/ A(2,1)/ A(1,2)/ A(2,2)/ A(1,3)/ A(2,3)/ A(1,4)/ A(2,4)/ A(1,5)/ A(2,5)

Pour initialiser un tableau, il suffit d’indiquer son nom et les valeurs de tous ses éléments.

Exemple :

DIMENSION A(2,3)
DATA A/1.,2*1.5,3*0./

Ce qui correspond à la matrice ( )

8
Chapitre III : Opérateurs et expressions
I- Opérateurs
1- Opérateurs arithmétiques
Ils permettent l’exécution des opérations usuelles

Opérateur Opération Exemple


+ addition A+B
- soustraction A - B
* multiplication A*B
/ division A/B
** Puissance A**B

2- Opérateurs relationnels
Ils expriment une condition arithmétique qui peut être vraie ou fausse.

Opérateur Opération
.LT. strictement inférieur <
.LE. inférieur ou égal <=
.EQ. Égal =
.NE. non égal /=
.GT. Strictement supérieur >
.GE. supérieur ou égal >=

3- Opérateurs logiques
Les opérandes doivent être des expressions de type LOGICAL

Opérateur Opération
.NOT. négation logique
.AND. conjonction logique
.OR.. disjonction logique
.EQV. équivalence logique
. NEQV. non équivalence logique

4- Opérateurs de concacténation
Expression Interprétation
C1// C2 Concatène C1 avec C2

Remarque : L’opérateur de concaténation n’admet que des expressions de type caractère.

Exemple : Write(*,*) ‘bon’ // ‘jour ‘

9
5- Opérateurs d’affectation
Syntaxe générale : Variable = Expression
Expression : est une expression arithmétique, logique ou relationnelle (comparaison)
Exemple : Deltat = B**2-4*A*C , Z= E.OR.F.AND.G
Remarques:
1. Une valeur de type CHARACTER ne peut pas être affectée à une variable numérique ou
vis-versa.
2. Une valeur de type INTEGER peut être affectée à une variable de type REAL.
3. Une variable de type REAL peut également être affectées à une variable INTEGER mais
dans ce cas, la valeur est tronquée en supprimant la partie fractionnaire.
Exemple :
Expression Interprétation
X=5 X = 5.0
N = 0.999 N=0
M = -1.988 M=-1

6- Expressions arithmétiques
Une expression arithmétique est formée d’une suite de constante, des variables simples et des
variables indicées, d’appels de fonction à valeur numérique et des opérateurs, elle peut
contenir des virgules, des parenthèses, et des fonctions incorporées.

Exemple : B**2-4*A*C

7- Expressions logiques
Les expressions logiques ne peuvent prendre que deux valeurs, vrai ou faux (.TRUE. et .FALSE.)

Les opérandes d’une expression logique sont des variables constante, fonction à valeur logique ainsi
que des expressions de comparaisons.

Exemple : E.OR.F.AND.G

8- Priorité des opérateurs (Ordre d’évaluation)


Pour pouvoir ordonner une suite d’opérations, il faut savoir dans quel ordre elles vont être
effectuées. Dans le tableau suivant, les opérateurs sont donnés par ordre de priorité
décroissante.

Remarque :

En cas d’égalité de priorité, les opérations sont effectuées de la gauche vers la droite sauf
pour l’exponentiation qui est effectuée de la droite vers la gauche.

10
Numéro Opérateur Numéro Opérateur
1 ** 6 .NOT.
2 * et / 7 .AND.
3 + et - 8 .OR.
4 // 9 .EQV. et
5 <, <=, =, /= ,>,>= .NEQV.
Exemple :

Expressionj<QSW Interpretation
2**3**2 2 ** 3**2 = 515
5+4.* 9.**2 5 + 4.* 9**2
E.OR.F.AND.G E .OR. F.AND.G
A/B*C A/B*C
A/B/C A/B / C

9- Fonctions usuelles

Les fonctions les plus usuelles en fortran

SIN sinus SIN(30.) =-0.988


COS cosinus COS (30.) = 0.154
ALOG logarithme népérien ALOG (30.) = 3.401
EXP exponentielle EXP(30.)=1.06
SQRT racine carrée SQRT (30.)=5.477
ATAN arc tangente ATAN (30.)=1.537
TANH tangente hyperbolique TANH (30.)=1.
ABS valeur absolue d'un réel ABS(-44.)=44.
IABS valeur absolue d'un entier IABS(-44)=44
FLOAT convertit d'entier à réel FLOAT(45)=45.
IFIX convertit de réel à entier IFIX (1.52)=1
CHAR conversion du code ASCII en caractère CHAR ('0') = 48
ICHAR conversion inverse de la précédente ICHAR(48)=O
NINT fonction arrondi NINT (1.52)=2
MOD fonction modulo MOD (8.,3.)=2.

11
Chapitre IV : Instructions
I- Instructions de lecture et d’écriture
1- Instruction de lecture

Sa syntaxe est : Read(i,*) listes ou bien Read i, listes


Avec :
i : Une constante ou une variable simple indiquant le numéro de l’unité périphérique à utiliser.
Exemple: pour le clavier i=5 ou bien i=* cette constante varie entre 1 et 99

* : Symbole utilisé dans le cas de lecture en format libre


Listes : Listes des variables simples, indicées, caractères… séparées par des virgules
Exemple : Read(*,*) a,b,c ou bien Read*,a,b,c

2- Instruction d’écriture

Sa syntaxe est : Write(i,*) listes ou bien Print i, listes


Avec :
i : Une constante ou une variable simple indiquant le numéro de l’unité périphérique à utiliser.
Exemple: pour l’écran i=6 ou bien i=*

* : Symbole utilisé dans le cas de lecture en format libre


Listes : Listes des variables simples, indicées, caractères… séparées par des virgules
Exemple : Write(*,*) X1,X2 ou bien Print*,X1,X2

II- Instructions de branchement


1- Définition

Une instruction de branchement permettant d’interrompre l’ordre séquentielle de l’exécution


d’une instruction de programme, on se branchent vers un autre séquentielle situer plus haut ou
plus bas.

2- Branchement inconditionnel (GOTO)

Permis de se brancher d’un endroit du programme vers un autre endroit. Sans aucun
condition, sa syntaxe est de la forme suivante: GOTO n

n : étiquette de l’instruction ou on doit se brancher

12
3- Branchement avec condition

Il permet de se brancher d’un endroit du programme vers un autre endroit avec condition, il
existe plusieurs types :

a. IF logique :
Elle s’écrit sous la forme suivante: If (expression logique) instruction
 Si l’expression logique est vraie on exécute l’instruction qui suivre puis on continue
 Si l’expression logique est fausse le programme continue en séquence sans exécuter
l’instruction qui suit l’expression logique.
Exemple :
write(*,*) 'entrez les valeures de A,B et C'
read(*,*) a,b,c
deltat=b**2-4*A*C
if(deltat<0) write(*,*)'pas de solution'
if(deltat==0) goto 30
goto 20
30 x=-b/(2*A)
write(*,*) 'X=',x
20 if(deltat>0) goto 10
goto 40
10 x1=(-b-sqrt(deltat))/(2*A)
x2=(-b+sqrt(deltat))/(2*A)
write(*,*)'X1=',x1
write(*,*)'X2=',x
40 end
b. IF arithmétique :
Cette instruction est destinée à tester le signe d’une expression arithmétique et à effectuer un
branchement. Elle s’écrit sous la forme suivante:
If (variable ou expression arithmétique) n1,n2,n3
 Si la valeur du variable ou expression arithmétique est négative, aller à l’étiquette n1
 Si la valeur du variable ou expression arithmétique est nulle, aller à l’étiquette n2
 Si la valeur du variable ou expression arithmétique est positive, aller à l’étiquette n3
Exemple :
write(*,*)'entrez a b c'
read(*,*) a,b,c
deltat=b**2-4*a*c
if(deltat) 10,20,30
10 write(*,*)'pas de solution'
goto 50
20 x=-b/(2*a)
write(*,*) 'x=',x
goto 50
30 X1=-b-sqrt(deltat)/(2*a)
X2=-b+sqrt(deltat)/(2*a)
write(*,*)'X1 et X2=',X1,X2
50 End
13
c. IF structurée :
Elle s’écrit sous la forme suivante:
If (condition) then
Instruction 1
Else
Instruction 2
End if
 Si la condition est vraie l’instruction 1 est exécutée.
 Si la condition est fausse l’instruction 2 est exécutée.
Remarque : Instructions 1 et 2 peuvent être plusieurs instructions

Exemple :
write(*,*) 'ENTREZ A B C'
read(*,*) a,b,c
deltat=b**2-4*a*c
if(deltat.gt.0) then
X1=-b-sqrt(deltat)/(2*a)
X2=-b+sqrt(deltat)/(2*a)
write(*,*) 'X1 et X2=',X1,X2
else
if(deltat.eq.0) then
x=-b/(2*a)
write(*,*) 'X=',X
else
write(*,*) 'pas de solution'
end if
end if
end

III- Instructions itératives


1- Boucle do

Elle s’écrit sous la forme suivante:

Do I=n1,n2,n3 Do n I=n1,n2,n3

Bloc d’instructions Ou bien Bloc d’instructions

End do n continue

n: Etiquette de la dernière instruction de la boucle Do

I: Variable de contrôle (Variable simple entier)

n1, n2, n3: Valeur initiale de I, valeur finale de I, pas d’incrémentation

14
Remarques :
 Si le pas n’est pas spécifié, il est considéré égale à 1
 Il ne faut jamais modifier la valeur de la variable I à l’intérieur de la Boucle DO.
 Il est interdit de se brancher directement à l’intérieur d’une boucle.
 Il est possible de sortir d’une boucle Do par IF
Exemple :

Goto 10 Do 2 I=1,n
Do I=1,10,2 ……..
Interdit ---- IF ((A-2)<0) goto 2
10 s=s+2 ……..
----- IF ((A-B)==0) goto 6
End do 2 Continue
end 6 Write(*,*) B
Possible
2- Boucle do while

Elle s’écrit sous la forme suivante:

Do while (expression)
Bloc d’instructions
End do
Exemple :
som=0
i=1
do while (i<20)
som=som+i
i=i+1
end do
write(*,*)'somme=',som
end

IV- Autres instructions


1- Select case

Cette instruction permet de faire un choix multiple entre différents blocs d’instructions à
réaliser. Sa syntaxe générale est la suivante:

NOM: SELECT CASE (expression)


CASE (Choix 1)
………
CASE (Choix 2)
………
CASE DEFAULT
………
END SELECT NOM
15
Remarque : (Expression) peut être une variable de type caractère, entier ou logique

Exemple :

Character(len =25) pays


Read*, pays
Langue : Select case (pays)
Case ('France',‘Quebec',‘Suisse',‘Belgique')
Print*, 'Bonjour'
Case ('rayaume_uni','usa')
Print*, 'Hello'
Case default
Print*,'Langue pas disponible'
End Select langue
end

2- Where et Forall

L’instruction Where est la généralisation de l’IF pour des tableaux, dans le sens où on va
effectuer une opération logique sur un tableau et suivant le résultat élément par élément,
effectuer une affectation spécifique. Sa syntaxe générale est la suivante:

WHERE (expression logique)


Instruction 1
Else WHERE
Instruction 2
END WHERE
L’instruction Forall permet de combiner DO et IF en une seule instruction. Sa syntaxe générale
est la suivante:
NOM:FORALL (Bloc de contrôle, bloc de contrôle, filtre)
Bloc
END FORALL NOM
Le bloc de contrôle est une commande sur les indices d’un ou plusieurs tableaux

Exemple : Real mat1,mat2


dimension mat1(20,20),mat2(20,20)
read*,n
do j=1,n
do i=1,n
Read*,mat1(i,j)
end do
end do
FORALL (i=1:n,j=1:n,mat1(i,j)>0)
mat2(i,j)=(mat1(i,j))/2.
End FORALL
do j=1,n
do i=1,n
print*,mat2(i,j)
end do
end do
end
16
3- Stop et Pause

L’instruction exécutable Stop provoque l’arrêt du déroulement du programme à titre définitif


et Pause permet d’arrêter momentanément l’exécution du programme afin de permettre une
intervention manuelle de l’opérateur. A la fin de cette intervention l’exécution du programme
est reprise à l’endroit où elle avait été suspendue. La syntaxe générale de ces deux instructions
est la suivante:

STOP ou bien STOP C PAUSE ou bien PAUSE C


C : est une constante, soit caractère, soit entier positif de 1 à 5 chiffres.

Exemple :
som=0
I=1
pause 'Arrêter l_exécution'
do while (i<20)
som=som+i
I=i+1
end do
stop 'fin de l_exécution'
write(*,*) 'somme=',som
end

4- Data

Le rôle de DATA est d’alléger le programme et à éviter de faire plusieurs affectations, sa


syntaxe est :
DATA V1,V2,V3…Vn/C1,C2,C3…Cn

V1,V2… Vn : Variables à initialiser


C1,C2…Cn : Constantes.
Remarque : Dans le cas où nous avons plusieurs constantes identiques successives, il est
préférable d’utiliser un facteur de répétition

Exemple :

A=1
B=1
C=3 DATA A,B,C/2*1,3/ DATA A,B,C/1,1,3/
Deltat = B**2-4*A*C Deltat = B**2-4*A*C Deltat = B**2-4*A*C
Print *,deltat Print *,deltat Print *,deltat
End End End

17
Chapitre V : Sous-programme
I- Introduction
Un sous-programme est un programme complet et indépendant qui peut être utilisé ou
appelé par le programme principal ou d'autre sous-programme.

Les tâches principales d’un sous-programme sont :

 Recevoir les valeurs du programme appelant


 Effectuer les calculs
 Renvoyer les résultats des calculs

Il existe 2 types de sous-programmes:

 Le sous-programme FUNCTION,
 Le sous-programme SUBROUTINE.

II- Sous-programme fonction


1- Définition

C’est un programme indépendant, compilé indépendamment du programme principal. Il


comporte un nombre quelconque d’instructions et il renvoie un résultat unique au programme
principal. La forme générale est :

FUNCTION NOM (par1,par2,…,parn)


………….
NOM = …………(expression)
RETURN
END
Nom : nom de la fonction

par1,par2,…,parn : variables simples ou indicées

Remarques :

 Le nom de fonction doit figurer ou mois une fois dans le corps de sous-programme, soit à
gauche du signe ‘=‘, ou bien dans la liste des variables à lire dans le sous-programme
 La dernière instruction d’un sous-programme fonction doit être l’instruction END
 La dernière instruction exécutable doit être RETURN, cette instruction transmet le
résultat numérique de la fonction au programme qui lui fait appel ainsi que le retour à ce
programme.

18
2- Appel du sous-programme fonction

Un sous-programme fonction est appelé par l’utilisation de son nom dans une expression :

nom (Arg1, Arg2 …, Argn)


Arg1, Arg2 …, Argn : Variables simples et peuvent être des constantes et des variables
indicées
Il est important que les arguments correspondent en nombre, genre, et dimension à la liste des
paramètres.
Exemple :

x1 = 1.25
x2 = 2.5
P. P

x3 = 5.
S = Som(x1,x2,x3)
Write(*,*) ‘s=‘,s
End
Function som (x, y, z)
Som = x+y+z
S.P

Return
End

3- Déclaration du sous-programme fonction

Elle doit se faire obligatoirement ou moins à deux endroits:

 Dans le sous-programme sous la forme : Type function nom (Par1,Par2,…Parn)


Exemple : integer function som(x,y,z)

 Dans le programme principal sous la forme : Type Nom


Exemple : Integer som

III- Sous-programme subroutine


1- Défintion

Une procédure (Subroutine) est une suite d’instructions regroupées sous un nom, elle prend en
entrée des paramètres (arguments) mais qui ne retourne rien. La forme générale est :

SUBROUTINE NOM (A, B, C)


…………
Expression
………….
RETURN
END

19
Nom : nom de la subroutine
par1,par2,…,parn : variables simples ou indicées

2- Appel du sous-programme subroutine

L’appel d’un sous-programme subroutine se fait par l’ordre CALL sous forme suivant:

Call nom (Arg1, Arg2 …, Argn)


Arg1, Arg2 …, Argn : Variables simples et peuvent être des constantes et des variables
indicées
Exemple :
******Programme principal******
integer z
n=2
Call clim(n)
Z=n+2
Call clim(z)
End
******Sous programme subroutine******
Subroutine clim(n)
Integer i,n
Do i=1,n
Write(*,*) ‘il fait beau’
End do
Return
End

20
Chapitre VI : Fichiers
I- Introduction
1- Définition

Un fichier est un composé d’un ensemble d’enregistrement désigné par un nombre naturel
appelé numéro d’unité logique. Un fichier avant qu’il soit utilisé il faut l’ouvrir par
l’instruction Open sous la forme :

Open (n, Liste)

n : Constante ou variable entière, représente le numéro d’unité logique

Liste: suite d’option du genre ‘mot clé’, représente des expressions séparées par des virgules

2- Le type d’option

a. File= ‘nom’

nom : nom du fichier qui présente une chaine de caractère sous forme d’une constante ou
d’une variable

Exemple : Open (5, file = ‘resultat.dat’)


b. Status= ‘expression’

expression : ‘new’ si le fichier n’existe pas et il est créé ou ‘old’ si le fichier existe déjà.

Exemple : Open (5, File = ‘resultat.dat’, Status = ‘new’)

II- Fermeture d’un fichier


La fermeture d’un fichier se fait par l’instruction close sous forme suivant:

Close (n)

Cette instruction permet de rompre le lien entre l’unité logique et le fichier physique associé
en provoquant une déconnexion de l’unité logique et fermeture de fichier physique.

III- Entrée-sortie dans un fichier


1- Ecriture dans un fichier

On utilise l’instruction write en spécifiant le numéro logique attribué au fichier sur lequel on
veut écrire

21
Write(n,*) Liste_var

2- Lecture dans un fichier

On utilise l’instruction read en spécifiant le numéro logique attribué au fichier à partir duquel on veut
lire.
Write(n,*) Liste _var

Exemple : Un programme qui affiche 20 éléments d’un tableau dans un fichier

Dimension A(20)
Open(10,file = affichage.dat’,status=‘new’)
Do i = 1,20
Read(*,*) A(i)
End do
Write(10,*) (a(i),i=1,20)
Close(10)
end

22

Vous aimerez peut-être aussi