TP
TP
TP
1
h constante de Planck h = 6.626 × 10−34 J s
k constante de Boltzmann k = 1.380 × 10−23 JK −1
c vitesse de la lumière c = 3.000 × 108 m s−1
• Éditer le fichier suivant, produit.f90 en fortran 90. À chaque question, prendre soin de
faire une copie en incrémentant le nom de façon à conserver toutes les versions.
module m prod !=> nom du fichier .mod
implicit none
contains ! procédures de module
function prod(x, y)
integer :: prod
integer, intent(in) :: x, y
integer :: z ! locale
z=x*y
prod = z ! valeur de retour
return ! sans valeur
end function prod
end module m prod
program produit
use m prod ! relit m prod.mod
! ce qui rend visible l’interface
integer :: a1, b1, a2, b2
integer :: p
write(*,*) ”Saisir 4 entiers a1,b1,a2,b2”
read(*,*) a1, b1, a2, b2
! deux appels dans une expression
p = prod(a1, b1) + prod(a2, b2)
write(*,*) ”a1*b1 + a2*b2 = ”, p
end program produit
1. Ce programme fait appel à une fonction prod qui ne modifie pas ses arguments et rend une
valeur à l’appelant. Compiler le fichier, observer les fichiers créés. Tester ce programme.
Modifier la fonction prod pour qu’elle n’utilise plus de variable locale z et tester.
2. Déclarer la variable p en tant que réel real en fortran dans le programme principal. Ex-
pliquer les comportements à la compilation et à l’exécution.
2
3. En conservant p réel dans chaque langage, déclarer les variables a1, b1, a2 et b2 en tant
que réels dans le programme principal. Expliquer les comportements à la compilation et
à l’exécution.
4. Modifier la fonction prod de manière à ce que le programme se compile sans avertissement
lorsque a1, b1, a2 et b2 sont déclarés réels dans le programme principal. Tester de nouveau.
Exercice 4 : Diffusion de particules (devoir)
3
5. Fichier diffus5.f90 ou diffus5.c
Écrire une fonction moy qui calcule la moyenne des positions des n part particules à un
instant donné. Écrire de même une fonction var qui calcule leur variance (elle appellera
moy) à un instant donné. On donne l’interface et les prototypes communs de moy et var:
en fortran :
real function moy(x)
real, dimension(:), intent(?) :: x
end function moy
en C :
float moy(int n part, float * x);
Afficher la moyenne et la variance des positions de n part=1000 particules au bout de
n step=500 pas de temps. Comparer aux valeurs théoriques. La variance théorique au
bout de n step pas est n step/3.