Cadenas

Cadenas

Las cadenas de caracteres son indispensables en el desarrollo de casi cualquier aplicación. Vayamos al inicio del concepto.

Un caracter es la unidad mínima de información que corresponde aproximadamente con un grafema o con una unidad o símbolo parecido, como los del alfabeto o silabario de la forma escrita de un lenguaje natural.1

Un ejemplo de caracter es una letra, un número o un signo de puntuación. El concepto también abarca a los caracteres de control, que no se corresponden con símbolos del lenguaje natural sino con otros fragmentos de información usados para procesar textos, tales como el retorno de carro y el tabulador, así como instrucciones para impresoras y otros dispositivos que muestran dichos textos (como el avance de página). 1

Un caracter es un dato que puede ser letras del abecedario (a, b, c,..., z), dígitos (0, 1, 2, ..., 9) o símbolos especiales (#, $, ^, *, %, /, !, etc.). Existen 256 caracteres basicos que las computadoras pueden manejar, esta lista de caracteres tiene el nombre de código ASCII (American Standard Code for Information Interchange — Código Estándar Estadounidense para el Intercambio de Información).

Código ASCII

Enxiste un tipo de dato especial para caracteres. Un dato tipo caracter contiene un solo símbolo (caracter) y se escribe entre apóstrofe. Ejemplo:

'a' 'B' '$' '9' '-' '@' '#'

Cabe mencionar que los caracteres solo tienen valor como símbolo, no de otro tipo. Por esta razón ocurre lo siguiente:

'9' != 9

Esto ocurre debido a que '9' es un caracter, es decir un símbolo sin valor numérico, mientras que 9 representa el valor numérico de nueve. Por esa razón es que son diferentes ya que uno de ellos es un símbolo y el otro es un número.

Para entender la diferencia considere lo siguiente. Observe la imágen a continucación y responda la pregunta: ¿qué es?

taza

Si usted respondió: "una taza", lamento decir que está equivocado. En realidad es una fotografía de una taza. Una cosa es la taza y otra cosa diferente es la fotografía de la taza. Esa misma diferencia existe entre los símbolos y lo que representan, misma diferencia entre el caracter '9' y el número 9.

Por otro lado, existen las cadenas. Un tipo de dato cadena de caracteres es un conjunto de caracteres, y típicamente se escribe entre comillas. Este tipo de dato se llama así debido a la forma como los caracteres se acomodan, uno tras otro, como un tren de caracteres. Ejemplo:

"abcde" "cadena de caracteres" "Hola Mundo" "12345" "abc123"

En Gambas existe un tipo de Datos para manejar caracteres y cadenas: String. Para declarar una variable que contendrá caracteres o cadenas, se hace de la misma forma que cualquier variable. La sintaxis es la siguiente:

      Dim cadena As String

En los lenguajes de programación se le llama concatenación a la acción de juntar una cadena a otra, sería lo equivalente a sumarlas.

Ejemplo 1. Desarrollar un programa que solicite nombre, apellido y edad. Posteriormente imprima esta información en una sola línea.

      Public Sub Main()
        Dim nombre, apellido As String
        Dim edad As Byte

        Print "Introduzca su nombre: ";
        Input nombre

        Print "Introduzca su apellido: ";
        Input apellido

        Print "Introduzca su edad: ";
        Input edad

        Print "Hola "; nombre; " "; apellido; ", usted tiene "; edad; " años."
      End

Observe que se han declarado dos variables como String: nombre y apellido. Se declara además una tercera variable edad como Byte. Posteriormente se solicita la información al usuario. Observe como concatena el programa todas las cadenas para imprimirlas en pantalla. En términos generales, cuando algo se imprime en pantalla se convierte al tipo de dato String independientemente del tipo de dato que sea.

Existen funciones especiales para el manejo de cadenas en Gambas, algunas de ellas son CStr y Str para convertir una expresion en una cadena de caracteres; mientras que Val convierte una cadena de caracteres en un valor numérico.

Ejemplo 2. Convertir el valor númerico de una variable a una cadena de caracteres con la función Str e imprimir el resultado.

      Public Sub Main()
        Dim nombre, edad, cadena As String
        Dim x As Byte

        nombre = "Carlos"
        x = 20
        edad = Str(x)

        cadena = "Mi nombre es " & nombre & " y tengo " & edad & " años"

        Print cadena
      End

Observe que en este ejemplo se utilizó la función Str para convertir la edad, que se encontraba en una variable tipo Byte. Posteriormente se formó la cadena a imprimir utilizando la concatenación a través del operador &.

Ejemplo 3. Convertir la cadena "123" en entero utilizando la función Val, luego sume ese número con 321.

      Public Sub Main()
        Dim cadena As String
        Dim x As Float

        cadena = "123"
        x = Val(cadena)

        Print "La suma es: "; x + 321
      End

Observe que la variable cadena se le asignó la cadena de caracteres "123", posteriormente y utilizando la función Val, se convierte en el número 123 y se almacena en la variable x tipo Byte. Justo donde está el Print, y antes de imprimirse en pantalla, se hace la suma del valor convertido y contenido en x con el número 321. Por lo tanto se imprime el número 444.