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
}
}