Vous êtes sur la page 1sur 5

UNIVERSITE HASSAN II DE ‫جامعة الحسن الثاني بالدار‬

CASABLANCA Faculté des ‫البيضاء‬


Sciences Aïn Chock
‫كلية العلوم عين الشق‬

TD/TP N°1 Rappels sur le langage Fortran

Exercice 1: (ordre de priorité des calculs, les fonctions internes, ouverture des fichiers,
les différents types d’objets et les boucles)

Ecrire un programme fortran qui calcul la valeur suivante de y :

2
1   x 1
y e x  tg  
x2  1  x  1
pour x=0.3835
1- Introduire la valeur de x dans le programme.
2- Lire la valeur de x sur l’écran.
3- Lire la valeur de x à partir d’un fichier et écrire le résultat y dans un autre fichier.
4- Ecrire le résultat obtenu avec 5 chiffres après la virgule
5- Refaire les calculs en double précision.
6- Exécuter le programme pour −6 ≤ 𝑥 ≤ 6 avec ∆𝑥 = 0.1

Exercice 2: (Les différentes structures conditionnelles)

Calculer la valeur de y pour une valeur donnée de x



 ex si 6 x  0

y   si x0
 1
 si 0 x6
 x

Exécuter le programme pour les valeurs suivantes de x : -0.3561, 0, et 2.5618

Exercice 3 : (Branchement conditionnel externe et interne dans une boucle)

 Ecrire un programme qui permet de calculer la somme suivante :


100
1 n
σ=∑ (2)
n=0

 Calculer σ pour n# 5
 Introduisez un test d’arrêt des calculs lorsque 𝜎 ≤ 1.99
UNIVERSITE HASSAN II DE ‫جامعة الحسن الثاني بالدار‬
CASABLANCA Faculté des ‫البيضاء‬
Sciences Aïn Chock
‫كلية العلوم عين الشق‬

Exercice 4 : (Les tableaux et les matrices)

 Ecrire un programme qui permet de calculer le produit scalaire et le produit vectoriel des deux
vecteurs suivants :


⃗ = 2.75𝑖 − 0.125𝑗 + √2𝑘
𝑉

𝑤 ⃗
⃗⃗ = 0.15𝑖 − 1.3𝑗 + ln⁡(3)𝑘

 Ecrire un programme qui calcul la somme des deux matrices suivantes, la matrice transposée et la
trace de la matrice somme:

0.75 −2.1 3
𝐴 = 2.3 1.5 5.2
−1 3 0.25

1.15 −1.3 2
𝐵 = 1.25 1.5 0.55
−2.5 2.1 0.75
UNIVERSITE HASSAN II DE ‫جامعة الحسن الثاني بالدار‬
CASABLANCA Faculté des ‫البيضاء‬
Sciences Aïn Chock
‫كلية العلوم عين الشق‬

Corrigé du TD/TP N°1

Exercice 1 :

Program rappels
! Rappels sur le langage fortran
Implicit none ; double precision x,y,p
Open(1,file=’don.dat’) ; open(2,file=’res.dat’)
Do 10 x=-5,5,0.1
Y=(1.d0/dsqrt(x**2+1.d0))-(dexp(-2.d0*pi/x))+dtan((x-1.d0)/(x-1.d0))
Write(2,150)x,y
10 continue
150 format(2(215.5,2x))
End

Exercice 2 :

Program calcul ; implicit none ; real x,y,pi ; pi=4.0*atan(1.0)


Read(*,*)x
If(x>=-5.and.x<=0)then; y=exp(x); else if(x==0)then; y=pi; else if(x<=5)then; y=1./sqrt(x); end if
Write(*,*)x,y
Stop; end

Exercice 3:

Program exercice3; implicit none; real sigma; integer n


Sigma=0.
Do 10 n=0,100
! if(n==5)goto 10
If(sigma>=1.99)goto 50
Sigma=sigma+(1./2.)**n
10 continue
50 write(*,*)n,sigma
End

Exercice 4:

1ére partie:

Program calcul
real v(n),w(3),vectoriel(3),scalaire
open(1,file=’d_vect.dat’); open(2,file=’r_vect.dat’)
Read(1,*)(v(i),i=1,3);read(1,*)(w(i),i=1,3)
! calcul du produit scalaire
UNIVERSITE HASSAN II DE ‫جامعة الحسن الثاني بالدار‬
CASABLANCA Faculté des ‫البيضاء‬
Sciences Aïn Chock
‫كلية العلوم عين الشق‬

Scalaire=0.; do 10 i=1,3 ; scalaire=scalaire+v(i)*w(i)


10 continue
write(2,*)’prod scalaire=’, scalaire
! calcul du produit vectoriel
vectoriel(1)=v(2)*w(3)-v(3)-w(2);vectoriel(2)= -(v(1)*w(3)-v(3)*w(1));vectoriel(3)=v(1)*w(2)-v(2)-w(1)
write(2,400)(vectoriel(i),i=1,3)
format(3(f10.2,2x))
end

2éme partie:

program calcul
!ce effectue des opérations sur deux matrices:
real A(3,3),B(3,3),C(3,3),d(3,3)
open(1,file='don_matrice.dat'); open(2,file='res_matrice.dat')
!lecture des deux matrices
read(1,*)((a(i,j),j=1,3),i=1,3)
read(1,*)((b(i,j),j=1,3),i=1,3)
!calcul de la somme des deux matrices:
call somme(a,b,3,3,c);write(2,*)'La matrice somme';write(2,400)((c(i,j),j=1,3),i=1,3)
!calcul de la transposée de C:
call transpos(c,3,3,d);write(2,*)'transposée de la matrice C';write(2,400)((d(i,j),j=1,3),i=1,3)
!calcul de la trace de C:
call trace(c,3,tr);write(2,*)'la trace de C est:';write(2,*)'tr=',tr
400 format(3(f10.2,2x))
end

subroutine somme(a,b,m,n,c)
real a(m,n),b(m,n),c(m,n)
do 120 i=1,m
do 120 j=1,n
C(i,j)=a(i,j)+b(i,j)
120 continue
return
end

subroutine transpos(c,m,n,d)
real c(m,n),d(n,m)
do 150 i=1,m
do 150 j=1,n
d(i,j)=c(j,i)
150 continue
Return
end
UNIVERSITE HASSAN II DE ‫جامعة الحسن الثاني بالدار‬
CASABLANCA Faculté des ‫البيضاء‬
Sciences Aïn Chock
‫كلية العلوم عين الشق‬

subroutine trace(a,n,tr)
real a(n,n),tr
tr=0.
do 180 i=1,n
do 180 j=1,n
if(j==i)then
tr=tr+a(i,j)
end if
180 continue
return
end

Vous aimerez peut-être aussi