Programmation en Fortran : 0.3cm Analyse de complexité

publicité
Généralités Pseudocode Complexité
P ROGRAMMATION EN F ORTRAN :
Analyse de complexité
Hacène Ouzia
Polytech’Paris UPMC
Sciences de la Terre (3 ème année)
Université Pierre et Marie Curie
Séance 2
2017
Hacène Ouzia
Programmation en Fortran
2017
1 / 40
Généralités Pseudocode Complexité
TABLE DES MATIÈRES
1
Généralités
Algoritmes
Opérations de base
2
Pseudocode
Instructions de test
Alternatives multiples
Boucles
Application
3
Hacène Ouzia
e
n
è
2
OU
c
a
H
Complexité
Théorie
Pratique
Applications
c
A
I
Z
7
1
0
Programmation en Fortran
2017
2 / 40
Généralités Pseudocode Complexité
Algoritmes Opérations de base
Table des matières
1
Généralités
Algoritmes
Opérations de base
2
Pseudocode
3
Complexité
c
Hacène Ouzia
A
I
Z
e
n
è
7
1
0
2
OU
c
a
H
Programmation en Fortran
2017
3 / 40
Généralités Pseudocode Complexité
Algoritmes Opérations de base
Algorithme
⌅
DÉFINITION A LGORITHME
A
I
Z
7
1
0
2
Un algorithme énonce une solution d’un problème sous la forme d’une série
d’opérations à effectuer.
⌅ C ATÉGORIES D ’ ALGORITHMES
e
n
è
OU
+ Algorithmes séquentiels
+ Algorithmes parallèles
c
a
H
+ Algorithmes distribués
c
Hacène Ouzia
Programmation en Fortran
2017
4 / 40
Généralités Pseudocode Complexité
Algoritmes Opérations de base
Algorithme
⌅
DÉFINITION A LGORITHME
A
I
Z
7
1
0
2
Un algorithme énonce une solution d’un problème sous la forme d’une série
d’opérations à effectuer.
⌅ C ATÉGORIES D ’ ALGORITHMES
e
n
è
OU
+ Algorithmes séquentiels
+ Algorithmes parallèles
c
a
H
+ Algorithmes distribués
c
Hacène Ouzia
Programmation en Fortran
2017
4 / 40
Généralités Pseudocode Complexité
Algoritmes Opérations de base
Algorithme
7
1
0
2
⌅ O PÉRATIONS Quelles opérations faut-il pour écrire 1 un algorithme ?
A
I
Z
+ Affectation
+ Condition
+ Boucles
OU
+ Fonctions (pour rendre la tâche plus agréable)
e
n
è
⌅ Que faut-il faire après ?
c
a
H
+ Validation
+ Optimisation (complexité)
c
1. Implémenter, Coder
Hacène Ouzia
Programmation en Fortran
2017
5 / 40
Généralités Pseudocode Complexité
Algoritmes Opérations de base
Algorithme
7
1
0
2
⌅ O PÉRATIONS Quelles opérations faut-il pour écrire 1 un algorithme ?
A
I
Z
+ Affectation
+ Condition
+ Boucles
OU
+ Fonctions (pour rendre la tâche plus agréable)
e
n
è
⌅ Que faut-il faire après ?
c
a
H
+ Validation
+ Optimisation (complexité)
c
1. Implémenter, Coder
Hacène Ouzia
Programmation en Fortran
2017
5 / 40
Généralités Pseudocode Complexité
Algoritmes Opérations de base
Algorithme
7
1
0
2
⌅ O PÉRATIONS Quelles opérations faut-il pour écrire 1 un algorithme ?
A
I
Z
+ Affectation
+ Condition
+ Boucles
OU
+ Fonctions (pour rendre la tâche plus agréable)
e
n
è
⌅ Que faut-il faire après ?
c
a
H
+ Validation
+ Optimisation (complexité)
c
1. Implémenter, Coder
Hacène Ouzia
Programmation en Fortran
2017
5 / 40
Généralités Pseudocode Complexité
Algoritmes Opérations de base
Algorithme
7
1
0
2
⌅ O PÉRATIONS Quelles opérations faut-il pour écrire 1 un algorithme ?
A
I
Z
+ Affectation
+ Condition
+ Boucles
OU
+ Fonctions (pour rendre la tâche plus agréable)
e
n
è
⌅ Que faut-il faire après ?
c
a
H
+ Validation
+ Optimisation (complexité)
c
1. Implémenter, Coder
Hacène Ouzia
Programmation en Fortran
2017
5 / 40
Généralités Pseudocode Complexité
Instructions de test Alternatives multiples Boucles Application
Table des matières
1
Généralités
2
Pseudocode
Instructions de test
Alternatives multiples
Boucles
Application
3
Hacène Ouzia
e
n
è
2
OU
c
a
H
Complexité
c
A
I
Z
7
1
0
Programmation en Fortran
2017
6 / 40
Généralités Pseudocode Complexité
Instructions de test Alternatives multiples Boucles Application
Instructions de test : C vs Fortran
A
I
Z
e
n
è
c
2
OU
c
a
H
F IGURE – Fortran
Hacène Ouzia
7
1
0
F IGURE – C
Programmation en Fortran
2017
7 / 40
Généralités Pseudocode Complexité
Instructions de test Alternatives multiples Boucles Application
Instructions de test : C vs Fortran
A
I
Z
e
n
è
c
2
OU
c
a
H
F IGURE – Fortran
Hacène Ouzia
7
1
0
F IGURE – C
Programmation en Fortran
2017
8 / 40
Généralités Pseudocode Complexité
Instructions de test Alternatives multiples Boucles Application
Instructions de test : Pseudo-code
I NSTRUCTIONS
1
Début
2
Condition
3
7
Si Condition alors
! Instructions à exécuter si la condition est vraie
sinon
! Instructions à exécuter sinon
Fin si
8
! Tests imbriqués ;
9
Si A alors
! La condition A est vraie
sinon
Si B alors
! La condition ¬A ^ B est vraie
sinon
! La condition ¬A ^ ¬B est vraie
Fin si
Fin si
4
5
6
11
12
13
14
15
16
17
18
Hacène Ouzia
Valeur d’une expression logique ;
A
I
Z
e
n
è
10
c
7
1
0
DE TEST
2
OU
c
a
H
Fin
Programmation en Fortran
2017
9 / 40
Généralités Pseudocode Complexité
Instructions de test Alternatives multiples Boucles Application
Application
A
I
Z
⌅ E XERCICE
7
1
0
2
OU
Ecrire un programme qui réalise la fonction caractéristique du sous-ensemble
2N de N, c.-à-d. :
⇢
1 si n 2 2N
(n) =
0 sinon
e
n
è
c
Hacène Ouzia
c
a
H
Programmation en Fortran
2017
10 / 40
Généralités Pseudocode Complexité
Instructions de test Alternatives multiples Boucles Application
Alternatives multiples : C vs Fortran
A
I
Z
e
n
è
c
2
OU
c
a
H
F IGURE – Fortran
Hacène Ouzia
7
1
0
F IGURE – C
Programmation en Fortran
2017
11 / 40
Généralités Pseudocode Complexité
Instructions de test Alternatives multiples Boucles Application
Alternatives multiples : Pseudo-code
A LTERNATIVES
1
2
Début
Valeur
4
5
6
A
I
Z
Valeur d’une expression arithmétique ;
Suivant Valeur Faire
Cas Valeur vaut un Faire
! Bloc du cas un
Fin cas
3
7
1
0
2
OU
Cas Valeur appartient à (1, 36) Faire
! Bloc du cas (1, 36)
Fin cas
e
n
è
7
8
9
c
a
H
Par défaut Faire
! Traitement par défaut
Fin cas
Fin suivant
10
11
12
13
14
MULTIPLES
Fin
Hacène Ouzia
c
Programmation en Fortran
2017
12 / 40
Généralités Pseudocode Complexité
Instructions de test Alternatives multiples Boucles Application
Conditionnelles à plusieurs choix
A
I
Z
⌅ E XERCICE
7
1
0
2
Ecrire un programme qui réalise la fonction suivante :
8
"Lundi", si n 2 7N
>
>
<
"Mardi", si n 2 7N + 1
J (n) =
...
>
>
:
"Dimanche", si n 2 7N + 6
e
n
è
c
Hacène Ouzia
OU
c
a
H
Programmation en Fortran
2017
13 / 40
Généralités Pseudocode Complexité
Instructions de test Alternatives multiples Boucles Application
Boucles définies : C vs Fortran
A
I
Z
e
n
è
c
2
OU
c
a
H
F IGURE – Fortran
Hacène Ouzia
7
1
0
F IGURE – C
Programmation en Fortran
2017
14 / 40
Généralités Pseudocode Complexité
Instructions de test Alternatives multiples Boucles Application
Boucles définies : Pseudo-code
B OUCLE
1
2
DÉFINIE
A
I
Z
Début
Pour i = 0 à n faire
! Corps de la boucle
3
Fin pour
5
! Avec un pas différent de 1;
Pour i =initiale à finale, pas = valeur faire
c
a
H
! Corps de la boucle ;
7
Fin pour
8
9
e
n
è
2
OU
4
6
7
1
0
Fin
Hacène Ouzia
c
Programmation en Fortran
2017
15 / 40
Généralités Pseudocode Complexité
Instructions de test Alternatives multiples Boucles Application
Boucles définies
A
I
Z
⌅ E XERCICES
7
1
0
2
Ecrire deux programmes calculant les deux fonctions suivantes :
OU
S (n) =
e
n
è
c
Hacène Ouzia
c
a
H
F (n) =
n
X
k7
k =1
n
Y
k
k =1
Programmation en Fortran
2017
16 / 40
Généralités Pseudocode Complexité
Instructions de test Alternatives multiples Boucles Application
Boucles indéfinies : C vs Fortran
A
I
Z
e
n
è
c
2
OU
c
a
H
F IGURE – C
F IGURE – Fortran
Hacène Ouzia
7
1
0
Programmation en Fortran
2017
17 / 40
Généralités Pseudocode Complexité
Instructions de test Alternatives multiples Boucles Application
Boucles indéfinies : Pseudo-code
B OUCLES
1
2
Début
Condition
e
n
è
! Corps de la boucle tant que
4
Fin tant que
5
Fin
c
Hacène Ouzia
2
OU
Valeur d’une expression logique ;
Tant que Condition faire
3
6
A
I
Z
INDÉFINIES
7
1
0
c
a
H
Programmation en Fortran
2017
18 / 40
Généralités Pseudocode Complexité
Instructions de test Alternatives multiples Boucles Application
Boucles indéfinies
A
I
Z
⌅ E XERCICE
7
1
0
2
Soit " une
p précision donnée. Ecrire un programme qui calcul une approximation de 2 à " près à l’aide de la méthode de Héron.
I
OU
Indication : utiliser la suite ci-dessous
⇣
(
un+1 = 12 un +
cè
ne
a
H
c
Hacène Ouzia
u0 = 1
2
un
⌘
Programmation en Fortran
, n 2 N⇤
2017
19 / 40
Généralités Pseudocode Complexité
Instructions de test Alternatives multiples Boucles Application
Résumé
⌅ O SSATURE D ’ UN
Algorithme 5 : Tâche réalisée par l’algorithme
A
I
Z
Entrées : ! Les entrées de l’algorithme
Sorties : ! Les valeurs de retour
1
2
Début
! Corps de l’algorithme ;
3
! ... Exemple ... ;
4
Si la vie est belle alors
e
n
è
2
OU
! Fais ce que t’as à faire
5
sinon
6
c
a
H
! Ne te plains pas et fais ce que t’as à faire
7
c
Fin si
8
9
7
1
0
ALGORITHME
Fin
Hacène Ouzia
Programmation en Fortran
2017
20 / 40
Généralités Pseudocode Complexité
Instructions de test Alternatives multiples Boucles Application
Application
A
I
Z
⌅ E XERCICE
7
1
0
2
OU
Soient a, b et c trois réels. Ecrire un algorithme pour résoudre dans C l’équation suivante :
ax 2 + bx + c = 0,
e
n
è
où x est une variable réelle.
c
Hacène Ouzia
c
a
H
Programmation en Fortran
2017
21 / 40
Généralités Pseudocode Complexité
Instructions de test Alternatives multiples Boucles Application
Application
Algorithme 6 : solutions de l’équation ax 2 + bx + c = 0
Entrées : a,b, c :: réels
Sorties : x1 , x2 :: complexes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Hacène Ouzia
A
I
Z
7
1
0
2
Début
Si a = 0 alors
SolutionEquationDegreUn(b,c);
Fin si
b2 4ac ;
Si
< 0 alors
p
p
b i
b+i
x1
, x2
;
2a
2a
sinon
Si
= 0 alors
b
x1
;
2a
sinon
p
p
b
b+
x1
, x2
;
2a
2a
Fin si
Fin si
Fin
e
n
è
c
OU
c
a
H
Programmation en Fortran
2017
22 / 40
Généralités Pseudocode Complexité
Théorie Pratique Applications
Table des matières
1
Généralités
2
Pseudocode
3
Complexité
Théorie
Pratique
Applications
c
Hacène Ouzia
A
I
Z
e
n
è
7
1
0
2
OU
c
a
H
Programmation en Fortran
2017
23 / 40
Généralités Pseudocode Complexité
Théorie Pratique Applications
Outils mathématiques
⌅ N OTATION G RAND O
Soit f 2 E = F (N, N)
A
I
Z
O+1 (f ) = {g 2 E : 9 > 0,9↵ > 0, 8x
OU
7
1
0
2
↵ : g (x)  f (x)}
g 2 ⇥ (f ) , f 2 O (g) et g 2 O (f )
e
n
è
⌅ E XEMPLE
O (1) = {. . . , 1, 8, 10103, . . .} ,
c
a
H
O (n) = {. . . , n, 1001n, . . . , 542000n, . . .} ,
En revanche
c
Hacène Ouzia
2n 2
/ O (n) .
Programmation en Fortran
2017
24 / 40
Généralités Pseudocode Complexité
Théorie Pratique Applications
Outils mathématiques
⌅ N OTATION G RAND O
Soit f 2 E = F (N, N)
A
I
Z
O+1 (f ) = {g 2 E : 9 > 0,9↵ > 0, 8x
OU
7
1
0
2
↵ : g (x)  f (x)}
g 2 ⇥ (f ) , f 2 O (g) et g 2 O (f )
e
n
è
⌅ E XEMPLE
O (1) = {. . . , 1, 8, 10103, . . .} ,
c
a
H
O (n) = {. . . , n, 1001n, . . . , 542000n, . . .} ,
En revanche
c
Hacène Ouzia
2n 2
/ O (n) .
Programmation en Fortran
2017
24 / 40
Généralités Pseudocode Complexité
Théorie Pratique Applications
Outils mathématiques
⌅ C LASSES
DE COMPLEXITÉ
+ Constante ! O (1)
+ Logarithmique ! O (log n)
+ Linéaire ! O (n)
e
n
è
+ n log n ! O (n log n)
+ Quadratique ! O n2
ac
+ Polynomiale ! O n
k
n
A
I
Z
7
1
0
2
OU
,k 2 N
+ Exponentielle ! O (2 )
cH
Hacène Ouzia
Programmation en Fortran
2017
25 / 40
Généralités Pseudocode Complexité
Théorie Pratique Applications
Applications
⌅ E XERCICE
A
I
Z
Montrer les propositions suivantes :
+ 8k
+ 8k
k
1:n +n 2O n
1 : nk + log (n) 2 O nk
e
n
è
+ n + sin (n) 2 O (n)
+
n
2
+ 8k
2 O n2
2
OU
c
a
H
n
1 : 2 + n 2 O (2n )
c
Hacène Ouzia
k
7
1
0
k
Programmation en Fortran
2017
26 / 40
Généralités Pseudocode Complexité
Théorie Pratique Applications
Complexité d’une instruction de base
⌅ C ODE C OMPLEXITÉ DES INSTRUCTIONS DE BASE
1
2
3
4
5
6
7
8
9
10
11
12
13
7
1
0
2
program complexiteDeclaration
implicit none
integer, parameter :: N = 45
real, dimension(N) :: RTableau
logical, dimension(N) :: LTableau
integer :: k
write(*,"(’ Entrer la valeur de k : ’)", advance=’no’)
read(*,*) k
k = 3*k + 67
write(*,"(’ La nouvelle valeur de k : ’)", advance=’no’)
write(*,*) k
stop "fin du programme ... "
end program
A
I
Z
e
n
è
c
OU
c
a
H
⌅ C OMPLEXITÉ : O (1)
Hacène Ouzia
Programmation en Fortran
2017
27 / 40
Généralités Pseudocode Complexité
Théorie Pratique Applications
Complexité d’une instruction de base
⌅ C ODE C OMPLEXITÉ DES INSTRUCTIONS DE BASE
1
2
3
4
5
6
7
8
9
10
11
12
13
7
1
0
2
program complexiteDeclaration
implicit none
integer, parameter :: N = 45
real, dimension(N) :: RTableau
logical, dimension(N) :: LTableau
integer :: k
write(*,"(’ Entrer la valeur de k : ’)", advance=’no’)
read(*,*) k
k = 3*k + 67
write(*,"(’ La nouvelle valeur de k : ’)", advance=’no’)
write(*,*) k
stop "fin du programme ... "
end program
A
I
Z
e
n
è
c
OU
c
a
H
⌅ C OMPLEXITÉ : O (1)
Hacène Ouzia
Programmation en Fortran
2017
27 / 40
Généralités Pseudocode Complexité
Théorie Pratique Applications
Complexité d’une instruction conditionnelle
⌅ C ODE C OMPLEXITÉ D ’ UNE CONDITION
1
2
3
4
5
6
7
A
I
Z
Condition = ... ! Complexite en O(h)
if Condition then
... ! Complexite en O(f)
else
... ! Complexite en O(g)
end if
e
n
è
c
7
1
0
2
OU
c
a
H
⌅ C OMPLEXITÉ : O (h) + O (max {f , g})
Hacène Ouzia
Programmation en Fortran
2017
28 / 40
Généralités Pseudocode Complexité
Théorie Pratique Applications
Complexité d’une instruction conditionnelle
⌅ C ODE C OMPLEXITÉ D ’ UNE CONDITION
1
2
3
4
5
6
7
A
I
Z
Condition = ... ! Complexite en O(h)
if Condition then
... ! Complexite en O(f)
else
... ! Complexite en O(g)
end if
e
n
è
c
7
1
0
2
OU
c
a
H
⌅ C OMPLEXITÉ : O (h) + O (max {f , g})
Hacène Ouzia
Programmation en Fortran
2017
28 / 40
Généralités Pseudocode Complexité
Théorie Pratique Applications
Complexité d’une boucle do
⌅ C ODE C OMPLEXITÉ D ’ UNE BOUCLE FINIE
1
2
3
4
5
do i=1, N
...
... ! Complexite en O(f)
...
end do
e
n
è
A
I
Z
7
1
0
2
OU
c
a
H
⌅ C OMPLEXITÉ : O (N ⇥ f )
c
Hacène Ouzia
Programmation en Fortran
2017
29 / 40
Généralités Pseudocode Complexité
Théorie Pratique Applications
Complexité d’une boucle do
⌅ C ODE C OMPLEXITÉ D ’ UNE BOUCLE FINIE
1
2
3
4
5
do i=1, N
...
... ! Complexite en O(f)
...
end do
e
n
è
A
I
Z
7
1
0
2
OU
c
a
H
⌅ C OMPLEXITÉ : O (N ⇥ f )
c
Hacène Ouzia
Programmation en Fortran
2017
29 / 40
Généralités Pseudocode Complexité
Théorie Pratique Applications
Complexité d’une boucle do
⌅ C ODE C OMPLEXITÉ D ’ UNE BOUCLE INDÉFINIE
1
2
3
4
5
6
7
A
I
Z
Condition = ... ! Complexite en O(h)
do while( Condition )
...
... ! Complexite en O(f)
...
end do
e
n
è
7
1
0
2
OU
c
a
H
⌅ C OMPLEXITÉ : O(h) + O (B ⇥ f ), où B est un majorant du nombre
d’itérations
c
Hacène Ouzia
Programmation en Fortran
2017
30 / 40
Généralités Pseudocode Complexité
Théorie Pratique Applications
Complexité d’une boucle do
⌅ C ODE C OMPLEXITÉ D ’ UNE BOUCLE INDÉFINIE
1
2
3
4
5
6
7
A
I
Z
Condition = ... ! Complexite en O(h)
do while( Condition )
...
... ! Complexite en O(f)
...
end do
e
n
è
7
1
0
2
OU
c
a
H
⌅ C OMPLEXITÉ : O(h) + O (B ⇥ f ), où B est un majorant du nombre
d’itérations
c
Hacène Ouzia
Programmation en Fortran
2017
30 / 40
Généralités Pseudocode Complexité
Théorie Pratique Applications
Application
+ Quelle est la complexité de l’algorithme suivant.
Algorithme 7 :
A
I
Z
7
1
0
2
Entrées : n :: Entier naturel
m :: Entier naturel
1
Début
2
p
3
Tant que p  n ou q  m faire
è
c
a
p
4
5
cH
6
7
Hacène Ouzia
ne
1, q
1
OU
p+1
q
q+1
Fin tant que
Fin
Programmation en Fortran
2017
31 / 40
Généralités Pseudocode Complexité
Théorie Pratique Applications
Application
7
1
0
+ Quelle est la complexité de l’algorithme suivant.
Algorithme 8 :
A
I
Z
Entrées : n :: Entier naturel
m :: Entier naturel
1
2
Début
q
1; p
e
n
è
4
q
sinon
5
c
a
H
6
Hacène Ouzia
q+1
p
p+1
Fin si
Fin tant que
7
8
9
10
OU
Tant que p  n faire
Si q  m alors
3
c
1
2
Fin
Programmation en Fortran
2017
32 / 40
Généralités Pseudocode Complexité
Théorie Pratique Applications
Application
7
1
0
+ Quelle est la complexité de l’algorithme suivant.
Algorithme 9 :
Entrées : n :: Entier naturel
m :: Entier naturel
1
2
Début
q
1; p
e
n
è
4
q
sinon
5
c
a
H
6
7
Hacène Ouzia
p
q+1
p+1
q
1
Fin si
Fin tant que
8
9
10
11
OU
Tant que p  n faire
Si q  m alors
3
c
1
A
I
Z
2
Fin
Programmation en Fortran
2017
33 / 40
Généralités Pseudocode Complexité
Théorie Pratique Applications
Application
- Quelle est la complexité de la procédure ci-dessous ?
Procédure SolutionEquationDegreUn(a,b,solution)
A
I
Z
Entrée : a, b :: réels
Sortie : solution :: réel
1
2
3
4
5
6
7
8
9
10
11
Hacène Ouzia
Début
solution
0
Si a = 0 alors
Si b 6= 0 alors
Exception()
Fin si
sinon
b
solution
a
Fin si
return solution
Fin
e
n
è
c
7
1
0
2
OU
c
a
H
Programmation en Fortran
2017
34 / 40
Généralités Pseudocode Complexité
Théorie Pratique Applications
Application
7
1
0
- Quelle est la complexité de la procédure ci-dessous ?
2
Algorithme 10 : solutions de l’équation ax + bx + c = 0
Entrée : a,b, c :: réels
Sortie : x1 , x2 :: complexes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Hacène Ouzia
Début
Si a = 0 alors
SolutionEquationDegreUn(b,c)
sinon
b2 4ac
Si
< 0 alors
p
p
b i
b+i
x1
, x2
2a
2a
sinon
Si
= 0 alors
b
x1
2a
sinon
p
p
b
b+
x1
, x2
2a
2a
Fin si
Fin si
Fin si
Fin
e
n
è
c
A
I
Z
2
OU
c
a
H
Programmation en Fortran
2017
35 / 40
Généralités Pseudocode Complexité
Théorie Pratique Applications
Application
A
I
Z
⌅ E XERCICE
7
1
0
2
OU
Ecrire et implémenter un algorithme permettant de calculer la valeur n! pour
tout entier naturel n. Analyser la complexité de votre algorithme.
e
n
è
c
Hacène Ouzia
c
a
H
Programmation en Fortran
2017
36 / 40
Généralités Pseudocode Complexité
Théorie Pratique Applications
Application : factorielle
Algorithme 11 : Factorielle
A
I
Z
Entrée : N :: entier naturel non nul
Sortie : Produit :: entier naturel non nul
1
Début
2
Produit
1
3
Pour k = 2 à N faire
Produit
4
Fin pour
6
return Produit
Fin
Hacène Ouzia
c
2
OU
Produit ⇤ k
c
a
H
5
7
e
n
è
7
1
0
Programmation en Fortran
2017
37 / 40
Généralités Pseudocode Complexité
Théorie Pratique Applications
Complexité d’une boucle do
7
1
0
⌅ C ODE C ALCULER LE FACTORIEL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
program factoriel
implicit none
integer :: N
integer :: indice, Produit
call system("clear")
write(*,"(’ Entrez la valeur de N : ’)",advance=’no’)
read(*,*) N
Produit = 1
do indice = 1, N
Produit = Produit * indice
end do
write(*,"(’ Resultat : ’)",advance=’no’)
write(*,*) Produit
stop "Fin factoriel"
end program factoriel
A
I
Z
e
n
è
c
OU
c
a
H
⌅ C OMPLEXITÉ O (n)
Hacène Ouzia
Programmation en Fortran
2017
38 / 40
Généralités Pseudocode Complexité
Théorie Pratique Applications
Complexité d’une boucle do
7
1
0
⌅ C ODE C ALCULER LE FACTORIEL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
program factoriel
implicit none
integer :: N
integer :: indice, Produit
call system("clear")
write(*,"(’ Entrez la valeur de N : ’)",advance=’no’)
read(*,*) N
Produit = 1
do indice = 1, N
Produit = Produit * indice
end do
write(*,"(’ Resultat : ’)",advance=’no’)
write(*,*) Produit
stop "Fin factoriel"
end program factoriel
A
I
Z
e
n
è
c
OU
c
a
H
⌅ C OMPLEXITÉ O (n)
Hacène Ouzia
Programmation en Fortran
2017
38 / 40
Généralités Pseudocode Complexité
Théorie Pratique Applications
Application : tri par insertion
7
1
0
- Quelle est la complexité de l’algorithme ci-dessous ?
Algorithme 12 : Tri par insertion
Entrées : N :: un entier naturel non nul,
T :: Tableau à N éléments
Sortie : T :: Tableau à N éléments
1
Début
Pour j = 2 à N faire
2
OU
3
copieElementCourant
T (j)
4
Pour i = j à 1, pas =
1 faire
Si T (i) > copieElementCourant alors
5
ac
T (i + 1)
6
T (i)
Fin si
Fin pour
Fin pour
7
8
9
10
11
Hacène Ouzia
e
n
è
A
I
Z
2
Fin
cH
T (i)
copieElementCourant
Programmation en Fortran
2017
39 / 40
Généralités Pseudocode Complexité
Théorie Pratique Applications
Application : k-ème plus grand élément
7
1
0
- Quelle est la complexité de la procédure ci-dessous ?
Algorithme 13 : k -ème plus grand élément d’un tableau
Entrées : k , N :: entiers naturels non nuls,
T :: Tableau de N réels tous distincts
Sortie : Resultat : réel
1
2
3
4
5
Début
Chercher
oui
j
1
Tant que Chercher et j  N faire
Compteur
0
ElementCourant
T (j)
Pour i = 1 à N faire
e
n
è
6
7
8
9
10
11
12
c
13
14
15
16
17
18
Hacène Ouzia
A
I
Z
2
OU
Si i =
6 j et ElementCourant < T (i) alors
Compteur
Compteur + 1
Fin si
Fin pour
Si Compteur = k 1 alors
Chercher
non
Resultat
ElementCourant
Fin si
j
j +1
Fin tant que
c
a
H
Fin
Programmation en Fortran
2017
40 / 40
Téléchargement