0% encontró este documento útil (0 votos)
86 vistas11 páginas

Practica 11

Este documento proporciona información sobre cadenas de caracteres en C. Explica que una cadena de caracteres es una secuencia de caracteres seguida por un caracter nulo. Detalla cómo declarar, leer y escribir cadenas de caracteres utilizando funciones como scanf, gets, printf y puts. También describe cómo las cadenas se almacenan como arreglos de caracteres y la importancia del caracter nulo al final.

Cargado por

Ricardo
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
86 vistas11 páginas

Practica 11

Este documento proporciona información sobre cadenas de caracteres en C. Explica que una cadena de caracteres es una secuencia de caracteres seguida por un caracter nulo. Detalla cómo declarar, leer y escribir cadenas de caracteres utilizando funciones como scanf, gets, printf y puts. También describe cómo las cadenas se almacenan como arreglos de caracteres y la importancia del caracter nulo al final.

Cargado por

Ricardo
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Fecha de efectividad: ___2019-1____________

UNIVERSIDAD AUTÓNOMA DE BAJA CALIFORNIA


FACULTAD DE INGENIERÍA (UNIDAD MEXICALI) DOCUMENTO
DEL SISTEMA DE CALIDAD

Formato para prácticas de laboratorio

CLAVE DE
PROGRAMA PLAN DE
UNIDAD DE NOMBRE DE LA UNIDAD DE APRENDIZAJE
EDUCATIVO ESTUDIO
APRENDIZAJE

TRONCO COMÚN 2009-2 11214 PROGRAMACIÓN

PRÁCTICA LABORATORIO DURACIÓN


CIENCIAS BÁSICAS (PROGRAMACIÓN)
No. DE (HORAS)

NOMBRE DE LA
11 CADENAS DE CARACTERES 2
PRÁCTICA

1. INTRODUCCIÓN

Una cadena de caracteres en C es una secuencia de cero o más caracteres seguidas por un caracter NULL o \0.
Esta secuencia o serie de caracteres es tratada como una sola unidad. Las cadenas de caracteres pueden
contener letras, dígitos y varios caracteres especiales como +, - , *, /, $, y otros, y siempre terminará con el caracter
nulo ('\0'), que indica el fin de la cadena.
Es importante asegurar el caracter de terminación NULL, ya que con éste es cómo C define y maneja las
longitudes de las cadenas. Todas las funciones de la biblioteca estándar de C lo requieren para una operación
satisfactoria.

2. OBJETIVO (COMPETENCIA)

Desarrollar aplicaciones informáticas para la manipulación de cadenas de caracteres aplicando en el desarrollo


funciones estándar de la biblioteca de C, que facilitan el procesamiento de cadenas y caracteres.

Formuló Revisó Autorizó


M.C. Pablo Martín Navarro Álvarez
Dra. Wendolyn Elizabeth Aguilar Salinas Dra. Araceli Celina Justo Dr. Daniel Hernández Balbuena
M.C. Jorge Eduardo Ibarra Esquer López
M.C.E. Hilda Olivia Albarrán Padilla
Nombre y firma del maestro Nombre y Firma del Nombre y Firma del
Responsable del Programa Director/Representante de la
Educativo Dirección

Código: GC-N4-017 Revisión: 4


Página 1 de 11
Fecha de efectividad: __2019-1__________

UNIVERSIDAD AUTÓNOMA DE BAJA CALIFORNIA


FACULTAD DE INGENIERÍA (UNIDAD MEXICALI) DOCUMENTO
DEL SISTEMA DE CALIDAD

Formato para prácticas de laboratorio

3. FUNDAMENTO

Las cadenas de caracteres (también llamadas cadenas o strings) son un tipo particular de arreglos. Son de hecho
arreglos de tipo char, con la particularidad que tienen una marca de fin de cadena llamada caracter nulo o (el
caracter '\0').

Es importante comprender la diferencia entre arreglos de caracteres y una cadena de caracteres. Las cadenas
como se dijo anteriormente, contienen un carácter nulo al final del arreglo de caracteres. Las cadenas se deben
almacenar en arrays de caracteres, pero no todos los arrays de caracteres contienen cadenas.

Ejemplo de almacenamiento de un array de caracteres:

Ejemplo de almacenamiento de una cadena de caracteres:

Es importante notar que una cadena puede manejarse como una unidad o bien como un conjunto de caracteres,
los cuales pueden ser direccionados por la posición que ocupan dentro de la cadena o arreglo. Por ejemplo una
cadena se podría imprimir de las siguientes maneras:

char palabra[20]="UNIVERSIDAD";
printf("El contenido de la cadena es %s\n", palabra);

