De Scratch Wiki en français

(Modifier le projet exemple)
m (« »)
 
(Une version intermédiaire par le même utilisateur non affichée)
Ligne 5 : Ligne 5 :
 
Vous avez compris le titre ? Non ? Ah bon.
 
Vous avez compris le titre ? Non ? Ah bon.
  
Disons que dans ce tuto, nous allons prendre une '''suite de caractères''' (par exemple, "''ceci est une suite de caractères''", bref un texte) et nous allons mettre chaque mot de cette suite dans une [[liste]]. Ça peut sembler inutile mais je vous assure qu'on peut en avoir besoin alors autant savoir le faire !
+
Disons que dans ce tuto, nous allons prendre une '''suite de caractères''' (par exemple, « ''ceci est une suite de caractères'' », bref un texte) et nous allons mettre chaque mot de cette suite dans une [[liste]]. Ça peut sembler inutile, mais je vous assure qu'on peut en avoir besoin alors autant savoir le faire !
  
 
== Principe ==
 
== Principe ==
  
Normalement, votre texte contient plusieurs mots. Si ces derniers sont séparés par une espace (ce qui est assez courant, non ?) il va falloir que le script repère ceux-ci. Il doit donc parcourir le texte lettre par lettre en stockant celles-ci jusqu'à arriver à un espace, transférer alors les lettres stockées jusque-là et qui forment un mot dans une liste, puis recommencer jusqu'à la fin du texte.
+
Normalement, votre texte contient plusieurs mots. Si ces derniers sont séparés par une espace (ce qui est assez courant, non ?) il va falloir que le script repère ceux-ci. Il doit donc parcourir le texte lettre par lettre en stockant celles-ci jusqu'à arriver à une espace, transférer alors les lettres stockées jusque-là et qui forment un mot dans une liste, puis recommencer jusqu'à la fin du texte.
  
 
== Création du script ==
 
== Création du script ==
Ligne 25 : Ligne 25 :
 
=== Lettre par lettre ===
 
=== Lettre par lettre ===
  
Nous devons créer un script qui va tester lettre par lettre le texte. D'abord la première, puis la deuxième, la troisième, etc... Tant qu'il ne s'agit pas d'un espace, il la place dans la variable ''résultat'' et continue. Vous allez comprendre. Prenons comme exemple la phrase = "''Bonjour ami scratcheur''". Donc, avec cette phrase exemple, ''résultat'' doit valoir "''Bonjour''" après le premier espace.
+
Nous devons créer un script qui va tester lettre par lettre le texte. D'abord la première, puis la deuxième, la troisième, etc. Tant qu'il ne s'agit pas d'une espace, il la place dans la variable ''résultat'' et continue. Vous allez comprendre. Prenons comme exemple la phrase = « ''Bonjour ami scratcheur'' ». Donc, avec cette phrase exemple, ''résultat'' doit valoir « ''Bonjour'' » après la première espace.
  
 
Voilà un petit tableau pour comprendre l'utilité de ''compteur''.
 
Voilà un petit tableau pour comprendre l'utilité de ''compteur''.
Ligne 63 : Ligne 63 :
 
|}
 
|}
  
''compteur'' commence à 1 et augmente de 1 à chaque fois. Ah, avec ''compteur'' = 8, vous tombez sur un espace. C'est donc la fin du mot.
+
''compteur'' commence à 1 et augmente de 1 à chaque fois. Ah, avec ''compteur'' = 8, vous tombez sur une espace. C'est donc la fin du mot.
  
 
<scratchblocks>
 
<scratchblocks>
Ligne 82 : Ligne 82 :
 
</scratchblocks>
 
</scratchblocks>
  
Soit ce caractère est un espace, soit ce n'en est pas un. Il nous faut donc le bloc [[Si_()_alors_sinon_(bloc)|Si () alors sinon]] pour que le script décide quoi faire ensuite selon le cas.
+
Soit ce caractère est une espace, soit ce n'en est pas un. Il nous faut donc le bloc [[Si_()_alors_sinon_(bloc)|Si () alors sinon]] pour que le script décide quoi faire ensuite selon le cas.
  
 
<scratchblocks>
 
<scratchblocks>
Ligne 92 : Ligne 92 :
 
</scratchblocks>
 
</scratchblocks>
  
Nous allons maintenant utiliser le bloc [[(regrouper_()_et_())_(bloc)|regrouper () et ()]] pour ajouter le caractère à la variable ''résultat'' dans le cas où ce n'est pas un espace.
+
Nous allons maintenant utiliser le bloc [[(regrouper_()_et_())_(bloc)|regrouper () et ()]] pour ajouter le caractère à la variable ''résultat'' dans le cas où ce n'est pas une espace.
  
 
<scratchblocks>
 
<scratchblocks>
Ligne 103 : Ligne 103 :
 
</scratchblocks>
 
</scratchblocks>
  
Par contre dans le cas où le caractère examiné est un espace, il faut transférer le contenu de la variable dans la liste avant de la réinitialiser. Sans oublier de transférer une dernière fois le contenu de la variable lorsque le script arrive en fin de texte parce qu'en général un texte ne se termine pas par un espace.
+
Par contre, dans le cas où le caractère examiné est une espace, il faut transférer le contenu de la variable dans la liste avant de la réinitialiser. Sans oublier de transférer une dernière fois le contenu de la variable lorsque le script arrive en fin de texte parce qu'en général un texte ne se termine pas par une espace.
  
 
<scratchblocks>
 
