Académique Documents
Professionnel Documents
Culture Documents
1ère G.E.E
-Fortran -
Réalisé par:
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 :
Exemple :
5. Constante logique
.TRUE.
.FALSE.
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 : '
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.
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 :
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
Elles doivent obligatoirement figurer dans une déclaration de type DOUBLE PRECISION
en tête du programme.
5
Exemple :
Elles doivent obligatoirement figurer dans une déclaration de type COMPLEX en tête du
programme.
Exemple :
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 :
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.
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)
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 :
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.
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./
8
Chapitre III : Opérateurs et expressions
I- Opérateurs
1- Opérateurs arithmétiques
Ils permettent l’exécution des opérations usuelles
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
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
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
11
Chapitre IV : Instructions
I- Instructions de lecture et d’écriture
1- Instruction de lecture
2- Instruction d’écriture
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
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
Do I=n1,n2,n3 Do n I=n1,n2,n3
End do n continue
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
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
Cette instruction permet de faire un choix multiple entre différents blocs d’instructions à
réaliser. Sa syntaxe générale est la suivante:
Exemple :
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:
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
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.
Le sous-programme FUNCTION,
Le sous-programme SUBROUTINE.
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 :
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
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 :
19
Nom : nom de la subroutine
par1,par2,…,parn : variables simples ou indicées
L’appel d’un sous-programme subroutine se fait par l’ordre CALL sous forme suivant:
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 :
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
expression : ‘new’ si le fichier n’existe pas et il est créé ou ‘old’ si le fichier existe déjà.
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.
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
On utilise l’instruction read en spécifiant le numéro logique attribué au fichier à partir duquel on veut
lire.
Write(n,*) Liste _var
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