printf("El contenido de la cadena es\n");


for (c=0;c<11;c++)
printf("%c", palabra[c]);

La declaración de una cadena de caracteres se realiza de forma similar a la de un vector de cualquier otro tipo
utilizando la siguiente sintaxis:

char nombreCadena[dimension];

Dónde:
nombreCadena: Es el nombre de la variable de tipo cadena de caracteres.
dimensión: Es el valor que indica el número de bytes que se deben reservar para la cadena, utilizando un
byte para cada uno de los caracteres a almacenar.

Código: GC-N4-017 Revisión: 4

Página 2 de 11
Fecha de efectividad: __2019-1__________

UNIVERSIDAD AUTÓNOMA DE BAJA CALIFORNIA


FACULTAD DE INGENIERÍA (UNIDAD MEXICALI) DOCUMENTO
DEL SISTEMA DE CALIDAD

Formato para prácticas de laboratorio

Ejemplos de declaración:

char cadena_hola[]="Hola";
char otro_hola[]={'H','o','l','a','\0'}; //Equivale a la declaración anterior.
char vector[]={'H','o','l','a'}; /* Un arreglo de 4 elementos, con los
elementos 'H','o','l' y 'a' */
char espacio_cadena[1024]="Una cadena en C";
char cadena_vacia[]="";

Cómo se muestra en los ejemplos anteriores, al declarar un arreglo se define la cantidad de elementos que puede
contener y se debe tener en cuenta el espacio adicional necesario para el caracter nulo ‘\0’.
En el ejemplo anterior, tanto cadena_hola y otro_hola tienen una longitud de 5 caracteres y cadena_vacia tiene una
longitud de 1.

Podemos también declarar la cadena sin necesidad de dimensionarla o establecer su longitud como se muestra en
la declaración de cadena_hola, en este caso, el compilador se encarga de reservar 5 espacios (bytes) para la
cadena.

El lenguaje C, permite escribir las cadenas como texto dentro de comillas dobles como lo muestra el ejemplo
espacio_cadena, cadena_hola y cadena_vacia.

Lectura de una cadena de caracteres

Para hacer la lectura de una cadena de caracteres se puede utilizar la función scanf o la función gets de la
siguiente forma:

scanf("%s", cadena);

gets(cadena);

La ventaja de utilizar el gets en lugar del scanf es la lectura de los espacios en blanco, cosa que no hace la
instrucción scanf.

Otra forma de leer una cadena de caracteres es hacerlo caracter por caracter como un arreglo unidimensional o
vector, accediendo al arreglo posición por posición.

El siguiente ejemplo lee una cadena de caracteres utilizando la función gets y posteriormente es impresa
accediendo a ella como un arreglo de caracteres.

Código: GC-N4-017 Revisión: 4

Página 3 de 11
Fecha de efectividad: __2019-1__________

UNIVERSIDAD AUTÓNOMA DE BAJA CALIFORNIA


FACULTAD DE INGENIERÍA (UNIDAD MEXICALI) DOCUMENTO
DEL SISTEMA DE CALIDAD

Formato para prácticas de laboratorio

#include<conio.h>
#include<stdio.h>

void main(void)
{
char cadena[25];
int pos;

//Lectura de la cadena de caracteres.


printf("Teclea una cadena de máximo 25 caracteres\n");
gets(cadena);

//Impresión de la cadena caracter por caracter


for (pos=0; pos < strlen(cadena); pos++)
printf("%c", cadena[pos]);
getch();
}

Impresión de una cadena de caracteres

Para hacer la impresión de una cadena de caracteres se puede utilizar la función printf o la función puts de la
siguiente forma:

printf("%s", cadena);

puts(cadena);

La función puts, copia una cadena de caracteres a la salida estándar, normalmente stdout o video. Si la función se
ejecutó de forma exitosa retorna un valor positivo, en caso contrario EOF. Luego de que la cadena de caracteres
fue impresa, se agrega automáticamente un \n o avance de línea. Esta función es más rápida que la función
printf, ya que escribe directamente en el buffer de video. Sólo es aplicable a variables del tipo cadena.

El siguiente ejemplo declara dos cadenas de caracteres y posteriormente las imprime utilizando la función puts.
Observe que la impresión se hace en dos renglones separados sin utilizar el cambio de línea ya que la función puts
agrega automáticamente ´\n´.

Código: GC-N4-017 Revisión: 4

Página 4 de 11
Fecha de efectividad: __2019-1__________

UNIVERSIDAD AUTÓNOMA DE BAJA CALIFORNIA


