Source: Scratch Wiki en français

Révision datée du 1 août 2023 à 14:01 par Eloilefantastique (discussion | contributions)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)


Majuscules et minuscules, casse informatique (tutoriel)


En suivant ce tutoriel, vous saurez ce qu'est la casse informatique, comment détecter une majuscule sur Scratch et jouer avec la casse des lettres. Bonne lecture !

Info
 Info :
Tous les programmes présentés sont récupérables ici : https://scratch.mit.edu/projects/879104107/

Casse informatique, quésaco ?

La casse informatique est une notion qui semble complexe mais toute simple : pour faire court, c'est la différence entre une « MAJUSCULE » et une « minuscule ». Dans certains cas, la présence ou non d'une majuscule change le sens d'un mot (Rennes (ville) - rennes (animaux)).

Et pourquoi en parler ici ? Et bien, sur Scratch, la casse informatique n'existe pas. Alors, comment différencier majuscules et minuscules ? À priori, c'est impossible. Sauf que cette page n’existerait pas s'il n'y avait pas un moyen.

Info
 Info :
La case d'une lettre indique si une lettre est une majuscule ou une minuscule. Le terme provient de l'anglais "lowercase" et "uppercase" (minuscule et majuscule).

Détecter les majuscules sur Scratch

Il y a bel et bien un moyen de détecter les majuscules sur Scratch. Et ce moyen est lié au fonctionnement des costumes d'un sprite.


