Dans cette version de recherche d’un élément, la boucle de parcours de l’ensemble est une instruction itérative sur un iterable. Un itérable est une séquence d’éléments que l’on va parcourir sans expression conditionnelle. Le type Ensemble de Schema permet d’écrire une boucle itérative de type itérable traduite en Swift par le biais de l’instruction for .. In .. que l’on retrouve dans le plupart des langages de programmation impératifs. Il s’agit d’une variable d’itération , qui prend successivement la valeur de chacun des éléments de l’itérable.
L’instruction Schema de parcours itérable d’un ensemble qui a pour syntaxe:
ensemble : element instruction ... Fin
permet la génération de code Swift for element in ensemble { … }
Schema
rechercheParValeur ensemble Ensemble, valeur Element -> Bool existe <- Faux ensemble : element Si valeur = element existe <- Vrai Sortie Fin Fin <- existe Fin
Swift
func RechercheParValeur <Element>(_ ensemble: Ensemble<Element> ,_ valeur: Element) -> Bool { var existe = false for element in ensemble { if Egal(valeur,element) { existe = false break } } return existe }
Cet algorithme peut être optimisé pour la recherche dans un ensemble trié
Recherche dans un ensemble trié avec itérable et instruction Sortie
Schema
rechercheParValeur(ensemble Ensemble,valeur Element) -> Bool existe <- Vrai parcours <- Faux ensemble : element Si valeur < element Sortie Sinon valeur = element parcours <- Vrai Fin Fin <- parcours ET existe Fin
Swift
func RechercheParValeur<Element>(_ ensemble: Ensemble<Element> ,_ valeur: Element) -> Bool { var existe = true var parcours = false for element in ensemble { if valeur < element { break } else if valeur == element { parcours = true } } return parcours && existe }
Une autre version avec 2 instructions Sortie
Schema
rechercheParValeur ensemble Ensemble,valeur Element -> Bool existe <- Faux ensemble : element Si valeur < element Sortie Si valeur = element existe <- Vrai Sortie Fin Fin <- existe Fin
dd
Swift
func rechercheParValeur <Element>(_ ensemble: Ensemble<Element> ,_ valeur: Element) -> Bool { var existe = false for element in ensemble { if valeur < element { break } if valeur == element { existe = true break } } return existe }
Exemple d’utilisation
let nombres = File(1,2,3,10,20,30) if rechercheParValeur (nombres, 5) { print("trouvé") } else { "print("pas trouvé") }
let noms = File("aa","bb","cc","nn","xx", "yy") if rechercheParValeur (nombres, "nn") { print("trouvé") } else { print("pas trouvé") }
ss
copyright A rchitectures A pplicatives A vancées A3-Soft