Accès associatif

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

mathAlgo