En effet, les noms des costumes sur Scratch sont sensibles à la casse (ce qui signifie qu'il y a une différence entre majuscules et minuscules). Il est donc possible de créer un détecteur de majuscules, sur Scratch.

Réalisation

Costumes

Pour commencer, créez deux costumes dans votre sprite.

  • le premier, nommez le « null » ;
  • le second, placez dans son nom toutes les lettres (toutes en majuscules) dont vous voulez qu'on puisse différencier majuscules et minuscules (voir liste suivante) ;
    • "ABCDEFGHIJKLMNOPQRSTUVWXYZÂÄÀÁÅÊËÈÉÎÏÌÍÔÖÒÓÛÜÙÚÑÕßÁÇÆŒØß"
Info
 Info :
Vous pouvez ajouter toutes lettres, du moment que le bloc <[MAJ] = [min]> renvoi « true ».
Attention
 Attention :
Veuillez mettre le second costume après le premier !

Script

Créez un bloc personnalisé, sans rafraîchissement d'écran, comme le suivant :

définir | Texte | Détecter MAJmin (lettre)
si <(longueur de (lettre)) > (1)> alors
mettre [| Texte | MAJmin v] à [Erreur : Plusieurs symboles]
stop [ce script v]
fin
mettre [| Texte | MAJmin | Lettres v] à […] // le nom du second costume
si <non <(| Texte | MAJmin | Lettres) contient (lettre)> > alors
mettre [| Texte | MAJmin v] à [Erreur : Pas une lettre de la feuille]
stop [ce script v]
fin
mettre [| Texte | MAJmin | Idx v] à (1)
mettre [| Texte | MAJmin | Vérif v] à []
répéter (longueur de (| Texte | MAJmin | Lettres)) fois
si <non <(lettre (| Texte | MAJmin | Idx) de (| Texte | MAJmin | Lettres)) = (lettre)>> alors
mettre [| Texte | MAJmin | Vérif v] à (regrouper (| Texte | MAJmin | Vérif) et (lettre (| Texte | MAJmin | Idx) de (| Texte | MAJmin | Lettres)))
sinon
mettre [| Texte | MAJmin | Vérif v] à (regrouper (| Texte | MAJmin | Vérif) et (lettre))
fin
ajouter (1) à [| Texte | MAJmin | Idx v] 
fin
basculer sur le costume (null v)
basculer sur le costume (| Texte | MAJmin | Vérif)
si <([nom v] du costume) = [null]> alors
mettre [| Texte | MAJmin v] à [min]
sinon
mettre [| Texte | MAJmin v] à [MAJ]
fin
Attention
 Attention :
Mettez bien la variable (| Texte | MAJmin | Lettres) à la même valeur que le nom du second costume, sinon votre script ne marchera pas (même à une lettre près).

Blocs personnalisés

Décomposer un texte

Info
 Info :
Le tuto « Séparer les mots d'une suite de caractères (tutoriel) » traite du même sujet, mais en simplifié.

Réalisation

Matériel nécessaire
  • Variables
    • (| Texte | Compteur)
    • (| Texte | Résultat) sortie des fonctions
    • (| Texte | Symboles) qui permettra de ne pas prendre en compte les symboles
    • (| Texte | Fins de phrase) qui contient des symboles indiquant une fin de phrase
      • Définissez-la à la valeur suivante : ".!?…"
  • Listes
    • (| Texte | Mots décomposés::list) où chaque élément sera un mot
Blocs
définir | Texte | Décomposer (texte)
mettre [| Texte | Symboles v] à […] // une liste de tous les symboles, en incluant l'espace (voir plus bas)
supprimer tous les éléments de la liste [| Texte | Mots décomposés v] // supprime le texte précédent
mettre [| Texte | Résultat v] à []
mettre [| Texte | Compteur v] à [1]
répéter (longueur de (texte)) fois
si <(| Texte | Symboles) contient (lettre (| Texte | Compteur) de (texte))> alors
si <(longueur de (| Texte | Résultat)) > (0)> alors
ajouter (| Texte | Résultat) à [| Texte | Mots décomposés v]::list // un nouveau mot, espace ou symbole est détecté, on sauvegarde le mot s'il existe
fin
ajouter (lettre (| Texte | Compteur) de (texte)) à [| Texte | Mots décomposés v]::list // on ajoute le symbole en question
mettre [| Texte | Résultat v] à [] // le « mot » actuel est remis à zéro
sinon
mettre [| Texte | Résultat v] à (regrouper (| Texte | Résultat) et (lettre (| Texte | Compteur) de (texte)))
fin
ajouter [1] à [| Texte | Compteur v]
fin
ajouter (| Texte | Résultat) à [| Texte | Mots décomposés v]::list
Attention
 Attention :
Il est obligatoire de mettre au moins un espace dans la variable (| Texte | Symboles), sinon le programme de fonctionnera pas. Voici un exemple de liste que vous pouvez insérer dans la variable :
@# 0123456789&"'(){}[]'§!?;.,:/\=+≠±<>≤≥*%«»-—–_°¡¿∞…•÷\‹›“”‘’¶„$€¥£‰
définir | Texte | Recomposer le texte traité
mettre [| Texte | Résultat v] à []
mettre [| Texte | Compteur v] à [1]
répéter (longueur de [| Texte | Mots décomposés v]) fois
mettre [| Texte | Résultat v] à (regrouper (| Texte | Résultat) et (élément (| Texte | Compteur) de [| Texte | Mots décomposés v]))
ajouter [1] à [| Texte | Compteur v]
fin



Mettre une lettre en Majuscule ou Minuscule

Matériel nécessaire (2)

  • Variable
    • (| Texte | Lettres | Résultat)
  • Listes
    • (| Texte | Lettres | MAJ::list) où chaque élément sera une majuscule
    • (| Texte | Lettres | min::list) où chaque élément sera une minuscule

Réalisation

Au lancement du projet
définir | Lancement | Créer une lettre -MAJ, min- (MAJ) (min)
si <(MAJ) = (min)> alors
ajouter (MAJ) à [| Texte | Lettres | MAJ v]::list
ajouter (min) à [| Texte | Lettres | min v]::list
fin
définir | Lancement |
supprimer tous les éléments de la liste [| Texte | Lettres | MAJ v]
supprimer tous les éléments de la liste [| Texte | Lettres | min v]
| Lancement | Créer une lettre -MAJ, min- [A] [a]::custom
| Lancement | Créer une lettre -MAJ, min- [B] [b]::custom
| Lancement | Créer une lettre -MAJ, min- [C] [c]::custom
…
| Lancement | Créer une lettre -MAJ, min- [É] [é]::custom
…
Info
 Info :
Si vous voulez ajouter des lettres comme le ß qui n'existent qu'en majuscule / minuscule, insérez la majuscule / minuscule dans les deux champs.
Attention
 Attention :
Pour que les blocs fonctionnent, il faut que vous créiez toutes les lettres contenues dans la variable (| Texte | MAJmin | Lettres). Si vous ne le faites pas, certaines lettres seront considérées comme des symboles.
Danger
 Danger :
Si vous n'entrez pas la même lettre dans les 2 entrées (MAJ et min), le projet refusera d'exécuter certaines fonctions, ce qui pourrait s’avérer problématique.
Bloc
définir | Texte | Mettre (lettre) en (case)
si <<non <[| Texte | Lettres | MAJ v] contient (lettre)>> ou <non <[| Texte | Lettres | min v] contient (lettre)>>> alors // vérification de si les lettres correspondantes sont les mêmes
mettre [| Texte | Lettres | Résultat v] à (lettre)
stop [ce script v]
fin
si <(case) = [min]> alors
mettre [| Texte | Lettres | Résultat v] à (élément (position de (lettre) dans [| Texte | Lettres | MAJ v]) de [| Texte | Lettres | min v])
sinon
mettre [| Texte | Lettres | Résultat v] à (élément (position de (lettre) dans [| Texte | Lettres | min v]) de [| Texte | Lettres | MAJ v])
fin



Interagir avec un mot

Matériel nécessaire (3)

  • Variables
    • (| Texte | Lettre | Compteur)
    • (| Texte | Lettre | Résultat) (NE PAS CONFONDRE AVEC (| Texte | Lettres | Résultat), QUI A UN « S » DE PLUS)
  • Liste
    • (| Texte | Lettres actionnables::list)

Bloc

Créez le bloc personnalisé suivant, sans rafraîchissement d'écran :

définir | Texte | Modifier le mot (mot) (lettres) (case voulue) <entier>
supprimer tous les éléments de la liste [| Texte | Lettres actionnables v]
si <non <entier>> alors
mettre [| Texte | Lettre | Résultat v] à []
mettre [| Texte | Lettre | Compteur v] à [1]
répéter jusqu'à ce que <(| Texte | Lettre | Compteur) > (longueur de (lettres))>
si <(lettre (| Texte | Lettre | Compteur) de (lettres)) = [;]> alors
ajouter (| Texte | Lettre | Résultat) à [| Texte | Lettres actionnables v]::list
mettre [| Texte | Lettre | Résultat v] à []
sinon
mettre [| Texte | Lettre | Résultat v] à (regrouper (| Texte | Lettre | Résultat) et (lettre (| Texte | Lettre | Compteur) de (lettres)))
fin
ajouter (1) à [| Texte | Lettre | Compteur v]
fin
si <(longueur de (| Texte | Lettre | Résultat)) > (0)> alors
ajouter (| Texte | Lettre | Résultat) à [| Texte | Lettres actionnables v]::list
fin
fin
mettre [| Texte | Lettre | Résultat v] à []
mettre [| Texte | Lettre | Compteur v] à [1]
répéter (longueur de (mot)) fois
si <<[| Texte | Lettres actionnables v] contient (| Texte | Lettre | Compteur)> ou <entier>> alors
| Texte | Mettre (lettre (| Texte | Lettre | Compteur) de (mot)) en (case voulue)::custom
mettre [| Texte | Lettre | Résultat v] à (regrouper (| Texte | Lettre | Résultat) et (| Texte | Lettres | Résultat)) // attentions aux « S » dans les noms de variable !
sinon
mettre [| Texte | Lettre | Résultat v] à (regrouper (| Texte | Lettre | Résultat) et (lettre (| Texte | Lettre | Compteur) de (mot)))
fin
ajouter (1) à [| Texte | Lettre | Compteur v]
fin



Formatage de texte

Général

Avant de formater un texte, créons ce bloc personnalisé sans rafraîchissement d'écran, permettant d’interagir avec un texte.

définir | Texte | Formater (texte) (méthode) (fonction)
| Texte | Décomposer (texte)::custom
mettre [| Texte | Compteur v] à [1]
mettre [| Texte | Résultat v] à []
répéter (longueur de [| Texte | Mots décomposés v]) fois
… // les « méthodes » seront insérées ici
mettre [| Texte | Résultat v] à (regrouper (| Texte | Résultat) et (| Texte | Lettre | Résultat))
ajouter [1] à [| Texte | Compteur v]
fin
| Texte | Recomposer le texte traité::custom

Maintenant, créez la variable (| Texte | Aléatoire | Compteur).

Divers formatages

Info
 Info :
Dans tous les cas, il vous faudra insérer la fonction sous l'emplacement du bloc dans le bloc définir | Texte | Formater (texte) (méthode) .
Titrer un texte
si <<<(méthode::custom) = [titrer]> ou <(méthode::custom) = [0]>> ou <(longueur de (méthode::custom)) = [0]>> alors // méthode par défaut si méthode est vide
si <<(fonction::custom) = [titre]> ou <(longueur de (fonction::custom)) = [0]>> alors // la première fonction est celle utilisée si la valeur « fonction » est vide
| Texte | Modifier le mot (élément (| Texte | Compteur) de [| Texte | Mots décomposés v]) [1;] [MAJ] <(1) = (2)> ::custom
fin
si <(fonction::custom) = [phrase]> alors

mettre [| Texte | Aléatoire | Compteur v] à ((| Texte | Compteur) - (1))
répéter jusqu'à ce que <non <(élément (| Texte | Aléatoire | Compteur) de [| Texte | Mots décomposés v]) = [ ]>> // un espace dans la zone de texte
ajouter (-1) à [| Texte | Aléatoire | Compteur v]
fin

si <<(| Texte | Compteur) = (1)> ou <(| Texte | Fins de phrase) contient (élément (| Texte | Aléatoire | Compteur) de [| Texte | Mots décomposés v])>> alors
| Texte | Modifier le mot (élément (| Texte | Compteur) de [| Texte | Mots décomposés v]) [1;] [MAJ] <(1) = (2)> ::custom
sinon
| Texte | Modifier le mot (élément (| Texte | Compteur) de [| Texte | Mots décomposés v]) [0;] [MAJ] <(1) = (2)> ::custom
fin
fin
fin
Mettre en majuscule un mot (entier ou pas)
si <<(méthode::custom) contient [maj]> ou <(méthode::custom) = [1]>> alors
| Texte | Modifier le mot (élément (| Texte | Compteur) de [| Texte | Mots décomposés v]) (regrouper (fonction::custom) et [;]) [MAJ] <[entier] = (fonction::custom)> ::custom
fin
Mettre en minuscule un mot (entier ou pas)
si <<(méthode::custom) contient [min]> ou <(méthode::custom) = [2]>> alors
| Texte | Modifier le mot (élément (| Texte | Compteur) de [| Texte | Mots décomposés v]) (regrouper (fonction::custom) et [;]) [min] <[entier] = (fonction::custom)> ::custom
fin
Aléatoire
si <<(méthode::custom) = [aléatoire]> ou <(méthode::custom) = [3]>> alors
mettre [| Texte | Aléatoire | Compteur v] à (1)
mettre [| Texte | Lettre | Compteur v] à []
répéter (longueur de (élément (| Texte | Compteur) de [| Texte | Mots décomposés v])) fois
si <(nombre aléatoire entre (1) et (2)) = (2)> alors
mettre [| Texte | Lettre | Compteur v] à (regrouper (| Texte | Lettre | Compteur) et (regrouper (| Texte | Aléatoire | Compteur) et [;]))
fin
ajouter (1) à [| Texte | Aléatoire | Compteur v]
fin
| Texte | Modifier le mot (élément (| Texte | Compteur) de [| Texte | Mots décomposés v]) (| Texte | Lettre | Compteur) [MAJ] <(1) = (2)> ::custom
fin



Voir aussi

Cet article fait partie de la catégorie des tutos
Tous les articles de cette catégorie :