Académique Documents
Professionnel Documents
Culture Documents
ET PROGRAMMATION
2ème Année Physique
2020 – 2021
W.L.Rahal
11/19/2021
1
PROGRAMME
Chapitre 1: La programmation en Fortran
11/19/2021 3
1. Types de langages informatiques
Program Nom_du_prg
Déclarations
Instructions
exécutables
End
11/19/2021 5
2.1. Déclaration
des variables
un Identificateur (nom )
Déclaration
un type (entier, réel, caractère…)
6
2.1.1. Identificateur d’une variable:
Exemples:
X, y, sOmme, racine_carree, z2r, A2343…etc.
11/19/2021 7
2.1.2. Type d’une variable:
8
2.1.3. Instruction IMPLICIT NONE
variables.
11/19/2021 9
2.1.4. Exemples de déclarations de variables (1)
Les entiers
◦ Integer a
◦ Integer::a=5
◦ Integer::a=7 , b=5 , c=8
Les réels
◦ Real x
◦ Real :: x=5.3 , y=6.9 , z= 4.9E-3
◦ Double precision :: r=1.5d2
Les complexes
◦ Complex :: p=(5.2 , 9) , m=(2 , 4)
11/19/2021 10
2.1.4. Exemples de déclarations de variables (2)
Les caractères
◦ Character adresse
◦ Character :: adresse=‘ cité 5 juillet, 27000 ‘
◦ Character * 30 :: adresse=‘ cité 5 juillet, 27000 ‘
◦ Character (LEN=30):: adresse=‘ cité 5 juillet, 27000 ‘
11/19/2021 11
2.1.5. Les constantes
11/19/2021 12
2.1.6. Remarques importantes
11/19/2021 13
2.2. Les opérateurs (1/2)
Les opérateurs arithmétiques Les opérateurs relationnels
11/19/2021 14
2.2. Les opérateurs (2/2)
Les opérateurs logiques L’opérateur de concaténation
Exemple:
Character(len=10)::ch=‘‘BON’’
Ch=ch //‘‘JOUR’’ ! Résultat erroné
Ch= TRIM(ch) // ‘‘JOUR’’ ! Valide
11/19/2021 15
2.2.1. Priorité des opérateurs
12 * 5 + 5 / 5 – 5 ** 2
Réponse: 36.
10 / 5 – 2 * 8 ** 2 * 3 / 2
+2
Réponse: - 188
11/19/2021 16
3. LES INSTRUCTIONS DE CONTROLE
11/19/2021 17
3.1. L’instruction IF
3.1.1. CAS D’UN CHOIX SIMPLE:
if ( Expression_logique) then
… ! Instructions exécutées quand l’expression logique est vraie
Else
… ! Instructions exécutées quand l’expression logique est fausse
End if
Dans le cas où la partie introduite par le else n’existe pas:
if ( Expression_logique) then
… ! Instructions exécutées quand l’expression logique est vraie
End if
11/19/2021 18
3.1. L’instruction IF
EXEMPLES:
if (delta>=0) then
Write(*,*) ‘‘L’equation admet des solutions reelles’’
Else
Write(*,*) ‘‘L’equation admet des solutions complexes’’
End if
if ( carac==‘bonjour’) then
Carac = ‘‘Bonne journee’’
Write(*,*) carac
End if
11/19/2021 19
3.1.2. CAS D’UNE INSTRUCTION IF IMBRIQUÉE:
if ( Expression1) then
… ! Expression1 vraie
if ( Expression2) then
… ! Expression1 Expression2 vraies
Else
… ! Expression1 vraie, Expression2 fausse
End if
Else
… ! Expression 1 fausse
End if
11/19/2021 20
EXEMPLE
if ( delta.GE.0) then
Write(*,*) " Le discriminant est positif "
if ( delta.EQ.0) then
Write(*,*) "Une solution double "
Else
Write(*,*) " Deux solutions reelles "
End if
Else
Write(*,*) ‘’Discriminant negatif, deux solutions complexes’’
End if
11/19/2021 21
3.1.3. L’INSTRUCTION ELSE IF:
if ( Expression_logique_1) then
… ! Instructions exécutées quand l’expression logique1 est vraie
Else if ( Expression_logique_2) then
… ! Instructions exécutées quand l’expression logique2 est vraie
Else if ( Expression_logique_3) then
… ! Instructions exécutées quand l’expression logique3 est vraie
Else
… ! Instructions exécutées quand toutes les expressions
logiques ! précédantes sont fausses
End if
11/19/2021 22
EXEMPLE
if (age<3) then
Write(*,*) "Nourisson"
Else if (age<13) then
Write(*,*) "Enfant"
Else if (age<18) then
Write(*,*) "Adolescent"
Else if (age<80) then
Write(*,*) "Adulte"
Else
Write(*,*) "Personne agée"
End if
11/19/2021 23
3.2. L’INSTRUCTION SELECT CASE
REMARQUES:
SELECT CASE (Expression)
1. (Expression) peut être de type:
CASE (sélecteur1) Integer, logical ou character.
Instructions1
CASE (sélecteur2) 2. Les sélecteurs doivent être du
Instructions2 même type que (expression).
CASE (sélecteur3)
Instructions3 3. L’ordre des instructions CASE
CASE (sélecteur4) n’est pas important.
Instructions4
CASE DEFAULT 4. Le sélecteur peut comporter:
Instructions5 • Une seule valeur case(5)
• Un intervalle case (2:5)
END SELECT case(:9) case (2:)
• Une liste case (7, 9:45, 90:)
• Une variable case (n)
11/19/2021 24
EXEMPLE
11/19/2021 25
3.3. Boucle avec compteur
Remarques:
• Variable est de type entier
Exemple:
DO i = 1, 5 , 2
x=x+1
END DO
11/19/2021 26
3.4. Boucle sans compteur
(DO WHILE)
Remarques:
• Répétition conditionnelle.
Exemple:
DO WHILE ( somme <10)
somme= somme +1
END DO
11/19/2021 27
3.4. Boucle DO infinie
DO
! Bloc d’instructions
END DO
Exemple:
DO
somme= somme +1
END DO
11/19/2021 28
3.5. Autres instructions
11/19/2021 29
4. LES TABLEAUX
11/19/2021 30
4. Les tableaux
Un tableau est un ensemble d'éléments de même type
désignés par un seul identificateur.
Pourquoi?
11/19/2021 31
4.1 Déclaration des tableaux
TYPE, DIMENSION (expr1,...,exprn) :: nom_tab
! Avec : n<=7
11/19/2021 32
4.2. Initialisation des élements d’un tableau
Utiliser la boucle do
INTEGER, DIMENSION(10) :: tableau
INTEGER :: indice
DO indice = 1, 10, 1
tableau (indice) = indice * 2
END DO
ou bien:
tableau = (/ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 /)
4.3. Exemples de lecture des éléments d’un tableau
Do i=1,10
Write (*,*) ‘’Donner l’element ‘’ ,i , ‘’du vecteur’’
Read(*,*) x(i)
Enddo
Do i=1,5
Do j=1,3
Write (*,*) ‘’Donner l’element ‘’ ,i ,j , ‘’de la matrice’’
Read(*,*) x(i,j)
Enddo
Enddo
11/19/2021 34
4.4. L’instruction WHERE
C’est une instruction applicable aux tableaux.
WHERE (Expression_Logique_tableau)
Instructions
ELSE WHERE
Instructions
END WHERE
Forme simplifiée:
WHERE (Expression_Logique_Tableau) Instructions
Exemple:
WHERE (a.LT.0.0) a=0.0
Met tous les éléments négatifs du tableau à 0
4.4. L’instruction WHERE
Exemple:
36
11/19/2021
5. Les entrées, les sorties, les formats.
5.1. LES ENTREES:
Pour lire des données au clavier, on peut utiliser le format par défaut
(format libre) :
read (*,*) variable
Ou bien
read*, variable
(*,*)
Périphérique Format
11/19/2021 37
5.3. Les formats
5.3.1. Le format libre:
Par défaut:
ENTIERS: 11
REAL : 14.6
DOUBLE PRECISION 23.15
Gabarit: 14,
Attention: REAL 14.6 6 après la virgule,
(14-6) partie entière point décimal inclue
11/19/2021 38
5.3.2. L’écriture formatée:
11/19/2021 39
Autre exemple:
program cours
! Ecriture formatée avec étiquette
WRITE (*, 10) (n, SQRT(real(n)),n = 1, 20)
10 FORMAT (I5, F8.4)
! Ecriture formatée sans étiquette
WRITE(*,'(F12.6)') 2.5
end
RECAPITULATIF:
• i: Entiers
• F: Réel en notation flottante
• E: Réels en notation exponentielle.
• A: Chaine de caractères
11/19/2021 40
6. Les fonctions et subroutines
6.1. Les Subroutines
Une subroutine est un bloc d'instructions appelable du prg.
Elle est définie par :
Un nom
11/19/2021 41
6.1. 1. Appel d'une subroutine
Très important
Les types des arguments v1, v2, v3,... doivent
correspondre à ceux des paramètres
formels pf1, pf2, pf3,...
11/19/2021 42
6.1.2. Exemple de subroutine
subroutine polar(x, y, r, theta)
Écrire une subroutine qui calcule les
real x, y, r, theta
coordonnées polaires associées à
des coordonnées cartésiennes (x,y).
real pi , temp
pi=4*atan(1) !calcul de pi
r=sqrt(x**2+y**2)
temp=atan(y/x)
if (x.gt.0) then
theta=temp
else if (x.lt.0) then
theta=-temp
else if (x.eq. 0) then
Program test_sub
if (y.ge.0d0) then
real a, b, rho, phi theta=pi/2
... else
call polar (a, b, rho, phi) theta=-pi/2
... endif
end endif
return
end 11/19/2021 43
6.2. Les fonctions
Une fonction identique à une subroutine, mais son nom contient
en plus une valeur.
on l'utilise à droite du signe = dans une instruction d'affectation.
Par exemple pi=4*atan(1)
Type function nomfonc (pf1, pf2, ...)
type pdf1
type pdf2
...
déclarations des variables locale
...
instructions exécutables
...
return
end
11/19/2021 44
6.2.1. Exemple de fonction
Fonction qui calcule le rayon-vecteur associé à un couple (x,y).
program test
real abscis, ordonn
real rayon
read(*,*) abscis, ordonn
r=rayon(abscis, ordonn)
write(*,*) r
end
11/19/2021 45
Fin du chapitre 1
11/19/2021 46