Convertir une chaine en un tableau
Cet exemple montre une façon de convertir une chaine en un tableau. L'intérêt est de pouvoir maipuler une chaine via ses index, en partie comme on pourrait le faire en Python. Notez cependant que votre chaine doit être de taille fixe (un tableau doit avoir une taille fixe).
Il existe les fonctions Scol impératives ' nth_char ' et ' set_nth_char ' qui pourraient être plus utiles suivant les besoins !
// Crée le tableau selon la longueur de la chaine passée en argument. Retourne le tableau. fun [ S ] tab S fun creerTableau(s)= let mktab strlen s nil -> tableau in let 0 -> index in ( while ((strcmp s "") != 0) do ( set tableau.index = ctoa nth_char s 0; set s = substr s 1 strlen s; set index = index+1 ); tableau );; // Lit le tableau passé en argument et en affiche le contenu dans la console. fun [ tab S ] S fun lireTableau(tableau)= let 0 -> index in let "" -> chaine in ( while index < (sizetab tableau) do ( set chaine = strcat chaine tableau.index; set index = index+1 ); _fooS chaine );; // Change la valeur associée à un index du tableau. Vérifie que l'indexn'est pas en dehors du tableau. Retourne 0 si le changement est ok, 1 sinon. fun [ tab S I S ] I fun changeTableau(tableau, index, lettre)= if index >= sizetab tableau then 1 else ( set tableau.index = lettre; 0 );; fun main()= _showconsole; let creerTableau "Le langzge Scol est openSource" -> tableau in if 0 == changeTableau tableau 7 "a" then lireTableau tableau else _fooS "Une erreur est survenue"; 0;;
On peut définir une taille maximale pour les chaines utilisées. Dans ce cas, le tableau est créé non pas avec la longueur de la chaine mais avec la longueur maximale. Cela permet d'ajouter des caractères dans les index vides si la chaine n'a pas la longueur maximale.
Pour supprimer un caractère, on place une chaine vide "" à l'index correspondant. C'est la méthode la plus simple. Cependant, on utilise un nombre d'index supérieur au nombre de caractères de la chaine.
Une méthode plus propre mais un peu plus complexe consiste à décrémenter, via une boucle, les valeurs des index supérieurs à celui du caractère supprimé.
Liste des articles de la rubrique noui :
convertir_une_chaine_en_un_tableau
librairie_chaines
librairie_listes
librairie_pdf_1
librairie_smtp
librairie_systeme
manipulations_sur_bitmap
