Vous êtes sur la page 1sur 38

FORTRAN

Niveau : 1er Année SCIENCES DE LA MATIÈRE


Année universitaire : 2019/2020

1
HISTORIQUE DU FORTRAN
 Le fortran (FORMULA TRANSLATION) est le premier langage
informatique de haut-niveau.
 Né à la fin des années 1950 sous l’impulsion de John Backus 1.

 La mise à jour du standard à la fin des années 1970 a apporté


d’énormes améliorations en particulier dans le traitement des
chaînes de caractères avec le fortran 77.
 Mais c’est avec fortran 90, dont la norme fut particulièrement
longue à négocier, qu’est
 un langage très utilisés dans le domaine du calcul numérique par
l'industrie et le monde de la recherche. La raison principale est les
milliers de bibliothèques contenant des millions de lignes de code
Fortran qui ont été développées, testées et validées depuis plus de
2
30 ans. C'est un investissement lourd qu'il faut continuer d'exploiter.
STRUCTURE D’UN PROGRAMME (1)

PROGRAM nom_du_programme

[instructions de spécification (Déclaration)]

[instructions exécutables]

CONTAINS

[procédures internes]

3
END PROGRAM nom_du_programme
STRUCTURE D’UN PROGRAMME(1)
 L'instruction PROGRAM est facultative,
mais conseillée.
 L'instruction END qui génère l'arrêt du
programme est obligatoire.
 Les instructions de
spécification(Déclaration) sont des
instructions de déclaration, des définitions de
type, des blocs INTERFACE.
 'instruction CONTAINS indique la présence
4
d'une ou plusieurs procédures.
STRUCTURE D’UN PROGRAMME(2)
 Instructions de déclaration(de spécification ):
 Déclaration des objets utilisés
 Informations utiles a la compilation
 Toujours précéder les instructions exécutables
 Instructions exécutables:
 Opérations mathématiques
 Lecture/écriture de fichiers
 Appel a des sous-programmes
…
5
LE BLOC DÉCLARATION
 le bloc déclaration des variables sert à indiquer à la machine
quel est le type de chaque variable utilisée afin de réserver la
place en mémoire nécessaire.
déclaration signification ex. d’affectation

integer :: n,i Entier n=10


real :: x,y Réel x=1.0e-5, y=1.0
complex :: z Complexe z=cmplx(1.0,2.5e3)
character :: c Caractère c=’d’
logical :: b booléen b=.true.
6
DÉCLARATION DES VARIABLES
type [attributs ] [::] identificateur [ = valeur initiale ]
 TYPENUM[(paramètres)], [les attributs] :: liste des vars
 LOGICAL, [les attributs] :: liste des vars
 CHARACTER(taille[,paramètres]), [les attributs] :: liste
des vars
Les attributs les plus courants sont les suivants :
 PARAMETER rend la variable non modifiable

constante) ;
 DIMENSION(dimensions) en fait un tableau avec

des dimensions données

7
DÉCLARATION DES VARIABLES
Par défaut, les variables dont l’identificateur commence par
les caractères I à N sont de type INTEGER.
Toutes les autres sont de type REAL.
L’instruction IMPLICIT NONE change cette règle car elle
impose à l’utilisateur la déclaration de chaque variable.
- Cette instruction est vivement recommandée car elle
permet la détection d’un certain nombre d’erreurs à la
compilation.
• IMPLICIT NONE se place avant les déclarations des
variables,
• L’instruction ne s’applique qu’à l’unité de programme qui
la contient.
8
LES IDENTIFICATEURS (1)
 caractères du clavier permettant de nommer une
variable ou un autre élément du programme ;
 suite de 1 à 31 caractère alphanumériques parmi :
 lettres sans accents majuscules et minuscules,
chiffres, caractère (souligné) ;
 le 1er caractère doit être une lettre ;
 – Fortran n’est pas sensible à la casse (les
majuscules et minuscules ne sont pas différentiées
)
9
LES IDENTIFICATEURS (2)
→ les identificateurs suivants sont valides :
constante_gaz

pi2

SM2020

→ les identificateurs suivants ne sont pas valides :


accentué

avec espace

Il_y_a_plus_de_trente_et_un_caracteres

_souligne_devant

1_chiffre_devant

nom#alphanumerique 10
CONTINUATION DE LIGNE : CARACTÈRE &
Il est possible de couper la ligne en
morceaux en Plaçant & en fin de première
ligne et & au début de la ligne suivante :
Exemple:

souligne_devant &
& =65

11
LES COMMENTAIRES : SYMBOLE !

• Tout ce qui est à droite du symbole ! est ignoré par le


