0% ont trouvé ce document utile (0 vote)
155 vues5 pages

TPn°1 (Rappels Fortran)

Le document présente quatre exercices sur le langage Fortran. Les exercices couvrent des concepts comme les fonctions, les structures conditionnelles, les boucles, les tableaux et les matrices.

Transféré par

afkir hamza
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
155 vues5 pages

TPn°1 (Rappels Fortran)

Le document présente quatre exercices sur le langage Fortran. Les exercices couvrent des concepts comme les fonctions, les structures conditionnelles, les boucles, les tableaux et les matrices.

Transféré par

afkir hamza
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

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