Notions de parcours

La seule structure d’information nécessaire et suffisante utilisée pour élaborer la plupart des algorithmes écrits en Schema est le type abstrait Ensemble. Les primitives d’accès séquentiel ou indexé vues précédemment nous permettent  de construire tous les styles de parcours d’un ensemble.

Rappel sur les primitives d’accès séquentiel aux éléments d’un ensemble:

  • Initialiser: rend l’accès au premier élément s’il existe par le biais de la primitive Enumerer
  • Element_Courant: retourne l’élément pointé la le curseur courant
  • Element_Suivant: positionne le curseur sur l’élément suivant
  • Enumerer: retourne Vrai tant que l’accès  à un élément de l’ensemble est possible
  • AucunElement: retorurne Vrai si la fin d’un ensemble est détectée

Note: la mise en œuvre par l’une des  primitives Enumerer, Element_CourantElement_Suivant  doivent d’être précédées par la primitive Initialiser.

Parcours séquentiel

Le parcours séquentiel d’un ensemble est une boucle classique contrôlée par une expression booléenne. La boucle se termine lorsque la valeur de l’expression booléenne est Faux.

Algorithme Schema:

parcours ensemble Ensemble 
   Initialiser(ensemble)
   Enumerer(ensemble)
      element >- Element_Courant ensemble
      Afficher element #element
      Element_Suivant ensemble 
   Fin
Fin

Fonction Julia

function parcours(ensemble)
   Initialiser(ensemble)
   while Enumerer(ensemble)
      Afficher(Element_Courant(ensemble))
      Element_Suivant(ensemble)
   end
end

Parcours sur ensemble itérable

Un ensemble est dit itérable lorsque l’on peut parcourir ses éléments sans recourir à une itération par expression conditionnelle.

Algorithme Schema:

parcours ensemble Ensemble
   ensemble : element 
      Afficher element #element
   Fin
Fin

le paramètre element est facultatif

Fonction Julia

function parcours(ensemble)
   for element in Elements(ensemble) 
      Afficher(element) 
   end
end

ou sous une orme plus réduite

function parcours(ensemble)
   for element in Elements(ensemble) Afficher(element) end
end

Parcours par boucle infinie

Une boucle infinie doit comporter une instruction de sortie sinon la  boucle ne s’arrête jamais

Expression Booléenne toujours Vrai
   instructions
   ... 
Fin

Algorithme Schema:

parcours ensemble Ensemble
   Initialiser(ensemble)
   Vrai
      Si AucunElement ensemble Sortie
      element >- Element_Courant(ensemble)
      Afficher element #element
      Element_Suivant ensemble
   Fin 
Fin

Fonction Julia

function parcours_3(ensemble)
   Initialiser(ensemble)
   while true
      if AucunElement(ensemble) break end
      element = Element_Courant(ensemble)
      Afficher(element)
      Element_Suivant(ensemble)
   end
end

Parcours par intervalle

L’itération est bornée par un intervalle dont les bornes inférieures et supérieures sont représentées par l’index d’un élément de l’ensemble. La primitive PremierIndex renvoie la valeur de l’index du premier élément, DernierIndex renvoie la valeur de l’index du dernier  élément de l’ensemble.

L’intervalle est noté borneInférieure -> borneSupérieure

Intervalle 
   instructions
   ... 
Fin

Algorithme Schema:

parcours ensemble Ensemble
   PremierIndex ensemble -> DernierIndex ensemble : index 
      element >-  ensemble[index]
      Afficher element #element
   Fin
Fin

Fonction Julia

function parcours(ensemble)
   for index = PremierIndex(ensemble) : DernierIndex(ensemble)
      element = Elements(ensemble)[index]
      Afficher(element)
   end
end

Notes: traduction SchemaJulia

  • Le mot réservé Fin de Schema est traduit par  end en Julia
  • Afficher est une réécriture de la  fonction println de Julia
  • Initialiser, Enumerer, Element_Courant, Element_Suivant, AucunElement sont des primitives d’accès séquentiel aux éléments d’un ensemble. Elles sont écrites comme des fonctions Julia, en support de langage Schema.
  • PremierIndex, DernierIndex et Elements sont des primitives d’accès indexé aux éléments d’un ensemble. Elles sont écrites comme des fonctions Julia, en support de langage Schema.
  • Le parcours séquentiel, implémenté par une itération booléenne, est traduit en Julia par l’instruction while  … end
  • Le parcours sur ensemble itérable  est traduit en Julia une instruction forend
  • Le parcours par boucle infinie est traduit en Julia avec les instructions while true, break, end
  • Le parcours par intervalle est traduit en Julia une instruction forend

copyright A rchitectures A pplicatives A vancées A3-Soft

A3soft