Algorithme -1-

File séquentielle: Accès par position

Le problème d’accès à un élément d’un file, classique en gestion, est formulé habituellement de deux manières:

  • Soit on connait la position de l’élément à trouver, on recherche , depuis le début de la file jusqu’au ixième élément.
  • Soit on ne connait pas la position de l’ élément et l’on recherche le premier élément dont la valeur est la valeur donnée.

On distingue donc deux types de recherche dans une file séquentielle:

  • Un accès par position
  • Un accès par valeur ou associatif
Accès par position

Pour construire le schéma de programme de rechrche par position, on reprend le schéma d’énumération vu précédemment:

  • Une initialisation d’un compeur de position
  • Un condition d’itération qui contrôle l’énumération
Si index est la position de l’élément courant et k la position recherchée 
la condition de boucle s'écrit:  index < k et Non Dernier (file) 
3 cas peuvent se produir
  1- k > longueur de file: La condition Non Dernier(file) provoque l’arrêt
  2- index <= k <= longueur de file: . On a trouvé le kieme élément
  3- k <= 0 la condition index < k ne permet pas le parcours
Schéma de programme
Schéma Programme Accès_Par_Position
    Interface 
        Objectif: Recherche par position lors d'un parcours séquentiel
                  d'une file de Nombre
        Variable valeur : Nombre  -- La variable valeur est de type Nombre
        Variable file : File      -- La variable file est de type File
        Résultat: Lecture de tous les éléments de la file      
        Remarque: La file n'est pas modifiée, le prédicat retourne une valeur 
                  booléenne et la valeur trouvée si le prédicat est vrai    
    Fin-Interface 

    Prédicat Accès_Par_Position (file: File,position: Nombre, resultat: Nombre) 
        Déclaration
            Variable existe : Booléen  -- La variable accès est de type logique
            Variable index : Nombre    -- La variable index est de type Nombre
            Variable val : Nombre      -- La variable val est de type nombre
        Instruction
            existe = Faux
            index = 1
            Premier(file)   -- Positionne le curseur sur le premier élément
            TantQue (index < position) ET (Non Dernier(file) 
            Faire 
               index = index + 1
               Avancer(file)
            Fin-Faire 
            Si Non Dernier(file) ET position > 0
               Alors
                   Prendre(file,val)
                   resultat = val
                   existe = vrai
               Fin-Si
        Fin-Instruction 
        Accès_Par_Position = existe
     Fin-Prédicat 
Fin_Schéma 
Programme Swift