Facultad: Ingeniería Escuela: Ingeniería en Computación Asignatura: Programación Estructurada Objetivos Tema: Cadenas en C#. Mostrar la implementación y el uso de cadenas de texto. Identificar las funciones de tratamiento de cadenas en C#. Introducción Una definición de cadena es la siguiente: Serie de caracteres tratados como una sola unidad. Una cadena puede incluir letras, dígitos y varios caracteres especiales (+, -, *, /, $, entre otros). Una cadena en C# es una matriz de caracteres que se declara utilizando la palabra clave String. Un literal de cadena se declara utilizando las comillas, como se muestra en el siguiente ejemplo: String S = Estamos en la guía 10 ; Los objetos de cadena son inmutables, lo que significa que no se pueden cambiar una vez creados. Los métodos que actúan sobre las cadenas, devuelven los nuevos objetos de cadena. En muchas ocasiones es preciso trabajar con cadenas de caracteres en las diferentes aplicaciones que se desarrollan, por eso es muy necesario conocer algunas de las funciones más utilizadas para el tratamiento de estas estructuras. Material y Equipo Guía de laboratorio No. 10. Computadora con Visual Studio 2013 o superior. Dispositivo de almacenamiento (USB). 254
Procedimiento Ejemplo1 Función de comparación de cadenas Equals(). Este programa comprueba que el usuario y contraseña sean los correctos; de lo contrario, al tercer intento cierra el programa. 1 static void Main(string[] args) 2 { 3 Login(); 4 Console.ReadKey(); 5 } 6 static void Login() 7 { 8 String Usuario = "user"; 9 String Password = "123456"; 10 Console.Title = "L O G I N"; 11 // Con la siguiente funcion mostramos fecha y hora del sistema 12 Console.WriteLine("Fecha y hora del sistema: [" + DateTime.Now.ToString() + "]"); 13 Console.ReadLine(); 14 for (int i = 0; i < 3; i++) 15 { 16 Console.Clear(); 17 Console.WriteLine("Intento: [" + (i + 1) + "]"); 18 Console.Write("Usuario: "); 19 String User = Console.ReadLine(); 20 Console.Write("Contraseña: "); 21 String Pass = Console.ReadLine(); 22 if ((User.Equals(Usuario)) && (Pass.Equals(Password))) 23 { 24 Console.WriteLine("\n"); 25 Console.WriteLine("BIENVENID@ AL PROGRAMA... "); 26 break; 27 } 28 else 29 { 30 Console.WriteLine("\n"); 31 Console.WriteLine("Saliendo del programa...intente más tarde..."); 32 } 33 } 34 } 255
Ejemplo2 En este ejemplo, utilizamos la función Replace() para sustituir un carácter específico por otro carácter. 2 String cadena, cambio, opcion; 3 do 4 { 5 Console.Clear(); 6 Console.WriteLine("Escribe una oracion: "); 7 cadena = Console.ReadLine(); 8 cambio = cadena.replace("a", "*"); 9 Console.WriteLine("\t" + cambio); 10 Console.WriteLine("Desea ingresar otra oracion? (s/n)"); 11 opcion = Console.ReadLine(); 12 }while (opcion=="s" opcion=="s"); 13 Console.ReadKey(); 14 } 15 } Ejemplo3 En este ejemplo vamos a desarrollar una pequeña aplicación que verifica si una frase ingresada es palíndroma. Una frase palíndroma es aquella que se lee igual de izquierda a derecha y viceversa. 2 Console.Title = "Digitar una palabra para averiguar si es palindroma"; 3 String op; 4 do 256
5 { 6 Console.Clear(); 7 Palindroma(); 8 Console.WriteLine("Desea verificar otra frase? (s/n)"); 9 op = Console.ReadLine(); 10 } while (op == "S" op == "s"); 11 Console.ReadKey(); 12 } 13 static void Palindroma() 14 { 15 String cadena1 = "", cadena2 = ""; 16 Console.WriteLine("Escribe una palabra: "); 17 cadena1 = Console.ReadLine(); 18 for (int i = cadena1.length - 1; i >= 0; i--) 19 { 20 cadena2 = cadena2 + cadena1[i]; 21 } 22 Console.WriteLine("La cadena invertida es: " + cadena2); 23 if (String.Equals(cadena1, cadena2)) 24 { 25 Console.WriteLine("La cadena " + cadena1 + " es palindroma..."); 26 } 27 else 28 { 29 Console.WriteLine("La cadena " + cadena1 + " no es palindroma..."); 30 } 31 } 32 } Ejemplo4 Funciones para convertir cadenas a mayúsculas y minúsculas. Además utilizamos la función que calcula el número de caracteres de una frase cualquiera (incluye espacios en blanco como caracteres). 2 Console.Title = "Programa que convierte una oración"; 3 String cad1, cad2, cad3; 4 int largo; 5 Console.WriteLine("Digitar una frase que tenga letras mayúsculas y minúsculas: "); 6 cad1 = Console.ReadLine(); 7 // la siguiente función calcula el número de caracteres 8 largo = cad1.length; 9 Console.WriteLine("La frase [" + cad1 + "] tiene [" + largo + "] caracteres."); 10 // la siguiente función convierte la frase a letras minúsculas 11 cad2 = cad1.tolower(); 12 Console.WriteLine("La frase en letras minúsculas es : " + cad2); 13 // la siguiente función convierte la frase a letras minúsculas 14 cad3 = cad1.toupper(); 257
15 Console.WriteLine("La frase en letras mayúsculas es : " + cad3); 16 Console.ReadKey(); 17 } 18 } Análisis de Resultados Desarrollar las siguientes aplicaciones en C#: 1. Comparar dos cadenas de caracteres haciendo uso de la función Compare(). 2. Concatenar cuatro cadenas de caracteres utilizando la función Concat(). 3. Invertir los elementos de un vector tipo String. Investigación Complementaria Se evaluará la presentación de los ejercicios propuestos en la sesión de laboratorio. Bibliografía Deitel, Harvey M. y Paul J. Deitel, Cómo Programar en C#, Segunda Edición, México, 2007. 258