Programador Universitario Facultad de Ciencias Exactas y Tecnología - UNT Licenciatura en Informática PROGRAMACION Trabajo Práctico 7 29/OCT/10 TEMAS: Arreglos de caracteres: Cadenas Un repaso En la mayoría de los lenguajes de programación existe un tipo estándar de dato que es la hilera o cadena de caracteres: string. Un carácter es la representación de una letra, número o símbolo que se guarda internamente de acuerdo a su representación determinada por el código ASCII. Cuando se trabaja con el tipo string, se tienen n caracteres tratados como una unidad. El lenguaje C carece de este tipo de dato estándar. En su reemplazo, se define la cadena. Una cadena puede incluir: letras, dígitos y símbolos especiales y termina con el carácter NULL (nulo) que indica su final. Dentro de un programa, el carácter NULL se representa por la secuencia de escape “\0” . (La barra invertida es ALT 92). Para cada uno de los problemas propuestos escriba primero una solución algorítmica estructurada. Recuerde que con esta disciplina de trabajo, Ud. aprende a escribir programa estructurados. A trabajar Cad1. Escriba un programa que lea una línea de texto de la entrada estándar con la función gets, la almacene en un arreglo de caracteres de nombre cad [100] y cuente y extraiga de la línea las letras mayúsculas y minúsculas, modificando el arreglo cad. ¡Use funciones definidas por el usuario ! Cad2. Escriba un programa que introduzca 4 cadenas que representen enteros, convierta las cadenas a enteros, sume los valores e imprima el total de la suma. ¡Use funciones definidas por el usuario ! Cad3. Escriba un programa que introduzca un número telefónico como cadena. El número puede ser el de un celular o de un teléfono fijo, con el código de área como prefijo. Por ejemplo: 381 436 4093 (TE fijo) ò 381 487 5366 (TE mòvil ). El programa deberá extraer el código de área como un token, los tres primeros dígitos del número como token y los últimos cuatro dígitos del número como token. Los siete dígitos de número deberán ser concatenados en una cadena. El programa deberá convertir el número de área a int y convertir la cadena del número telefónico a long. Tanto el código de área como el número telefónico deberá ser impreso. ¡Use funciones definidas por el usuario ! Y ahora un avance sobre punteros… Para la realización de esta parte del trabajo práctico le proponemos que haga un seguimiento ordenado del mismo y que siga las consignas indicadas. Punt1. En el código del Ejercicio Cad1, declare en forma local a main una variable puntero punt, que apunte a un objeto de tipo char. Punt2. Asigne la dirección inicial del arreglo cad a la variable puntero punt. Haga esta tarea de dos maneras distintas. Punt3. Muestre en pantalla la dirección de la variable puntero punt. Use el indicador de formato apropiado. Muestre también la dirección de la primera componente del arreglo cad. Acceda a la misma de forma indirecta, o sea, a través de la dirección. Punt4. Muestre en pantalla el contenido de la quinta celda del arreglo cad. Refiérase a ella utilizando: notación de subíndice de arreglo, notación de puntero con desplazamiento con el puntero punt y notación de subíndice de puntero con el puntero punt. Punt5. Suponiendo que punt apunta al principio del arreglo cad, ¿cuál es la dirección referenciada por punt+3? ¿Cuál es el valor almacenado en esa dirección? Punt6. Escriba las instrucciones necesarias para visualizar en la pantalla cada uno de las componentes del vector cad, utilizando notación de punteros con el puntero punt. Punt7. Muestre en pantalla los elementos del arreglo cad, mediante subíndices del puntero punt. Se recomienda la lectura de los capítulos de los libros indicados a continuación: Del libro Como programar en C y C++, de Deitel & Deitel, Capítulo 6: Arreglos. Del libro Como programar en C y C++, de Deitel & Deitel, Capítulo 8: Caracteres y Cadenas. 29/oct/2010 Página 1 de 2 Programador Universitario Facultad de Ciencias Exactas y Tecnología - UNT Licenciatura en Informática PROGRAMACION Trabajo Práctico 7 29/OCT/10 Del libro El lenguaje de programación C, de B Kernighan y D. Ritchie, Capítulo 1, Sección 1.6: Arreglos. Del libro C, Manual de Referencia, de H. Schildt, Capítulo 4: Arreglos y Cadenas. Todos estos libros se encuentran en la biblioteca de la FACET. NOTA: Se sugiere la reescritura de todos los ejercicios de cadena usando notación de punteros como ejercitación adicional. Funciones para cadenas En la siguiente tabla de prototipos de funciones del archivo de cabecera <string.h>, las variables cad1 y cad2 son arreglos de caracteres (cadenas). Función Descripción int strlen(cad1) retorna la longitud de cad1 int strcmp(cad1, cad2) Compara cad1 con cad2. La comparación se hace carácter a carácter. SI (cad1[i] < cad2 [i] ) ENTONCES Retorna < 0 SI (cad1[i] = cad2 [i] ) ENTONCES Retorna 0 SI (cad1[i] > cad2 [i] ) ENTONCES Retorna > 0 int strncmp(cad1,cad2,n) Compara hasta n caracteres de la cad1 con cad2 sin diferenciar mayúsculas de minúsculas. SI (cad1[i] < cad2 [i] ) ENTONCES Retorna < 0 SI (cad1[i] = cad2 [i] ) ENTONCES Retorna 0 SI (cad1[i] > cad2 [i] ) ENTONCES Retorna > 0 char *strcpy(cad1, cad2) Copia la cad2 a cad1, incluyendo el terminador “\0”. Retorna cad1. char *strncpy(cad1, cad2,n) Copia hasta n caracteres de la cad2 a cad1. Retorna cad1. Rellena con “\0” si cad2 atiene menos de n caracteres. char *strcat(cad1, cad2) Concatena la cad2 al final de cad1. Retorna cad1. 29/oct/2010 Página 2 de 2