2.3. Tipo de datos carácter
También tenemos un tipo de datos que nos permite almacenar una única letra, el tipo "char":
char letra;
Asignar valores es sencillo: el valor se indica entre comillas simples
letra = 'a';
Para leer valores desde teclado, lo podemos hacer de forma similar a los casos anteriores: leemos toda una frase con ReadLine y convertimos a tipo "char" usando Convert.ToChar:
letra = Convert.ToChar(Console.ReadLine());
Así, un programa que de un valor inicial a una letra, la muestre, lea una nueva letra tecleada por el usuario, y la muestre, podría ser:
using System; public class Ejemplo07 { public static void Main() { char letra; letra = 'a'; Console.WriteLine("La letra es {0}", letra); Console.WriteLine("Introduce una nueva letra"); letra = Convert.ToChar(Console.ReadLine()); Console.WriteLine("Ahora la letra es {0}", letra); } }
2.3.1. Secuencias de escape: \n y otras.
Como hemos visto, los textos que aparecen en pantalla se escriben con WriteLine, indicados entre paréntesis y entre comillas dobles. Entonces surge una dificultad: ¿cómo escribimos una comilla doble en pantalla? La forma de conseguirlo es usando ciertos caracteres especiales, lo que se conoce como "secuencias de escape". Existen ciertos caracteres especiales que se pueden escribir después de una barra invertida (\) y que nos permiten conseguir escribir esas comillas dobles y algún otro carácter poco habitual. Por ejemplo, con \" se escribirán unas comillas dobles, y con \' unas comillas simples, o con \n se avanzará a la línea siguiente de pantalla.
Estas secuencias especiales son las siguientes:
Secuencia | Significado |
\a | Emite un pitido |
\b | Retroceso (permite borrar el último carácter) |
\f | Avance de página (expulsa una hoja en la impresora) |
\n | Avanza de línea (salta a la línea siguiente) |
\r | Retorno de carro (va al principio de la línea) |
\t | Salto de tabulación horizontal |
\v | Salto de tabulación vertical |
\' | Muestra una comilla simple |
\" | Muestra una comilla doble |
\\ | Muestra una barra invertida |
\0 | Carácter nulo (NULL) |
Vamos a ver un ejemplo que use los más habituales:
using System; public class Ejemplo08 { public static void Main() { Console.WriteLine("Esta es una frase"); Console.WriteLine(); Console.WriteLine(); Console.WriteLine("y esta es otra, separada dos lineas"); Console.WriteLine("\n\nJuguemos mas:\n\notro salto"); Console.WriteLine("Comillas dobles: \" y simples \', y barra \\"); } }
Su resultado sería este:
Esta es una frase y esta es otra, separada dos lineas Juguemos mas: otro salto Comillas dobles: " y simples ', y barra \
En algunas ocasiones puede ser incómodo manipular estas secuencias de escape. Por ejemplo, cuando usemos estructuras de directorios: c:\\datos\\ejemplos\\curso\\ejemplo1. En este caso, se puede usar una arroba (@) antes del texto sin las barras invertidas:
ruta = @"c:\datos\ejemplos\curso\ejemplo1"
En este caso, el problema está si aparecen comillas en medio de la cadena. Para solucionarlo, se duplican las comillas, así:
orden = @"copy ""documento de ejemplo"" f:"
Ejercicio propuesto: Crear un programa que pida al usuario que teclee cuatro letras y las muestre en pantalla juntas, pero en orden inverso, y entre comillas dobles. Por ejemplo si las letras que se teclean son a, l, o, h, escribiría "hola".
2.4. Toma de contacto con las cadenas de texto
Las cadenas de texto son tan fáciles de manejar como los demás tipos de datos que hemos visto, con apenas tres diferencias:
- Se declaran con "string".
- Si queremos dar un valor inicial, éste se indica entre comillas dobles.
- Cuando leemos con ReadLine, no hace falta convertir el valor obtenido.
Así, un ejemplo que diera un valor a un "string", lo mostrara (entre comillas, para practicar las secuencias de escape que hemos visto en el apartado anterior) y leyera un valor tecleado por el usuario podría ser:
using System; public class Ejemplo09 { public static void Main() { string frase; frase = "Hola, como estas?"; Console.WriteLine("La frase es \"{0}\"", frase); Console.WriteLine("Introduce una nueva frase"); frase = Console.ReadLine(); Console.WriteLine("Ahora la frase es \"{0}\"", frase); } }
Se pueden hacer muchas más operaciones sobre cadenas de texto: convertir a mayúsculas o a minúsculas, eliminar espacios, cambiar una subcadena por otra, dividir en trozos, etc. Pero ya volveremos a las cadenas más adelante, cuando conozcamos las estructuras de control básicas.
2.5. Los valores "booleanos"
En C# tenemos también un tipo de datos llamado "booleano" ("bool"), que puede tomar dos valores: verdadero o falso:
bool encontrado;
encontrado = true;
Este tipo de datos hará que podamos escribir de forma sencilla algunas condiciones que podrían resultar complejas, pero eso lo veremos en el tema 3.