Structures élémentaires de contrôle Algorithmique (rappels

publicité
Algorithmique (rappels)
Joël Quinqueton
Dépt MIAp, UFR IV
UPV ! Université Montpellier III
• La cohérence du programme (du
contenu) n'est pas examinée ou
évaluée par le compilateur
• L'analyse du problème à traiter, la
preuve de la cohérence et de la
pertinence de sa solution sont préalable
à l’écriture du programme
Algorithmique: la démarche
Structure générale
Structures élémentaires de
contrôle
• On doit
– fixer l'objectif du programme
– établir la liste des données à manipuler et
des opérations à exécuter, et les ordonner.
• La description de la suite des
opérations élémentaires ordonnées
capables de résoudre le problème posé
constitue un algorithme
Traitement d’une entrée
variable
• Algorithme(entree):
– Imprimer(« bonjour »)
– Imprimer(entree)
• Programme:
<script type=«!text/javascript!»>
Var entree = «!salut!»
Alert(«!bonjour!»);
Alert(entree);
</script>
• Algorithme:
– Imprimer(« bonjour »)
• Programme:
<script type=«!text/javascript!»>
Alert(«!bonjour!»);
</script>
Condition sur une entrée
• Algorithme(entree):
– Si (entree = « salut »)
• Alors imprimer(« bonjour »)
• Sinon imprimer(entree)
• Programme:
<script type=«!text/javascript!»>
Var entree = «!salut!»;
If (entree==«!salut!»)
Alert(«!bonjour!»);
Else Alert(entree);
</script>
Boucle itérative
• Calcul de la somme des entiers de 1 à 10:
– Somme = 0, entier=0
– Tant que (entier < 10)
• Somme = Somme + entier, entier = entier + 1
– imprimer(Somme)
• Programme:
<script type=«!text/javascript!»>
Var somme = 0; var entier=0;
While (entier < 10)
{somme = somme + entier; entier = entier + 1;}
Alert(somme);
</script>
Boucle itérative « for »
• Calcul de la somme des entiers de 1 à 10:
– Somme = 0
– Pour (entier de 1 a 10)
• Somme = Somme + entier
– imprimer(Somme)
• Programme:
<script type=«!text/javascript!»>
Var somme = 0; var entier=0;
for (entier = 0; entier < 10; entier=entier + 1)
{somme = somme + entier;}
Alert(somme);
</script>
Algorithmique
• Techniques de tris élémentaires
– Qu'est-ce qu'un tri?
– On suppose qu'on se donne une suite de N
nombres entiers et on veut les ranger en ordre
croissant au sens large.
Ainsi, pour N = 10, la suite
18, 3, 10, 25, 9, 3, 11, 13, 23, 8
devra devenir
3, 3, 8, 9, 10, 11, 13, 18, 23, 25
Tri par sélection
• Cette solution utilise la solution à un
sous-problème
– La recherche de la position du plus petit
élément d’un tableau
indElmtMin = 0 // pos de l’élmt min courant
j = 0
tant que j < N faire {
si (T[j] < T[indElmtMin])
alors indElmtMin = j
j = j + 1
}
Tri par sélection
• On trie N nombres entiers, rangés dans
un tableau
• Tri par sélection (le plus simple)
– Trouver l'emplacement de l'élément le plus
petit du tableau : l'entier m tel que, pour
tout i, am ! ai
– On échange les éléments a1 et am
– Puis on recommence ces opérations sur la
suite a2, a3, ..., aN
Tri par sélection
indElmtMin
18, 3, 10, 25, 9, 3, 11, 13, 23, 8
j
indElmtMin
18, 3, 10, 25, 9, 3, 11, 13, 23, 8
j
Tri par sélection
indElmtMin
18, 3, 10, 25, 9, 3, 11, 13, 23, 8
j
indElmtMin
18, 3, 10, 25, 9, 3, 11, 13, 23, 8
j
Tri par sélection
18, 3, 10, 25, 9, 3, 11, 13, 23, 8
3, 18, 10, 25, 9, 3, 11, 13, 23, 8
3, 3, 10, 25, 9, 18, 11, 13, 23, 8
Tri par sélection
triSelection {
t, min = 0
i = 0
tant que i < N
min = i
j = i + 1
tant que j <
si (T[j] <
j = j + 1
}
t = T[j], T[j]
i = i + 1
}
Tri par sélection
triSelection {
min = 0
i = 0
tant que i < N - 1 faire {
min = i
j = i + 1
tant que j < N faire {
si (T[j] < T[min]) alors min = j
j = j + 1
}
echanger(i, min)
i = i + 1
}
Tri par sélection
triSelection {
min = 0
i = 0
tant que i < N - 1 faire {
min = i
j = i + 1
tant que j < N faire {
si (T[j] < T[min]) alors min = j
j = j + 1
}
echanger(i, min)
i = i + 1
}
Tri par sélection
• Ses performances ?
- 1 faire {
N faire {
T[min]) alors min = j
= T[min], T[min] = t
– Evaluation du coût de l ’algorithme
– Combien d’opérations doit-on effectuer
pour trier un tableau de N entiers ?
Tri par sélection
triSelection {
t, min = 0
i = 0
tant que i < N
min = i
j = i + 1
tant que j <
si (T[j] <
j = j + 1
}
t = T[j], T[j]
N échanges:
i = i + 1
}
Tri par sélection
- 1 faire {
N faire {
T[min]) alors min = j
= T[min], T[min] = t
triSelection {
t, min = 0
i = 0
tant que i < N
min = i
j = i + 1
tant que j <
si (T[j] <
N-i comparaisons:
j = j + 1
}
t = T[j], T[j]
i = i + 1
}
Tri par sélection
- 1 faire {
N faire {
T[min]) alors min = j
= T[min], T[min] = t
Tri par sélection
• Coût de l’algorithme
• Coût de l’algorithme
N !2
N + " N ! i ! 1 = N ( N ! 1)
i =0
2
Temps
d’exécution
Echanges
Comparaisons
Taille du tableau
Les objets en Javascript
• Structure hiérarchique
• Pré
– Arbre
Accéder à la page
• La structure d’une page est hiérarchique:
• document
– images[]
• Branche
• src
• width
– nid
• Tronc
– Balançoire
• nid
• Désignation: Pré.arbre.branche.nid
–
–
–
–
forms[]
title
body
…
• <img src=« fichier.jpg »>
– document.images[0].src
Modifier la page
• Document.write(«! le texte qui va
remplacer celui de la page!»);
– Remplace le contenu de la page
– Ne peut être utilisé qu’une fois
– Peut (et doit?) contenir des balises HTML
• Permet à la page de se modifier ellemême pendant son affichage
Téléchargement