Académique Documents
Professionnel Documents
Culture Documents
Démonstration 0
1
Information générale
Professeure :
Esma AÏMEUR: aimeur@iro.umontreal.ca
Démonstrateurs:
Dorsaf Sallami: dorsaf.sallami@umontreal.ca
Hugo Rocha De Alba: hugo.rocha.de.alba@umontreal.ca
2
Information générale
Heures et lieu:
Disponibilités démonstrateurs:
3
Exercices de programmation
Télécharger le JDK:
https://www.oracle.com/ca-en/java/technologies/downloads/#java17
4
Exercices Java
5
Analyse de code (1/6)
Ce code compile t-il et, si non, quelle(s) erreur(s) le compilateur va t-il indiquer?
6
Analyse de code (2/6)
8
Analyse de code (4/6)
10
Analyse de code (6/6)
11
Ressources pour la programmation orientée objet et Java
https://www.freecodecamp.org/news/learn-java-free-java-courses-for-beginners/
12
Récursivité
13
Récursivité (1/5)
14
Récursivité (2/5)
• Toutes les définitions récursives possèdent une condition d’arrêt i.e. une partie
non récursive.
• Si cette dernière manque, une fonction recursive ne se terminera jamais (boucle
de récursivité infinie).
15
Récursivité (3/5)
u0 = u1 = 1
16
Récursivité (4/5)
Condition d’arrêt
int fib (int n)
{
if (n <= 1)
return 1;
else
return fib (n-1) + fib (n-2);
}
17
Récursivité (5/5)
18
Récursivité : Exercice 1
19
Récursivité : Exercice 1
N'oubliez pas non plus que tout ce qui est élevé à la puissance zéro est 1.
20
Récursivité : Correction 1
21
Récursivité : Exercice 2
22
Récursivité : Correction 2
23
Récursivité : Exercice 3
24
Récursivité : Correction 3
25
Analyse des coûts
26
Analyse des coûts (1/4)
27
Analyse des coûts (2/4)
28
Analyse des coûts (3/4)
29
Analyse des coûts (4/4)
30
Analyse empirique
31
Analyse des coûts : analyse empirique (1/2)
L’analyse empirique nécessite que l’algorithme soit implémenté.
Nous pouvons mesurer son temps d’exécution sur différents jeux de données.
32
Analyse des coûts : analyse empirique (2/2)
● Il est nécessaire d’implémenter l’algorithme, ce qui peut s’avérer difficile
● Les résultats peuvent ne pas être représentatifs de tous les jeux de données possibles
33
Analyse théorique
34
Analyse des coûts : analyse théorique (1/2)
35
Analyse des coûts : analyse théorique (2/2)
La notation Grand O est une métrique permettant de décrire le temps d'exécution
des algorithmes en matière d'accroissement de la taille des données en entrée
On écrit O(n)
36
Évaluer Grand O
37
7 fonctions importantes
38
Exemples d'analyse d 'algorithme (1/7)
39
Exemples d'analyse d 'algorithme (2/7)
O(N): Une méthode qui retourne la valeur maximale d'un tableau.
40
Exemples d'analyse d 'algorithme (3/7)
O(n*2): Algorithme unique1 pour tester l'unicité des éléments.
41
Exemples d'analyse d 'algorithme (4/7)
O(logn): Binary search
42
Exemples d'analyse d 'algorithme (5/7)
O(logn): Binary search
43
Exemples d'analyse d 'algorithme (6/7)
O(logn): Binary search
44
Exemples d'analyse d 'algorithme (7/7)
O(nlogn): Algorithme unique2 pour tester l'unicité des éléments.
45
Exercice 1
46
Exercice 1: Solution
O(b) Il s'agirait d'un temps d'exécution linéaire sur b, puisque la boucle itère
uniquement sur b.
47
Exercice 2
48
Exercice 2 : Solution
49
Exercice 3
50
Exercice 3 : Solution
Ici, notre temps d'exécution est O (n + n ^ 2), que nous appelons simplement O (n ^ 2)
51
Exercice 4
Quel est le temps d'exécution de ce code ?
52
Exercice 4 : Solution
En général, nous dirions qu'il s'agit d'un temps d'exécution O(n) et que la partie
"pire des cas" serait implicite. Mais pour être plus précis, nous pourrions dire qu'il
s'agit du pire des cas O(n) et du meilleur des cas O(1).
53