FACULTAD DE INGENIERÍA (UNIDAD MEXICALI) DOCUMENTO
DEL SISTEMA DE CALIDAD

Formato para prácticas de laboratorio

#include <stdio.h>
#include<conio.h>

void main(void)
{
char p[] = "Uno" ;
char s[5] = "Dos" ;
puts(p) ;
puts(s) ;
}

/* La salida que genera el programa es:


Uno
Dos
*/

La biblioteca string.h
Debido a que en C, las cadenas de caracteres no son más que arrays de caracteres, el compilador les da un
tratamiento especial. Las cadenas de caracteres se pueden manipular de la misma manera en que manipula
cualquier otro tipo de array. Sin embargo, es preferible hacer uso de una biblioteca estándar especialmente escrita
para la manipulación de cadenas de caracteres y viene incluida con todo compilador de C.

Todas las funciones para manejo de cadenas tienen su prototipo en la biblioteca <string.h>. Los compiladores de
C dan soporte a la biblioteca de funciones <string.h>, a la que accede por medio de la directiva #include
<string.h>. Debido a la cantidad de funciones contenidas en esta biblioteca, no veremos en detalle todas las
funciones y nos limitaremos a mostrar algunos ejemplos de ciertas funciones importantes.

Función strlen():

Esta función retorna un entero con la cantidad de caracteres de la cadena o string recibido como parámetro, no se
toma en cuenta el caracter nulo.
Sintaxis:
int strlen(const char *s);

Ejemplo:
char nombre[14]= “Pablo Navarro”;
int longitud;
longitud = strlen(nombre);
printf(“Cantidad de Caracteres: %d”, longitud);

La salida de este programa muestra lo siguiente en pantalla:


Cantidad de Caracteres: 13

Código: GC-N4-017 Revisión: 4

Página 5 de 11
Fecha de efectividad: __2019-1__________

UNIVERSIDAD AUTÓNOMA DE BAJA CALIFORNIA


FACULTAD DE INGENIERÍA (UNIDAD MEXICALI) DOCUMENTO
DEL SISTEMA DE CALIDAD

Formato para prácticas de laboratorio

Función strcpy():
Esta función copia los caracteres del string "origen”, incluyendo el caracter NULL, a la dirección apuntada por
"destino”. No verifica que haya suficiente memoria reservada para tal efecto, por lo que es responsabilidad del
programador ubicar previamente suficiente memoria como para albergar a una copia de "origen".

Sintaxis:
char *strcpy(char *destino, const char *origen);

Ejemplo:
char nombre[15]=”Pablo Navarro”;
char copia[15];
strcpy(copia, nombre);
printf(“La cadena fuente contiene el valor: %s”, nombre);
printf(“La cadena destino contiene el valor: %s”, copia);

La salida de este programa muestra lo siguiente en pantalla:


La cadena fuente contiene el valor: Pablo Navarro
La cadena destino contiene el valor: Pablo Navarro

Función strcat():
Esta función concatena dos cadenas, esto es, agrega la cadena fuente a la cadena destino, la función termina
de agregar caracteres hasta haber encontrado en la cadena fuente el carácter de terminación NULL.

Sintaxis:
char *strcat(char *dest, const char *src);

Ejemplo:
char nombre[7]=”Pablo ”;
char apellido[10]=”Navarro”;
char nombreCompleto[20]=””;
strcat(nombreCompleto, nombre);
strcat(nombreCompleto, apellido);
printf(“La cadena destino contiene el valor: %s”, nombreCompleto);

La salida de este programa muestra lo siguiente en pantalla:


La cadena destino contiene el valor: Pablo Navarro

Función strcmp():

Esta función compara dos cadenas de caracteres y retorna un entero cuyo valor depende del resultado de la
comparación. El valor de retorno será:

Código: GC-N4-017 Revisión: 4

Página 6 de 11
Fecha de efectividad: __2019-1__________

UNIVERSIDAD AUTÓNOMA DE BAJA CALIFORNIA


FACULTAD DE INGENIERÍA (UNIDAD MEXICALI) DOCUMENTO
DEL SISTEMA DE CALIDAD

Formato para prácticas de laboratorio


< 0 si cadena1 es menor que cadena2
== 0 si cadena1 es igual a cadena2
> 0 si cadena1 es mayor que cadena2
La comparación se realiza caracter a caracter, y devuelve el resultado de la comparación realizada entre los
primeros dos que sean distintos. Esta comparación se efectúa tomando en cuenta el código ASCII de los
caracteres así será por ejemplo '9' < 'A', 'A' < 'Z y 'Z' < ‘a’.

Sintaxis:
int strcmp(const char *cadena1, const char cadena2)

