Algorithmes pour les travaux dirigés de Fortran –
Second semestre
Lionel GUEZ
3 octobre 2016
Algorithme 1 prime_stat, premier niveau
Déclarations :
tableau entier prime(n_primes)
tableau logique sieve(2 :n) ! vrai pour un nombre premier
Instructions :
entrer(n)
remplir sieve
prime = {i ∈ {2, . . . , n}, sieve(i) est vrai}
écrire(n_primes)
si n_primes 30 alors
écrire(prime)
fin si
écrire((prime(n_primes) - prime(1)) / (n_primes - 1))
pour i = 1 àn_primes - 1 faire
écrire(prime(i + 1) - prime(i))
fin pour
1
Algorithme 2 prime_stat, second niveau
Déclarations :
tableau entier prime(n_primes)
tableau logique sieve(2 :n) ! vrai pour un nombre premier
Instructions :
entrer(n)
! Crible d’Ératosthène :
sieve = vrai
pour i = 2 àE(n)faire
si sieve(i) alors
sieve(i2:n :i) = faux
fin si
fin pour
prime = {i ∈ {2, . . . , n}, sieve(i) est vrai}
écrire(n_primes)
si n_primes 30 alors
écrire(prime)
fin si
écrire((prime(n_primes) - prime(1)) / (n_primes - 1))
pour i = 1 àn_primes - 1 faire
écrire(prime(i + 1) - prime(i))
fin pour
Algorithme 3 population_2
Déclarations :
tableau entier department(n_dep)
tableau entier census(n_dep, 2) ! census( :, 1) pour 1999 et census( :, 2) pour
1990
Instructions :
entrer(department, census)
pour i = 1 à n_dep faire
si |census(i, 1) / census(i, 2) - 1| 5 % alors
écrire(department(i))
fin si
fin pour
entrer(my_dep)
si my_dep 95 alors
i = my_dep
sinon
i = my_dep - 871
fin si
écrire(census(i, 1) / census(i, 2) - 1)
pour j=1à2faire
écrire(1 + nombre d’éléments de census( :, j) strictement supérieurs à cen-
sus(i, j))
fin pour
2
Algorithme 4 tropical_temp
entrer(Z(1), p,T)
pour i = 2 ànfaire
Z(i) = Z(i1) + R
g0
T(i1)+T(i)
2ln p(i1)
p(i)
fin pour
θ=T(p/pref )κ
pour i = 2 àn - 1 faire
Sp(i) = T(i)
θ(i)
θ(i+1)θ(i1)
p(i+1)p(i1)
fin pour
écrire(Z, θ,Sp)
Algorithme 5 Attractor
entrer(n, x, y)
pour i=1ànfaire
x_prev = x
x = b y + f(x_prev)
y = - x_prev + f(x)
écrire(x, y)
fin pour
Algorithme 6 Age_in_days : algorithme principal
Déclarations :
entier year, month, d, h, mn, s ! date
réel jd1, jd2, r
Instructions :
entrer (year, month, d, h, mn, s) ! date de naissance
jd1 = julian_date(year, month, d, hour_with_fraction(h, mn, s))
year, month, d, h, mn, s = date courante
jd2 = julian_date(year, month, d, hour_with_fraction(h, mn, s))
r = jd2 - jd1
d = E(r)
r = (r - d) * 24 ! en h
h = E(r)
r = (r - h) * 60 ! en mn
mn = E(r)
s = E((r - mn) * 60)
écrire (d, h, mn, s)
3
Algorithme 7 Age_in_days : fonction julian_date
Déclarations :
fonction julian_date(year, month, day, hour)
réel juliandate
données entier year, month, day
réel donnée hour
entier a, y, m
Instructions :
a = . . .
y = . . .
m = . . .
julian_date = (day + . . .- 32045) + (h - 12) / 24
Algorithme 8 Age_in_days : fonction hour_with_fraction
Déclarations :
fonction hour_with_fraction(h, mn, s)
réel hour_with_fraction
données entier h, mn, s
Instructions :
hour_with_fraction = h + (mn + s / 60) / 60
4
1 / 4 100%