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_Courant, Element_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 Schema–Julia
- 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 for … end
- 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 for … end
copyright A rchitectures A pplicatives A vancées A3-Soft