Swift: File séquentielle -2-

Parcours séquentiel
Retour sur : Introduction

Le schéma de programme standard modèle de parcours dans une file séquentielle est représenteé par le schéma de programme: On utilisera toujours ce modèle de parcours dans les exemples sur les files séquentielles

L’algorithme de parcours d’une file séquentielle, étudié précédemment met en œuvre les primitives d’accès:

  • Premier: Initialise la lecture au début de la file
  • Prendre: Lit l’élément courant
  • Avancer: Positionne le curseur sur l’élément suivant
  • Dernier: Signale la fin de la lecture
Schéma Algorithme ParcoursFile
    Description 
        Objectif: Présenter un algorithme générique de parcours séquentiel
        Résultat: Énumération de tous les éléments de la file            
        Remarque: La File n'est pas modifiée
    Action 
        Premier(file)
        TantQue NON Dernier(file)
        Faire
            Prendre(file,val)
            "Suite d'instructions de traitement de la valeur val"
            Afficher(val)
            Avancer(file)
        Fin-Faire 
    Fin-Action 
Fin-Schéma
Le programme Swift ParcoursFile

Le programme correspondant utilise les primitives et types définis dans le « Framework » AlgoSwift

  • Premier: Initialise la lecture au début de la file
  • Prendre: Lit l’élément courant
  • Dernier: Signale la fin de la lecture
  • Avancer: Positionne sur l’élément suivant de la file si il existe
  • CreationFile: Implémente une file à partir d’une structure Array
  • Afficher: Affiche une valeur sur le terminal
  • Message: Affiche une message d’information de type texte sur le terminal
  • File_Entier: défini le type « file de nombres entiers »
  • Entier: défini le type « nombre entier »
func ParcoursFile(file: File_Entier) {
    var element : Entier = 0
    Premier(file)
    while !Dernier(file) {
        element = Prendre(file)
        Afficher("\(element)") // Traitement de la variable Val
        Avancer(file)
    }
}
Le programme Test de ParcoursFile
func Test_ParcoursFile() {
    let file = [1,2,3, 6,14,98,56]
    let collection = CreationFile(file)
    Message("Parcours sequentiel")
    ParcoursFile(collection)
}

On remarque une grande similarité syntaxique avec le langage de schéma de programme. Seuls l’instruction de répétition TantQue-Faire-Finfaire et les déclarations de variables sont respectivement traduits en while {} et let/var. Cette approche permet de garder une grande cohérence entre le schéma de programme et le langage Swift. On peut ainsi tester avec un vrai langage informatique la validité d’un algorithme puisque la suite d’instructions est conservée.

Variation Swift sur le même thème

A partir de l’exemple précédent on peut optimiser si nécessaire l’écriture du programme de Parcours en utilisant uniquement des instructions du langage Swift.

Parcours d’une file de type Array avec l’instruction for in

func ParcoursFile(file: [Int]) {
    for element in file {
       print( "Element = \(element)")
    }
}

Une autre version plus proche de la structure de notre schéma de programme avec l’instruction while {}.

func ParcoursFile(file: [Int]) {
   var i = 0
   let n = file.count
   while i <  n  {
      let element = file[i]
      print("Element = \(element)")
      i += 1
   }
}

Un peu plus simple

func ParcoursFile_4(file: [Int]) {
   var i = 0
   while i <  file.count {
      print( "Element = \(file[i])")
      i += 1
    }
}