compilateur
• Les commentaires dans le programme, c.-`a-d. du texte
qui en explique le fonctionnement
•Le ! peut être placé n’importe où dans la ligne (au début,
au milieu, à la fin), et à n’importe quel endroit du
programme
12
OPÉRATEUR D’AFFECTATION

variable = expression
Où expression est une expression arithmétique,
logique ou relationnelle.
• Une valeur de type CHARACTER ne peut pas
être affectée à une variable numérique ou vice-
versa,
• Une valeur de type INTEGER peut être affectée
à une variable de type REAL,
• Une valeur de type REAL peut également être
affectée à une variable de type INTEGER. Mais
dans ce cas, la valeur est alors tronquée en 13

supprimant la partie fractionnaire.


LES ENTRÉES-SORTIES ÉCRAN/CLAVIER(1)
 lecture
au clavier de la valeur d’une variable,
quelque soit son type :
READ∗,variable
 écriture
à l’écran d’un message et/ou de la valeur
d’une variable
PRINT∗, ’bonjour’
PRINT∗,x
PRINT∗, ’ il est ’ ,h, ’heures’

14
LES ENTRÉES-SORTIES ÉCRAN/CLAVIER (2)

15
LES OPÉRATEURS
 Opérateurs arithmétiques
 + - * / ** a = b + c*b**2
 Opérateurs de comparaison

 == /= IF (a==3) THEN
 Opérateurs d’ordre (uniquement numérique)

 < > <= >= IF (a<=3) THEN


 Opérateurs logiques

 .NOT. .AND. .OR. .EQV. .NEQV.


 IF (.NOT.(a==3).AND.(MyString/=’’bonjour’’)) THEN

 Opérateur de concaténation

 // print*, "Bon" // "jour" 16


OPÉRATEURS ARITHMÉTIQUES

17
OPERATEURS LOGIQUES

18
BRANCHEMENT CONDITIONNEL
LE TEST IF
 syntaxe générale :
[ nom : ] i f ( expression logique ) then
instructions
[ e l s e i f ( expression logique ) then
instructions ]
[else
instructions ]
End i f [ nom ]
19
BRANCHEMENT CONDITIONNEL
EXPRESSION LOGIQUE

 C’est une combinaison d’un ou plusieurs


tests sur des variables, ainsi que des trois
opérateurs logiques
 les variables de type logical peuvent aussi
être utilisées
 le else if et le else sont optionnels

20
BRANCHEMENT CONDITIONNEL :LE TEST IF
Exemple

Y=x ln x si x≠0
0 sinon

i f ( x /=0.0) then
y = x∗log ( x )
else
y=0.0 21

end i f
BRANCHEMENT CONDITIONNEL :LE TEST IF

0 si x<0 ou x>2

Y= √x si x∈[0,1]
1 si x>1

rac : i f ( x<0.0. or . x>2.0) then


y=0.0
e l s e i f ( x<=1.0) then
y=sqrt ( x )
else
y=1.0 22

end if rac
BRANCHEMENT CONDITIONNEL :CHOIX MULTIPLE

IF
 if ( x < 3) then

 x=x+3

 elseif ( x > 0 ) then

 x=0

 else

 x=x+3

 endif

23
ITÉRATIONS : STRUCTURE DO
FORME ÉNUMÉRATIVE (NOMBRE
D’ITÉRATIONS FIXÉ)

[ nom : ] do variable= debut , fin [ ,


pas ]
instructions
end do [ nom ]

24
ITÉRATIONS : STRUCTURE DO
FORME ÉNUMÉRATIVE (NOMBRE D’ITÉRATIONS FIXÉ)
 var : variable de type INTEGER
 début, fin, incrément : expressions de type INTEGER
• si incrément est omis, il est pris par défaut égal à 1.
 Remarques :
• var doit être déclarée dans le programme même si elle
n’apparaît pas
dans bloc (variable de contrôle qui compte les tours)
• var ne doit pas être modifiée dans le bloc régit par la boucle
• Si fin < début, incrément est un entier négatif (sinon le
programme n’entre pas dans la boucle)

25
26
ITÉRATIONS : STRUCTURE DO
FORME ÉNUMÉRATIVE (NOMBRE
D’ITÉRATIONS FIXÉ)
exemple :
calcul de s = 1 + 3 + 5 + 7 + 9

integer : : i , s
...
s=0
do i=1 ,9 ,2
s=s+i
end do 27
ITÉRATIONS : STRUCTURE DO
FORME ÉNUMÉRATIVE (NOMBRE
D’ITÉRATIONS FIXÉ)

exemple : calcul de y =∑ Xi/i , i=1;n


integer : : i , n
real::x,y
...
y=0.0
do i=1,n
y=y+x∗∗i/i
end do 28
ITÉRATIONS : STRUCTURE DO
FORME INFINIE : ON NE SORT QU’AVEC
L’INSTRUCTION EXIT
[ nom : ] do
instructions
if ( condition ) then
exit [ nom ]
endif
instructions 29

end do [ nom ]
ITÉRATIONS : STRUCTURE DO
FORME INFINIE : ON NE SORT QU’AVEC
L’INSTRUCTION EXIT
Exemple
do
read ∗ , nombre
i f ( nombre==0) then
EXIT
end i f
somme = somme + nombre
end do
30
ITÉRATIONS : STRUCTURE DO
FORME CONDITIONNELLE : ARRÊT SI
LA CONDITION SPÉCIFIÉE EN DÉBUT DE
BOUCLE EST SATISFAITE

[ nom : ] do whi le ( condition )


instructions
end do [ nom ]

31
ITÉRATIONS : STRUCTURE DO
FORME CONDITIONNELLE : ARRÊT SI
LA CONDITION SPÉCIFIÉE EN DÉBUT DE
BOUCLE EST SATISFAITE

exemple :
reponse=’ oui ’
lecture : do while ( reponse==’ oui ’ )
print ∗ , ’ continue r ? ’
read ∗ , reponse
end do lecture 32
EXEMPLE DES BOUCLES

33
EXEMPLE BOUCLE POUR

34
EXEMPLE BOUCLE POUR
Somme des nombres de 1 à n

35
EXEMPLE BOUCLE POUR
 Sommes des nombres impaires

36
EXEMPLE BOUCLE TANT QUE

i=1
s=0
do while (i<=n)
s=s+i
i=i+1
end do
print *,s
37
EXEMPLE BOUCLE RÉPÉTER

do
………………
……………..…
if ( condition ) then
Exit
s=0
End if i=1
End do do
s=s+i
i=i+1
if ( i>n) then
exit
end if
end do
print*,s 38

Vous aimerez peut-être aussi