Ejemplo:
char cadena1[5]=”peso”;
char cadena2[5]=”pelo”;
if(strcmp(cadena1,cadena2) > 0)
printf(“La palabra peso es mayor que pelo”);

La salida de este programa muestra lo siguiente en pantalla:


La palabra peso es mayor que pelo

4. PROCEDIMIENTO

A. EQUIPO NECESARIO MATERIAL DE APOYO

1. Computadora con Visual C++ instalado Práctica 11


2. Unidad de almacenamiento
B. DESARROLLO DE LA PRÁCTICA

Desarrollar los siguientes ejercicios según la indicación del maestro, utilizando funciones en cada uno.

1.- Elaborar un programa que permita leer una serie de nombres (por separado nombre, apellido paterno y
apellido materno), usar centinela para finalizar el ciclo (si-no), determinar cuántos de los nombres que se
proporcionaron son iguales a mi nombre, mi apellido paterno y mi apellido materno. Después de capturar cada
dato de una persona mostrar el nombre completo (concatenado) en mayúsculas (realizar la conversión carácter
por carácter).

E J E M P L O: MI NOMBRE COMPLETO ES: “Juan Pérez Gómez”


Proporciona los siguientes datos:
Nombre: “Pedro”
Apellido paterno: “González”
Apellido materno: “Campos”

Código: GC-N4-017 Revisión: 4

Página 7 de 11
Fecha de efectividad: __2019-1__________

UNIVERSIDAD AUTÓNOMA DE BAJA CALIFORNIA


FACULTAD DE INGENIERÍA (UNIDAD MEXICALI) DOCUMENTO
DEL SISTEMA DE CALIDAD

Formato para prácticas de laboratorio

NOMBRE COMPLETO: PEDRO GONZALEZ CAMPOS

¿Desea continuar? [si-no] “si”

Proporciona los siguientes datos:


Nombre: “Roberto”
Apellido paterno: “Ramírez”
Apellido materno: “Gómez”

NOMBRE COMPLETO: ROBERTO RAMIREZ GOMEZ

¿Desea continuar? [si-no] “si”

Proporciona los siguientes datos:


Nombre: “Juan”
Apellido paterno: “Pérez”
Apellido materno: “Pérez”

NOMBRE COMPLETO: JUAN PEREZ PEREZ

¿Desea continuar? [si-no] “no”

Mi nombre completo es: JUAN PEREZ GOMEZ


Total de personas que se llaman Juan: 1
Total de personas que tiene apellido Paterno Pérez: 1
Total de personas que tienen apellido materno Gómez: 0

2.- En una escuela los niños están aprendiendo los colores en inglés y la maestra desea que le elaboren un
programa que muestre el nombre del color en español (los colores son Azul, Verde, Rojo, Negro y Blanco) y el
niño lo proporcione en inglés, se le preguntara su nombre al niño y posteriormente le preguntara el color, el niño
podrá equivocarse solo 2 veces para cada color y si no acierta le pondrá el color correcto en inglés indicándole
que no acertó y entonces le preguntara el siguiente color (y así sucesivamente), al final le mostrara al niño
cuantas veces se equivocó o un mensaje de felicitación si no se equivocó. Antes de finalizar el programa
mostrara el nombre del niño que tuvo la mayor cantidad de errores.
Nota: cada vez que le toque a otro niño deberá limpiarse la pantalla.

E J E M P L O:

¿Cómo te llamas? “PEPITO”


Azul: “Blue”
Verde: “Green”
Rojo: ”Red”
Negro: “Black”
Blanco: “White”

Código: GC-N4-017 Revisión: 4

Página 8 de 11
Fecha de efectividad: __2019-1__________

UNIVERSIDAD AUTÓNOMA DE BAJA CALIFORNIA


FACULTAD DE INGENIERÍA (UNIDAD MEXICALI) DOCUMENTO
DEL SISTEMA DE CALIDAD

Formato para prácticas de laboratorio

¡FELICIDADES! PEPITO, Acertaste a todos los colores.

¿Hay otro niño? “si”

¿Cómo te llamas? “JAIMITO”


Azul: “Blue”
Verde: “Gren”
LO SIENTO TE EQUIVOCASTE!!!
Verde: “Green”
Rojo: ”Red”
Negro: “Blac”
LO SIENTO TE EQUIVOCASTE!!!
Negro: “Black”
Blanco: “White”

JAIMITO, tuviste 2 errores.

¿Hay otro niño? “no”

JUANITO OBTUVO LA MAYOR CANTIDAD DE ERRORES.

