Bonjour ! Dans la leçon précédente, nous avons vu comment une chaîne de caractères peut être traitée comme un tableau : nous avons appris à connaître sa longueur et à lire le caractère situé à un index précis. Cette compétence nous a permis d'analyser le contenu d'une chaîne existante.
Introduction
Aujourd'hui, nous passons de l'analyse à la construction. L'objectif de cette leçon est de vous apprendre à construire une nouvelle chaîne de caractères en assemblant des caractères ou d'autres chaînes. Cette opération fondamentale s'appelle la concaténation.
Savoir construire des chaînes est essentiel. Cela vous permettra de formater des messages pour les afficher à un utilisateur (par exemple, "Bonjour Jean, vous avez 3 nouveaux messages"), de manipuler et réorganiser des données textuelles, ou de transformer une information d'un format à un autre. C'est une brique de base pour rendre vos algorithmes plus dynamiques et interactifs.
1. La concaténation : assembler des chaînes
La concaténation est l'action de mettre bout à bout deux ou plusieurs chaînes de caractères pour en former une nouvelle. L'opérateur le plus commun pour réaliser cette action, que ce soit en pseudo-code ou dans de nombreux langages de programmation, est le signe +.
Par exemple :
"Bonjour" + " " + "le monde"donnera la nouvelle chaîne"Bonjour le monde".- Si
prenom ← "Alex", alors"Salut " + prenomdonnera"Salut Alex".
Pour bien comprendre ce qui se passe, l'article suivant vous montre des exemples concrets de cette opération.
Cet article, bien qu'utilisant la syntaxe du langage Python, illustre parfaitement le concept de concaténation. Les exemples sont très similaires à ce que nous écrivons en pseudo-code.
Lisez la section intitulée 'Concaténation'. Observez comment l'opérateur + est utilisé pour combiner les variables a et b. Ignorez pour l'instant l'opérateur * qui sert à la répétition.
L'image ci-dessous illustre ce processus. Imaginez que chaine1 contienne "Salut" et chaine2 contienne "Mateo". La concaténation consiste à prendre les caractères de chaine2 et à les ajouter à la fin de chaine1.

