Programación informática: cadenas

Durante nuestra discusión sobre characters, aprendimos que el tipo de datos de caracteres trata con un solo carácter y que puede asignar cualquier carácter desde su teclado a una variable de tipo de carácter.

Ahora, avancemos un poco y consideremos una situación en la que necesitamos almacenar más de un carácter en una variable. Hemos visto que la programación en C no permite almacenar más de un carácter en una variable de tipo de carácter. Entonces, las siguientes declaraciones no son válidas en la programación C y producen errores de sintaxis:

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

También hemos visto cómo utilizar el concepto de arrayspara almacenar más de un valor de tipo de datos similar en una variable. Aquí está la sintaxis para almacenar e imprimir cinco números en una matriz de tipo 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;
   }
}

Cuando se compila y ejecuta el código anterior, produce el siguiente resultado:

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

Ahora, definamos una matriz de cinco caracteres de la misma manera que lo hicimos para los números e intentemos imprimirlos:

#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;
   }
}

Aquí, usamos% c para imprimir el valor del carácter. Cuando se compila y ejecuta el código anterior, produce el siguiente resultado:

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

Si ha terminado con el ejemplo anterior, creo que entendió cómo funcionan las cadenas en la programación C, porque strings in C are represented as arrays of characters. La programación en C simplificó la asignación e impresión de cadenas. Veamos el mismo ejemplo una vez más con una sintaxis simplificada:

#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;
   }
}

Aquí, usamos% s para imprimir el valor de cadena completo usando el nombre de la matriz ch, que es en realidad el comienzo de la dirección de memoria que contiene ch variable como se muestra a continuación -

Aunque no es visible en los ejemplos anteriores, un programa en C asigna internamente un carácter nulo '\0'como el último carácter de cada cadena. Indica el final de la cadena y significa que si desea almacenar una cadena de 5 caracteres en una matriz, debe definir un tamaño de matriz de 6 como una buena práctica, aunque C no se queja de ello.

Si el código anterior se compila y ejecuta, produce el siguiente resultado:

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

Conceptos básicos de cadenas

Con base en la discusión anterior, podemos concluir los siguientes puntos importantes sobre cadenas en el lenguaje de programación C:

  • Las cadenas en C se representan como matrices de caracteres.

  • Podemos constituir una cadena en la programación de C asignando carácter por carácter en una matriz de caracteres.

  • Podemos constituir una cadena en la programación en C asignando una cadena completa entre comillas dobles.

  • Podemos imprimir una cadena carácter por carácter usando un subíndice de matriz o una cadena completa usando un nombre de matriz sin subíndice.

  • El último carácter de cada cadena es un carácter nulo, es decir, ‘\0’.

  • La mayoría de los lenguajes de programación proporcionan funciones integradas para manipular cadenas, es decir, puede concatenar cadenas, puede buscar desde una cadena, puede extraer subcadenas de una cadena, etc. Para obtener más información, puede consultar nuestro tutorial detallado en Programación en C o cualquier otro lenguaje de programación.

Cadenas en Java

Aunque puede usar matrices de caracteres para almacenar cadenas, Java es un lenguaje de programación avanzado y sus diseñadores intentaron proporcionar una funcionalidad adicional. Java proporciona cadenas como un tipo de datos integrado como cualquier otro tipo de datos. Significa que puede definir cadenas directamente en lugar de definirlas como una matriz de caracteres.

A continuación se muestra el programa equivalente escrito en Java. Java hace uso denew operador para crear variables de cadena como se muestra en el siguiente programa.

Puede intentar ejecutar el siguiente programa para ver el resultado:

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

Cuando se ejecuta el programa anterior, produce el siguiente resultado:

String = Hello

Cadenas en Python

Crear cadenas en Python es tan simple como asignar una cadena a una variable de Python usando comillas simples o dobles.

A continuación se muestra un programa simple que crea dos cadenas y las imprime usando la función print () -

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

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

Cuando se ejecuta el programa anterior, produce el siguiente resultado:

var1 =  Hello World!
var2 =  Python Programming

Python no admite el tipo de carácter; estos se tratan como cadenas de longitud uno, por lo que también se consideran una subcadena.

Para acceder a las subcadenas, use los corchetes para cortar junto con el índice o índices para obtener su subcadena. Eche un vistazo al siguiente segmento de código:

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

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

Cuando se ejecuta el código anterior, produce el siguiente resultado:

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