Algorithmes pour les travaux dirigés de Fortran

publicité
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 à 2 faire
écrire(1 + nombre d’éléments de census( :, j) strictement supérieurs à census(i, j))
fin pour
2
Algorithme 4 tropical_temp
entrer(Z(1), p, T )
pour i = 2 à n faire
(i)
Z(i) = Z(i − 1) + gR0 T (i−1)+T
ln p(i−1)
2
p(i)
fin pour
θ = T (p/pref )κ
pour i = 2 à n - 1 faire
(i) θ(i+1)−θ(i−1)
Sp (i) = − Tθ(i)
p(i+1)−p(i−1)
fin pour
écrire(Z, θ, Sp )
Algorithme 5 Attractor
entrer(n, x, y)
pour i = 1 à n faire
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
Téléchargement