Une règle importante : on ne mélange pas les types !
Une erreur fréquente chez les débutants est de vouloir concaténer une chaîne avec un nombre."Votre score est : " + 100
La plupart des langages refuseront cette opération car ils ne savent pas comment "additionner" du texte et un nombre. Il faut d'abord convertir le nombre en une chaîne de caractères.
En pseudo-code, nous utiliserons une fonction NombreVersChaine().
L'opération correcte serait donc :"Votre score est : " + NombreVersChaine(100) ce qui produira bien la chaîne "Votre score est : 100".
L'article que vous avez commencé à lire montre exactement cette situation.
Voyons maintenant comment gérer les erreurs de type lors de la concaténation.
Lisez la section 'Conversion'. Remarquez l'erreur (TypeError) qui se produit lorsqu'on essaie de faire "..." + 123. Observez ensuite la solution qui utilise la fonction str() pour convertir le nombre en chaîne.
2. Construire une chaîne pas à pas
La véritable puissance de la concaténation se révèle lorsqu'on l'utilise à l'intérieur d'une boucle. Le principe est simple mais très efficace :
- On initialise une chaîne de caractères vide.
- On parcourt une autre structure (une autre chaîne, un tableau, etc.).
- À chaque étape de la boucle, on ajoute un caractère ou une petite chaîne à notre chaîne en construction.
Exemple : Inverser une chaîne
C'est l'exemple classique pour illustrer cette technique. Pour inverser une chaîne comme "ALGO", nous allons :
- Créer une chaîne vide
inverse ← "". - Parcourir "ALGO" caractère par caractère ('A', 'L', 'G', 'O').
- Pour chaque caractère, l'ajouter au début de
inverse.- Après 'A' :
inversedevient"A". - Après 'L' :
inversedevient"L" + "A"->"LA". - Après 'G' :
inversedevient"G" + "LA"->"GLA". - Après 'O' :
inversedevient"O" + "GLA"->"OGLA".
- Après 'A' :
Le document suivant vous présente l'algorithme formel pour cette opération.
[PDF] Les chaînes de caractère
Ce document montre l'algorithme d'inversion d'une chaîne, qui est un parfait exemple de construction de chaîne dans une boucle.
Dans la section 'Exercice 2', concentrez-vous sur la partie 'Forme Algorithmique'. Analysez comment la variable ch2 est initialisée à " " (une chaîne vide) et comment, à l'intérieur de la boucle pour, le nouveau caractère ch[i] est placé avant ch2 pour construire la chaîne inversée.
3. Construire une chaîne à partir de sous-chaînes
Parfois, on ne veut pas construire une chaîne caractère par caractère, mais en assemblant des morceaux plus gros, appelés sous-chaînes (ou substrings en anglais).
Pour cela, on utilise une fonction que l'on notera Sous_Chaine(chaine, index_debut, longueur). Elle extrait une partie de chaine en partant de index_debut sur une certaine longueur.
Sous_Chaine("ALGORITHME", 0, 4)renverrait"ALGO".Sous_Chaine("ALGORITHME", 4, 6)renverrait"RITHME".
L'exercice suivant est un cas d'usage très parlant : inverser l'ordre du nom et du prénom.
[PDF] Les chaînes de caractère
Cet exercice illustre comment extraire des sous-chaînes (le nom et le prénom) pour les réassembler dans un nouvel ordre.
Lisez l' 'Exercice 5 : Forme Algorithmique'. Cet algorithme part d'une chaîne comme 'Dupont Martin'. Il trouve la position de l'espace, extrait les deux sous-chaînes 'Dupont' et 'Martin', puis les concatène avec un espace pour produire 'Martin Dupont'. Suivez la logique des variables ch1, ch2 et ch3.
4. À vous de pratiquer !
Votre préférence pour la pratique est un excellent atout. Mettons en application ces concepts avec deux exercices. Essayez de les résoudre sur papier avant de regarder la solution.
Exercice 1 : La fonction Miroir
En vous inspirant de l'algorithme d'inversion, écrivez une fonction Miroir(chaine_entree) qui retourne une nouvelle chaîne contenant les caractères de chaine_entree dans l'ordre inverse.
Miroir("BONJOUR")doit retourner"RUOJNOB".Miroir("KAYAK")doit retourner"KAYAK".
Indice : L'algorithme est presque identique à celui que vous avez étudié. La seule différence est que le résultat doit être retourné par la fonction, et non affiché.
Cliquez ici pour voir une solution possible
Fonction Miroir(chaine_entree : Chaîne) : Chaîne
Variables
chaine_inverse : Chaîne
caractere_courant : Caractère
i : Entier
Début
// 1. Initialiser une chaîne vide
chaine_inverse ← ""
// 2. Parcourir la chaîne d'entrée
Pour i allant de 0 à Longueur(chaine_entree) - 1 Faire
caractere_courant ← chaine_entree[i]
// 3. Ajouter chaque caractère au début de la nouvelle chaîne
chaine_inverse ← caractere_courant + chaine_inverse
FinPour
// 4. Retourner le résultat final
Retourner chaine_inverse
Fin
Exercice 2 : Supprimer un caractère
Écrivez une fonction SupprimeOccurrences(chaine_originale, car_a_supprimer) qui retourne une nouvelle chaîne de caractères, identique à la chaîne originale, mais où toutes les occurrences du caractère car_a_supprimer ont été enlevées.
SupprimeOccurrences("PROGRAMMATION", 'M')doit retourner"PROGRATION".SupprimeOccurrences("Bonjour le monde", 'o')doit retourner"Bnjur le mnde".
Indice : La logique est très similaire. Parcourez la chaîne originale caractère par caractère. Si le caractère courant est différent de celui à supprimer, alors concaténez-le à votre nouvelle chaîne.
Cliquez ici pour voir une solution possible
Fonction SupprimeOccurrences(chaine_originale : Chaîne, car_a_supprimer : Caractère) : Chaîne
Variables
nouvelle_chaine : Chaîne
caractere_courant : Caractère
i : Entier
Début
// 1. Initialiser une chaîne vide
nouvelle_chaine ← ""
// 2. Parcourir la chaîne d'entrée
Pour i allant de 0 à Longueur(chaine_originale) - 1 Faire
caractere_courant ← chaine_originale[i]
// 3. Ajouter le caractère seulement s'il est différent de celui à supprimer
Si caractere_courant ≠ car_a_supprimer Alors
nouvelle_chaine ← nouvelle_chaine + caractere_courant
FinSi
FinPour
// 4. Retourner le résultat
Retourner nouvelle_chaine
Fin
Ce type de fonction est décrit dans l'exercice "Suppression des occurrences d’un caractère" de la ressource LINK.
Conclusion
Excellent travail ! Vous maîtrisez maintenant une compétence essentielle : la construction de chaînes de caractères. En combinant la concaténation avec des boucles et des conditions, vous pouvez transformer, filtrer et créer n'importe quel type de texte.
Les points clés à retenir :
- La concaténation est l'assemblage de chaînes, réalisé le plus souvent avec l'opérateur
+. - Il est crucial de s'assurer que tous les éléments sont de type
Chaîneavant de les concaténer. Utilisez une fonction commeNombreVersChaine()si besoin. - Le patron algorithmique le plus courant consiste à initialiser une chaîne vide et à la construire progressivement à l'intérieur d'une boucle.
- L'extraction de sous-chaînes permet d'assembler des morceaux plus importants d'une chaîne existante.
Et après ?
Maintenant que vous savez analyser une chaîne (leçon précédente) et en construire de nouvelles (cette leçon), vous avez tous les outils pour résoudre des problèmes algorithmiques plus complexes basés sur le texte. Dans la prochaine leçon, nous mettrons tout cela en pratique pour résoudre des défis classiques, comme compter le nombre de voyelles dans une phrase ou vérifier si un mot est un palindrome. La fonction Miroir que vous avez écrite aujourd'hui sera particulièrement utile