El lenguaje de programación iJava (7)

Funciones para manejar texto

Para manejar datos de tipo numérico usamos variables de tipo entero o real y para manejar valores de verdad usamos las variables de tipo boolean. Para manejar texto usamos variables de tipo String.

A las variables de tipo String podemos darle un valor inicial indicando entre comillas dobles el texto que queramos que tengan. Y podemos comparar su valor con un texto concreto o con el de otra variable usando el símbolo ==.

void main() {
  String nombre = "Pepe";
  
  if (nombre == "Juan") {
    println("Eres tu!!");
  } else {
    println("¿Quién eres?")
  }
}

Además de comparar dos cadenas también podemos usar variables de tipo String como elemento de decisión en la estructura switch. Por ejemplo, el siguiente programa se muestra una frase u otra en función del día de la semana que se introduzca.

void main() {
  String dia = readString();
  switch (dia) {
    case "lunes":
      println("Comienza la semana");
      break;
    case "martes":
    case "miércoles":
    case "jueves":
    case "viernes":
      println("Mitad de semana");
      break;
    case "sábado":
    case "domingo":
      println("Fin de semana");
      break;
    default:
      println("¿Realmente " + dia + " es un día de la semana?");
  }
}

Fíjate como en el programa anterior usamos como etiquetas textos escritos directamente entre comillas (valores literales). Además, como lo que hay que hacer en caso de que el día introducido sea "martes", "miércoles", "jueves" o "viernes" es lo mismo hemos agrupado todas esas etiquetas para que sea cual sea la que coincida se ejecute sólo la instrucción de que muestra el mensaje "Mitad de semana".

Además, iJava incluye las siguientes funciones para manejo de texto:

  • sizeOf. Calcula la longitud de un texto, es decir, el número de caracteres que lo componen.
  • charAt. Obtiene una de las letras de un texto en función de su posición.
  • concat. Crea un texto juntando otros dos.
  • compare. Compara dos textos lexicográficamente.

Haciendo click en los enlaces anteriores podrás ver ejemplos de cada función. En el caso de la función compare hay que aclarar que orden lexicográfico significa que se compara letra a letra cada texto. Una letra será mayor que otra si está antes en el alfabeto, además, los números también se consideran letras y son mayores que todas ellas, es decir, se supone que están antes que la letra 'a' en el alfabeto.

Por otro lado, la función concat une dos cadenas pero ya hemos visto en multitud de ejemplos que usando el símbolo + también podemos conseguir el mismo efecto.

Cadenas y arrays de caracteres

Una variable de tipo String representa un texto y consiste en una lista de caracteres los que, como hemos visto antes, podemos acceder indicando su posición. Un array de caracteres también puede servir para representar un texto pero no podemos concatenar dos arrays de caracteres con la función concat ni usando el símbolo +. Por lo tanto, exite cierta relación entre un String y un array de caracteres pero hay que tener claro que no son lo mismo.

iJava incluye dos funciones para pasar de una forma de representar un texto a la otra.

Haciendo click en los enlaces anteriores podrás ver ejemplos de cada función. En el caso de la función charArrayToString hay que aclarar que sólo funciona con arrays de caracteres de una única dimensión pues son los equivalentes a un variable de tipo String.