Retour sur : Enumération
On peut formuler l’accès à une élément de deux manières:
- Soit on connait la position de l’élément auquel on veut accéder et on recherche, dans un parcours séquentiel, le kième de la file. On parle d’un accès par position.
- Soit on ne connait pas cette position et l’on recherche, dans un parcours séquentiel, le premier élément rencontré dont la valeur est la valeur recherchée. On parle dans ce cas d »un accès par valeur ou associatif.
Accès par position
Le problème de l’accès par position consiste à parcourir séquentiellement une file à partir du début jusqu’au k-1 ième élément an comptant les éléments visités, conformément au schéma de programme accès par position
func AccesParPosition(file: File_Entier, position: Entier)
-> (existe: Bool,valeur: Entier) {
var existe = false
var index = 1
var valeur = 0
Premier(file)
while (index < position) && !Dernier(file) {
index += 1
Avancer(file)
}
if !Dernier(file) && position > 0 {
valeur = Prendre(file)
existe = true
}
return (existe, valeur)
}
Notes:
- Cet algorithme comprend deux parties: la première est une boucle qui lit séquentiellement tous les éléments de la file qui précèdent la position de l’élément recherché. Si l’élément existe on sort de la boucle après avoir incrémenté le curseur de la position courante. Dans la deuxième le test non Dernier et position > 0 permet de lire la valeur de l’élément recherché, de l’affecter à la variable valeur. La variable existe devient vraie. Dans le cas ou l’on ne trouve pas d’élément à la position recherchée, tous les éléments sont parcourus (première partie) et le test de condition de la deuxième partie est faux.
- Le prédicat du schéma de programme et traduit par une fonction booléenne
- Le résultat est retourné par la fonction AccesParPosition avec deux valeurs