<scratchblocks>

Version actuelle datée du 25 mai 2021 à 16:49


Séparer les mots d'une suite de caractères


Hey !

Vous avez compris le titre ? Non ? Ah bon.

Disons que dans ce tuto, nous allons prendre une suite de caractères (par exemple, « ceci est une suite de caractères », bref un texte) et nous allons mettre chaque mot de cette suite dans une liste. Ça peut sembler inutile, mais je vous assure qu'on peut en avoir besoin alors autant savoir le faire !

Principe

Normalement, votre texte contient plusieurs mots. Si ces derniers sont séparés par une espace (ce qui est assez courant, non ?) il va falloir que le script repère ceux-ci. Il doit donc parcourir le texte lettre par lettre en stockant celles-ci jusqu'à arriver à une espace, transférer alors les lettres stockées jusque-là et qui forment un mot dans une liste, puis recommencer jusqu'à la fin du texte.

Création du script

Les variables

C'était prévisible, il faut des variables. Voilà celles que vous devrez créer :

(compteur) // servira à indiquer quelle lettre du texte il faut examiner
(résultat) // servira à stocker les lettres examinées
(mots :: list) // la liste dans laquelle seront mis tous les mots obtenus

Lettre par lettre

Nous devons créer un script qui va tester lettre par lettre le texte. D'abord la première, puis la deuxième, la troisième, etc. Tant qu'il ne s'agit pas d'une espace, il la place dans la variable résultat et continue. Vous allez comprendre. Prenons comme exemple la phrase = « Bonjour ami scratcheur ». Donc, avec cette phrase exemple, résultat doit valoir « Bonjour » après la première espace.

Voilà un petit tableau pour comprendre l'utilité de compteur.

compteur lettre correspondante résultat
1 B B
2 o B + o = Bo
3 n Bo + n = Bon
4 j Bon + j = Bonj
5 o Bonj + o = Bonjo
6 u Bonjo + u = Bonjou
7 r Bonjou + r = Bonjour

compteur commence à 1 et augmente de 1 à chaque fois. Ah, avec compteur = 8, vous tombez sur une espace. C'est donc la fin du mot.

ajouter (1) à [compteur v]

Le script va se répéter lettre par lettre jusqu'à la fin du texte. Il nous faut donc une boucle et nous avons donc besoin du bloc longueur de () qui donne le nombre de caractères dans une chaîne donnée.

répéter (longueur de [Bonjour ami scratcheur]) fois
ajouter (1) à [compteur v]

Nous allons utiliser le bloc lettre () de () pour indiquer au script quel caractère du texte examiner. Si on regarde le tableau, la deuxième colonne correspond à :

(lettre (compteur) de [Bonjour ami scratcheur])

Soit ce caractère est une espace, soit ce n'en est pas un. Il nous faut donc le bloc Si () alors sinon pour que le script décide quoi faire ensuite selon le cas.

répéter (longueur de [Bonjour ami scratcheur]) fois
si <(lettre (compteur) de [Bonjour ami scratcheur]) = [ ]> alors
sinon
fin
ajouter (1) à [compteur v]

Nous allons maintenant utiliser le bloc regrouper () et () pour ajouter le caractère à la variable résultat dans le cas où ce n'est pas une espace.

répéter (longueur de [Bonjour ami scratcheur]) fois
si <(lettre (compteur) de [Bonjour ami scratcheur]) = [ ]> alors
sinon
mettre [résultat v] à (regrouper (résultat) et (lettre (compteur) de [Bonjour ami scratcheur]))
fin
ajouter (1) à [compteur v]

Par contre, dans le cas où le caractère examiné est une espace, il faut transférer le contenu de la variable dans la liste avant de la réinitialiser. Sans oublier de transférer une dernière fois le contenu de la variable lorsque le script arrive en fin de texte parce qu'en général un texte ne se termine pas par une espace.

répéter (longueur de [Bonjour ami scratcheur]) fois
si <(lettre (compteur) de [Bonjour ami scratcheur]) = [ ]> alors
ajouter (résultat) à [mots v]
mettre [résultat v] à []
sinon
mettre [résultat v] à (regrouper (résultat) et (lettre (compteur) de [Bonjour ami scratcheur]))
fin
ajouter (1) à [compteur v]
end
ajouter (résultat) à [mots v]

Il ne reste qu'à ajouter les blocs d'initialisation des variables :

supprimer tous les éléments de la liste [mots v]
mettre [résultat v] à []
mettre [compteur v] à [1]
répéter (longueur de [Bonjour ami scratcheur]) fois
si <(lettre (compteur) de [Bonjour ami scratcheur]) = [ ]> alors
ajouter (résultat) à [mots v]
mettre [résultat v] à []
sinon
mettre [résultat v] à (regrouper (résultat) et (lettre (compteur) de [Bonjour ami scratcheur]))
fin
ajouter (1) à [compteur v]
end
ajouter (résultat) à [mots v]

Ça marche ! Vous n'avez qu'à tester ;)


Utilisation

Une utilisation très fréquente de cette technique est le déchiffrement des listes cloud.


Cet article fait partie de la catégorie des tutos
Tous les articles de cette catégorie :
Les cookies nous aident à fournir nos services. En utilisant nos services, vous acceptez notre utilisation des cookies.