3.- Realizar un programa al iniciar solicite un password de entrada (se tendrán 3 oportunidades para
proporcionarlo, de no ser así, se saldrá del programa mostrando un mensaje de password incorrecto (el
password deberá estar en minúsculas, considerar que el usuario podrá proporcionarlo en mayúsculas, además
no deberá ser de más de 5 caracteres, de ser así lo solicitara de nuevo indicando con un mensaje que fue por
exceso de caracteres), si se acierta al password se van a leer una serie de refranes mexicanos y además de
mostrar cada uno, se pide mostrar su longitud, y al final cual fue el refrán más largo y cual el más corto. A
continuación se presentan algunos refranes:
“No todo lo que brilla es oro”
“Árbol que nace torcido, jamás su tronco endereza”
“Al nopal sólo se le arriman cuando tiene tunas”
“Para uno que madruga hay otro que no se duerme”
“El que a buen árbol se arriba, buena sombra le cobija”

La salida se dará cuando el refrán sea: “No deseo continuar”, este no se considerara para contarlo como más
largo o más corto.

Nota.- Utilizar una función que reciba el refrán proporcionado y devuelva el número de caracteres que tiene.

4.- Se pide un programa que solicite el siguiente password “URNAPELOTAS” (considerar convertir a mayúscula
si el usuario proporciono minúsculas), se tendrán 3 intentos únicamente, una vez proporcionado el password se
realizara lo siguiente: se tiene una urna y en esta hay pelotas de color rojo, azul y verde. Se pide elaborar
contar las pelotas de cada color por separado y al final muestre de cuales pelotas se sacaron más. La salida se

Código: GC-N4-017 Revisión: 4

Página 9 de 11
Fecha de efectividad: __2019-1__________

UNIVERSIDAD AUTÓNOMA DE BAJA CALIFORNIA


FACULTAD DE INGENIERÍA (UNIDAD MEXICALI) DOCUMENTO
DEL SISTEMA DE CALIDAD

Formato para prácticas de laboratorio

dará cuando se saque una pelota negra. El color de la pelota se leerá como cadena: Roja, Azul, Verde, Negra,
considerar en esta parte las mayúsculas o minúsculas (convertir la cadena). Utilizar una función para determinar
de qué color se sacaron más pelotas.

5.- Desarrollar un programa que determine si una cadena de caracteres es palíndromo. Una cadena se dice
palíndromo si al invertirla es igual a ella misma.

Ejemplos:

ENTRADA SALIDA
"ala" "Es palíndromo"
"amor a roma" "Es palíndromo"
"al sur de Colombia" "No es palíndromo"
"anula las alas a la "No es palíndromo". (Al invertirla: "anul al a sala sal aluna") no es igual a la
luna" original

6.- Hacer un programa que lea una cadena de caracteres y determine lo siguiente:

a) Si la cadena introducida tiene menos de 5 caracteres, entre 5 y 15 caracteres o más de 15 caracteres.


b) Si la cadena introducida comienza por la letra a.

Ejemplo: se pide la entrada y el usuario introduce “vereda”. Por pantalla se debe mostrar: “La cadena
introducida tiene entre 5 y 15 caracteres y no comienza por a”.

Realizar lo anterior mientras el usuario lo desee (respuesta si/no), al final mostrar el total de cadenas por
separado que hubo en cada una de las clasificaciones (5 caracteres, entre 5 y 15 caracteres o más de 15
caracteres)

C. CÁLCULO (SI APLICA) Y REPORTE

El alumno deberá depurar sus programas para eliminar los errores de compilación, además deberá ejecutarlos
utilizando diferentes valores con la finalidad de poder comprobar si los resultados que se obtienen son los
esperados.

5. RESULTADOS Y CONCLUSIONES

El maestro revisará los programas proporcionando diferentes valores para determinar si el programa se ejecuta
correctamente.

Código: GC-N4-017 Revisión: 4

Página 10 de 11
Fecha de efectividad: __2019-1__________

UNIVERSIDAD AUTÓNOMA DE BAJA CALIFORNIA


FACULTAD DE INGENIERÍA (UNIDAD MEXICALI) DOCUMENTO
DEL SISTEMA DE CALIDAD

Formato para prácticas de laboratorio

6. ANEXOS

Ninguno.

7. REFERENCIAS
[1] Tutorial de C http://www.cprogrammingexpert.com/C/introduction_to_c_programming_language.aspx
[2] Arreglos y Cadenas http://www.fismat.umich.mx/mn1/manual/node6.html
[3] Tutorial de C http://www.cprogramming.com/tutorial/c-tutorial.html

Código: GC-N4-017 Revisión: 4

Página 11 de 11

También podría gustarte