Programmation informatique - Chaînes

Au cours de notre discussion sur characters, nous avons appris que le type de données caractère traite d'un seul caractère et que vous pouvez attribuer n'importe quel caractère de votre clavier à une variable de type caractère.

Maintenant, allons un peu plus loin et considérons une situation où nous devons stocker plus d'un caractère dans une variable. Nous avons vu que la programmation C ne permet pas de stocker plus d'un caractère dans une variable de type caractère. Ainsi, les instructions suivantes ne sont pas valides en programmation C et produisent des erreurs de syntaxe -

char ch1 = 'ab';
char ch2 = '10';

Nous avons également vu comment utiliser le concept de arrayspour stocker plus d'une valeur de type de données similaire dans une variable. Voici la syntaxe pour stocker et imprimer cinq nombres dans un tableau de type int -

#include <stdio.h>

main() {
   int number[5] = {10, 20, 30, 40, 50};
   int i = 0;
        
   while( i < 5 ) {
      printf("number[%d] = %d\n", i, number[i] );
      i = i + 1;
   }
}

Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant -

number[0] = 10
number[1] = 20
number[2] = 30
number[3] = 40
number[4] = 50

Maintenant, définissons un tableau de cinq caractères de la même manière que nous l'avons fait pour les nombres et essayons de les imprimer -

#include <stdio.h>

main() {
   char ch[5] = {'H', 'e', 'l', 'l', 'o'};
   int i = 0;
        
   while( i < 5 ) {
      printf("ch[%d] = %c\n", i, ch[i] );
      i = i + 1;
   }
}

Ici, nous avons utilisé% c pour afficher la valeur du caractère. Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant -

ch[0] = H
ch[1] = e
ch[2] = l
ch[3] = l
ch[4] = o

Si vous en avez terminé avec l'exemple ci-dessus, je pense que vous avez compris comment les chaînes fonctionnent en programmation C, car strings in C are represented as arrays of characters. La programmation C a simplifié l'affectation et l'impression des chaînes. Reprenons le même exemple avec une syntaxe simplifiée -

#include <stdio.h>

main() {
   char ch[5] = "Hello";
   int i = 0;
    
   /* Print as a complete string */
   printf("String = %s\n", ch);  

   /* Print character by character */
   while( i < 5 ) {
      printf("ch[%d] = %c\n", i, ch[i] );
      i = i + 1;
   }
}

Ici, nous avons utilisé% s pour imprimer la valeur de la chaîne complète en utilisant le nom du tableau ch, qui est en fait le début de la gestion de l'adresse mémoire ch variable comme indiqué ci-dessous -

Bien que cela ne soit pas visible dans les exemples ci-dessus, un programme C attribue en interne un caractère nul '\0'comme dernier caractère de chaque chaîne. Cela indique la fin de la chaîne et cela signifie que si vous souhaitez stocker une chaîne de 5 caractères dans un tableau, vous devez définir une taille de tableau de 6 comme une bonne pratique, bien que C ne s'en plaint pas.

Si le code ci-dessus est compilé et exécuté, il produit le résultat suivant -

String = Hello
ch[0] = H
ch[1] = e
ch[2] = l
ch[3] = l
ch[4] = o

Concepts de base des chaînes

Sur la base de la discussion ci-dessus, nous pouvons conclure les points importants suivants sur les chaînes en langage de programmation C -

  • Les chaînes en C sont représentées comme des tableaux de caractères.

  • On peut constituer une chaîne en programmation C en affectant caractère par caractère dans un tableau de caractères.

  • On peut constituer une chaîne en programmation C en attribuant une chaîne complète entre guillemets.

  • Nous pouvons imprimer une chaîne caractère par caractère en utilisant un indice de tableau ou une chaîne complète en utilisant un nom de tableau sans indice.

  • Le dernier caractère de chaque chaîne est un caractère nul, c'est-à-dire ‘\0’.

  • La plupart des langages de programmation fournissent des fonctions intégrées pour manipuler des chaînes, c'est-à-dire que vous pouvez concaténer des chaînes, vous pouvez rechercher à partir d'une chaîne, vous pouvez extraire des sous-chaînes d'une chaîne, etc. Pour en savoir plus, vous pouvez consulter notre tutoriel détaillé sur Programmation C ou tout autre langage de programmation.

Chaînes en Java

Bien que vous puissiez utiliser des tableaux de caractères pour stocker des chaînes, Java est un langage de programmation avancé et ses concepteurs ont essayé de fournir des fonctionnalités supplémentaires. Java fournit des chaînes en tant que type de données intégré comme tout autre type de données. Cela signifie que vous pouvez définir des chaînes directement au lieu de les définir comme un tableau de caractères.

Voici le programme équivalent écrit en Java. Java utilise lenew opérateur pour créer des variables de chaîne comme indiqué dans le programme suivant.

Vous pouvez essayer d'exécuter le programme suivant pour voir la sortie -

public class DemoJava {
   public static void main(String []args) {
      String str = new String("Hello");  
      System.out.println( "String = " + str );
   }
}

Lorsque le programme ci-dessus est exécuté, il produit le résultat suivant -

String = Hello

Chaînes en Python

Créer des chaînes en Python est aussi simple que d'attribuer une chaîne dans une variable Python à l'aide de guillemets simples ou doubles.

Vous trouverez ci-dessous un programme simple qui crée deux chaînes et les imprime à l'aide de la fonction print () -

var1 = 'Hello World!'
var2 = "Python Programming"

print "var1 = ", var1
print "var2 = ", var2

Lorsque le programme ci-dessus est exécuté, il produit le résultat suivant -

var1 =  Hello World!
var2 =  Python Programming

Python ne prend pas en charge le type de caractère; celles-ci sont traitées comme des chaînes de longueur un, donc également considérées comme une sous-chaîne.

Pour accéder aux sous-chaînes, utilisez les crochets pour le découpage avec l'index ou les index pour obtenir votre sous-chaîne. Jetez un œil au segment de code suivant -

var1 = 'Hello World!'
var2 = "Python Programming"

print "var1[0]: ", var1[0]
print "var2[1:5]: ", var2[1:5]

Lorsque le code ci-dessus est exécuté, il produit le résultat suivant -

var1[0]:  H
var2[1:5]:  ytho