Práctica # 4

Anuncio
Fecha de efectividad: _______________
UNIVERSIDAD AUTÓNOMA DE BAJA CALIFORNIA
FACULTAD DE INGENIERÍA (UNIDAD MEXICALI)
DOCUMENTO DEL SISTEMA DE CALIDAD
Formatos para prácticas de laboratorio
CARRERA
PLAN DE
ESTUDIO
CLAVE
ASIGNATURA
NOMBRE DE LA ASIGNATURA
LSC
2003-1
5221
Lenguaje de Programación Estructurada
PRÁCTICA
No.
LABORATORIO
DE
4
NOMBRE DE
LA PRÁCTICA
Licenciado en Sistemas Computacionales
DURACIÓN
(HORA)
Cadenas de Caracteres
2
1. INTRODUCCIÓN
Esta práctica presenta algunas funciones estándar de la biblioteca de C, que facilitan el procesamiento de cadenas
y caracteres.
Una cadena es una serie de caracteres tratados como una sola unidad, puede contener letras, dígitos y varios
caracteres especiales como +, - , * , /, $, y otros, y siempre terminará con el carácter nulo ('\0'), que indica el fin de
la cadena. Para declarar una cadena lo deberás hacer de tipo char de la siguiente manera:
char letra; Aquí la variable letra tiene capacidad para almacenar un carácter.
char palabra[20]; Aquí la variable palabra, podrá almacenar hasta 19 caracteres. Esto debido a que el último
carácter debe ser el caracter nulo ('\0') o fin de cadena.
En C, las constantes de cadena se escriben entre dobles comillas (" ") y las constantes de carácter entre comillas
sencillas (' ') y pueden asignarse constantes de cadenas o de carácter a las variables al momento de su
declaración de la siguiente manera:
char letra='a';
letra es una variable que solo puede almacenar un carácter, en este caso almacena una 'a'.
Gráficamente se vería así:
letra
Formuló
Ing. Verónica Beltrán
Pérez
Ing. Eva Herrera
Revisó
Aprobó
L.S.C.Mónica Cristina
Lam Mora
Autorizó
M.C. Miguel Ángel
Martínez Romero
Ramírez
L.I. Hilda Olivia Albarrán
Padilla
Maestro
Coordinador de Programa
Educativo
Gestión de Calidad
Director de la Facultad
Código GC-N4-017
Revisión 1
Página 1
de 9
Fecha de efectividad: ______________________
UNIVERSIDAD AUTÓNOMA DE BAJA CALIFORNIA
FACULTAD DE INGENIERÍA (UNIDAD MEXICALI)
DOCUMENTO DEL SISTEMA DE CALIDAD
Formatos para prácticas de laboratorio
char palabra[20]="UNIVERSIDAD";
palabra es una variable que puede almacenar hasta 20 caracteres, debido a que el último de esos caracteres es el
carácter nulo ('\0') o fin de cadena, la variable podrá almacenar en forma efectiva 19 caracteres.
Gráficamente se vería así:
Palabra
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. Por ejemplo una cadena se
podría imprimir de las siguientes maneras:
char palabra[20]="UNIVERSIDAD";
printw("El contenido de la cadena es %s\n",palabra);
char palabra="UNIVERSIDAD";
printw("El contenido de la cadena es\n");
for (c=0;c<11;c++)
printw("%c\n",palabra[c]);
En este caso nosotros sabemos la longitud de la cadena, por lo que podemos imprimir desde la posición 0 hasta la
10, que es la posición donde se encuentra la última letra de la palabra UNIVERSIDAD. Cuando nosotros no
conocemos de antemano la longitud de una cadena, ésta puede ser obtenida mediante una función de cadena
llamada strlen(), que se verá adelante.
NOTA: Al declarar una cadena, la dimensión de la cadena debe ser, lo suficientemente grande para almacenar la
cadena y su carácter de terminación o carácter nulo ( '\0')
2. OBJETIVO (COMPETENCIA)
El alumno aplicará las funciones para el manejo de cadenas de caracteres.
3. FUNDAMENTO
Funciones de entrada (Input)
getch()
Esta función lee un caracter de la pantalla. En el modo de no_espera, si no hay una dato de entrada esperando,
retorna un valor de ERR. En el modo de espera, el programa espera hasta que el sistema pase un texto a través
del programa. Dependiendo de como haya sido activado cbreak(), getch() espera por un carácter en el modo
cbreak() y por un carácter de nueva línea en el modo nocbreak(). En el ejemplo de abajo al introducir las vocales
no debes presionar enter ya que se activo el modo cbreak();.
Ejemplo:
#include<ncurses.h>
#include<string.h>
int main()
Código GC-N4-017
Revisión 1
Página 2
de 9
Fecha de efectividad: ______________________
UNIVERSIDAD AUTÓNOMA DE BAJA CALIFORNIA
FACULTAD DE INGENIERÍA (UNIDAD MEXICALI)
DOCUMENTO DEL SISTEMA DE CALIDAD
Formatos para prácticas de laboratorio
{
char letra;
int c,a,e,i,o,u,vocales;
initscr();
clear();
cbreak();
printw("Introduce las cinco vocales en cualquier orden \n");
for (c=1;c<=5;c++)
{
printw("\nDame la vocal [%d] :",c);
letra=getch();
if(letra=='a')
a=1;
if(letra=='e')
e=1;
if(letra=='i')
i=1;
if(letra=='o')
o=1;
if(letra=='u')
u=1;
}
vocales=a+e+i+o+u;
if(vocales==5)
printw("\n\nProporcionaste las cinco vocales");
else
printf("\n\nNo proporcionaste las 5 vocales");
getch();
endwin();
return 0;
}
getstr()
Esta funció permite leer una cadena de la entrada estándar, en general su funcionamiento es similar a una serie de
llamadas a la funció getch(), hasta que se introduce nueva línea o retorno de carro.
Ejemplo:
#include<ncurses.h>
#include<string.h>
int main()
{
char palabra[20];
initscr();
clear();
printw("Introduce una cadena de caracteres :");
getstr(palabra);
printw("\n\nLa cadena proporcionada es %s",palabra);
getch();
endwin();
Código GC-N4-017
Revisión 1
Página 3
de 9
Fecha de efectividad: ______________________
UNIVERSIDAD AUTÓNOMA DE BAJA CALIFORNIA
FACULTAD DE INGENIERÍA (UNIDAD MEXICALI)
DOCUMENTO DEL SISTEMA DE CALIDAD
Formatos para prácticas de laboratorio
return 0;
}
Funciones para la manipulación de cadenas biblioteca string.h
strlen(s1) Regresa el numero de bytes (caracteres) en la cadena s1, no incluye el carácter nulo o fin de cadena.
strcmp(s1,s2) Compara las cadenas s1 y s2, regresando un valor igual a cero, si ambas cadenas son iguales,
mayor a cero, si s1 es mayor que s2 o menor que cero si s1 es menor que s2.
strcpy(s1,s2) Copia el contenido de la cadena s2 en la cadena s1, incluyendo el carácter nulo.
strcat(s1,s2) Agrega la cadena s2, a el final de la cadena s1, eliminando de s1 el carácter nulo de fin de cadena.
Funciones para la manipulación de caracteres biblioteca ctype.h
isalnum() Verifica si un carácter es alfanumérico o numérico.
isalpha() Verifica si un carácter es alfabético.
isascii() Verifica si un carácter pertenece a los primeros 127 caracteres de la tabla ASCII.
isblank() Verifica si un carácter es un espacio en blanco o tabulador.
isdigit() Verifica si un carácter es numérico.
islower() Verifica si un carácter es una letra minúscula.
isupper() Verifica si un carácter es una letra mayúscula.
tolower() Convierte una letra a su correspondiente minúscula.
toupper() Convierte una letra a su correspondiente mayúscula.
Los siguientes programas ejemplifican la utilización de funciones de cadenas y de caracteres. Recuerda que los
programas en que se incluye ncurses.h deben compilarse con -lncurses.
El programa siguiente muestra en pantalla un refrán al cual le faltan tres palabras, el programa es capaz de
identificar las palabras que faltan, mediante la función strcmp().
#include<ncurses.h>
#include<string.h>
int main()
{
char palabra1[20];
char palabra2[20];
char palabra3[20];
int pal1=0,pal2=0,pal3=0,aciertos=0;
initscr();
clear();
move(3,1);printw("Un conocido refrán dice así:");
move(5,1);printw("El que tenga ...... que la ...... y si no que la ......");
refresh();
move(6,1);printw("dame la primer palabra que falta :");
getstr(palabra1);
if (strcmp(palabra1,"tienda")==0)
pal1=1;
move(8,1);printw("dame la segunda palabra que falta :");
getstr(palabra2);
if (strcmp(palabra2,"atienda")==0)
pal2=1;
move(10,1);printw("dame la tercer palabra que falta:");
Código GC-N4-017
Revisión 1
Página 4
de 9
Fecha de efectividad: ______________________
UNIVERSIDAD AUTÓNOMA DE BAJA CALIFORNIA
FACULTAD DE INGENIERÍA (UNIDAD MEXICALI)
DOCUMENTO DEL SISTEMA DE CALIDAD
Formatos para prácticas de laboratorio
getstr(palabra3);
if (strcmp(palabra3,"venda")==0)
pal3=1;
aciertos=pal1+pal2+pal3;
if(aciertos==3)
{
move(12,1);printw("Felicidades tus respuestas fueron las correctas");
move(14,1);printw("El refrán completo dice:");
move(15,1);printw("El que tenga TIENDA que la ATIENDA");
move(16,1);printw("y si no que la VENDA");
}
else
{
move(12,1);printw("LO SIENTO NO ACERTASTE LAS PALABRAS");
move(13,1);printw("Tus aciertos fueron %d",aciertos);
}
refresh();
getch();
endwin();
return 0;
}
El siguiente programa pide la edad y nombre de 5 amigos y muestra al final a la persona de mayor edad.
#include<ncurses.h>
#include<string.h>
int main()
{
char nombre[30],nombre_persona_mayor[30];
int edad,edad_mayor=0,c;
initscr();
clear();
for (c=1;c<=5;c++)
{
printw("Proporciona Nombre de tu amigo [%d] :",c);
getstr(nombre);
printw("Proporciona la Edad de tu amigo %s :",nombre);
scanw("%d",&edad);
if(edad_mayor<edad)
{
edad_mayor=edad;
strcpy(nombre_persona_mayor,nombre);
}
}
printw("El Amigo de mayor edad es [ %s ] ",nombre_persona_mayor);
printw("Su edad es %d",edad_mayor);
refresh();
getch();
endwin();
return 0;
}
Código GC-N4-017
Revisión 1
Página 5
de 9
Fecha de efectividad: ______________________
UNIVERSIDAD AUTÓNOMA DE BAJA CALIFORNIA
FACULTAD DE INGENIERÍA (UNIDAD MEXICALI)
DOCUMENTO DEL SISTEMA DE CALIDAD
Formatos para prácticas de laboratorio
El programa siguiente identifica los caracteres de una cadena, mediante funciones de caracteres.
#include<ncurses.h>
#include<string.h>
int main()
{
char cadena[21];
int c,longitud;
initscr();
clear();
printw("Proporciona una cadena
getstr(cadena);
longitud=strlen(cadena);
for (c=0;c<longitud;c++)
{
if(isalpha(cadena[c]))
printw("Cadena [%d] =
if(isdigit(cadena[c]))
printw("Cadena [%d] =
if(isspace(cadena[c]))
printw("Cadena [%d] =
}
getch();
endwin();
return 0;
}
de no más de 20 caracteres : ");
%c = esto es una letra\n",c,cadena[c]);
%c = esto es un número\n",c,cadena[c]);
%c = es un espacio\n",c,cadena[c]);
4. PROCEDIMIENTO (DESCRIPCIÓN)
A)
EQUIPO NECESARIO
Computadoras con Linux instalado
MATERIAL DE APOYO
Practica 7 de Leng.Programacion Estructurada
impresa
B)
DESARROLLO DE LA PRÁCTICA
A continuación se listan 5 grupos de ejercicios para ser resueltos de la siguiente manera:
Lunes ejercicios
A1 y A2
Martes ejercicios
B1 y B2
Miércoles ejercicios C1 y C2
Jueves ejercicios
D1 y D2
Viernes ejercicios
E1 y E2
Código GC-N4-017
Revisión 1
Página 6
de 9
Fecha de efectividad: ______________________
UNIVERSIDAD AUTÓNOMA DE BAJA CALIFORNIA
FACULTAD DE INGENIERÍA (UNIDAD MEXICALI)
DOCUMENTO DEL SISTEMA DE CALIDAD
Formatos para prácticas de laboratorio
A1).- Escribir un programa que lea cadenas hasta que no se desee continuar (leer si o no para finalizar), mostrar:
cada cadena leída, la cantidad de consonantes y vocales que contiene por separado, además que muestre junto a
cada cadena leída (convertida a mayúsculas) otra cadena en la que cada vocal haya sido reemplazada por un
punto, y al final mostrara: la cadena de mayor longitud, la de menor longitud y que longitud tiene cada una de ellas.
A2).- Escribe un programa que pida una cadena y elimine de la cadena de caracteres todos los espacios en blanco
que tenga, mostrando la cadena nuevamente e imprimiendo la cantidad de espacio en blanco que borro, el
programa finalizara cuando se de una cadena sin espacios en blanco.
B1).- Escribir un programa que permita hasta en tres oportunidades proporcionar cual es la capital correcta de Baja
California, si en los 3 intentos no atina a la capital correcta mostrara un mensaje indicándola y si acierta
felicidades lo lograste y terminara el ciclo. Al entrar solicitara tu nombre completo y una vez que acertaste o no
mostrara el siguiente mensaje: Ej.- JUAN MARTINEZ GOMEZ muchas felicidades acertaste o JUAN
MARTINEZ GOMEZ no acertaste, la capital correcta es Mexicali, según sea el caso si acertó o no. Mostrara tu
nombre en mayúsculas si se ingreso en minúsculas y en minúsculas si se ingreso en mayúsculas.
B2).- Escribe un programa iterativo que pida un grupo de cadenas de caracteres y que cada que ingrese una
cadena la imprima en forma inversa, el programa finalizará cuando la cadena que se proporcione sea la palabra
FIN.
C1).- Escribe un programa iterativo que pida una cadena de caracteres y enseguida la muestre con todas sus
consonantes en mayúsculas y todas sus vocales en minúsculas cuando la longitud de la cadena sea menor de 7
caracteres, de lo contrario la muestre con todas su consonantes en minúsculas y todas sus vocales en
mayúsculas, el programa terminará cuando la palabra proporcionada sea FIN.
C2).- Escriba un programa que lea los siguientes datos de un grupo de personas: Nombre, Nacionalidad, Sexo
(FEMENINO/MASCULINO), Estado Civil (soltero/casado/viudo/divorciado), Edad.
Y con ello imprima lo siguiente:
- El nombre del hombre de mayor edad.
- Un mensaje indicando si hubo mas personas de Japón que de México o viceversa
- El nombre de la mujer japonesa más joven.
- Cuantos mexicanos se leyeron.
- Total de mujeres francesas solteras.
- El nombre del hombre de menor edad cuyo estado civil sea casado.
- Los datos de la mujer de menor edad cuyo estado civil sea soltera y mexicana.
Nota.- Al comparar Sexo se va a considerar la cadena en mayúsculas, y al comparar Estado Civil se va considerar
en minúsculas.
D1) Escriba un programa que lea un grupo de cadenas de caracteres e imprima para cada una de ellas si la
cadena es un palíndromo o no lo es. Por ejemplo:
Oso Palíndromo
Código GC-N4-017
Revisión 1
Página 7
de 9
Fecha de efectividad: ______________________
UNIVERSIDAD AUTÓNOMA DE BAJA CALIFORNIA
FACULTAD DE INGENIERÍA (UNIDAD MEXICALI)
DOCUMENTO DEL SISTEMA DE CALIDAD
Formatos para prácticas de laboratorio
Luís No es palíndromo
Ana Palíndromo
El programa terminará al teclear 5 Palíndromos o al teclear la cadena ADIOS.
D2).- Se tiene una urna con pelotas de color rojo, azul y verde y se desea elaborar un programa que permita
contar las pelotas de cada color por separado mostrar el total de pelotas que se sacaron de cada color y al final
muestre de cuales pelotas se sacaron más. La salida se dará cuando se saque una pelota negra. El color de la
pelota se leerá como cadena (ROJA, AZUL, VERDE, NEGRA). Considerar solo mayúsculas para contar para lo
cual se deberá convertir la cadena a mayúsculas si se da en minúsculas.
E1).- Escribe un programa que haga las siguientes preguntas:
Capital de Baja California?
Capital de Sonora?
Capital de Durango?
Por cada respuesta correcta el programa dará una puntuación de 33 puntos, el programa deberá mostrar la
puntuación obtenida, un mensaje de felicitación en caso de haber obtenido solo aciertos y un mensaje que indique
que preguntas se respondieron erróneamente en caso contrario. El programa dará tres oportunidades para
responder las preguntas, esas oportunidades se harán efectivas solamente si el usuario tiene máximo 2 respuestas
erróneas, en caso de responder a todas las preguntas equivocadamente el programa no dará más oportunidades y
mostrará el siguiente mensaje "REGRESATE A PRIMARIA".
E2).- Elaborar un programa que permita leer: estado donde nació y el nombre completo en tres variables distintas:
nombre, apellido paterno, apellido materno y posteriormente los junte en una sola variable y muestre el nombre
completo (ya concatenado), se pide que al final muestre el total de personas que se llaman María, total de
personas que cuyo apellido paterno es López, total de personas cuyo apellido materno es igual a uno
proporcionado por el usuario y total de personas que son originarias del estado de Sinaloa, Sonora y Baja
California por separado. Indicar con un mensaje en cual de estos estados nació mas gente.
Código GC-N4-017
Revisión 1
Página 8
de 9
Fecha de efectividad: ______________________
UNIVERSIDAD AUTÓNOMA DE BAJA CALIFORNIA
FACULTAD DE INGENIERÍA (UNIDAD MEXICALI)
DOCUMENTO DEL SISTEMA DE CALIDAD
Formatos para prácticas de laboratorio
C)
CÁLCULOS Y REPORTE
5. RESULTADOS Y CONCLUSIONES
Los resultados serán solo a nivel visualización, no serán impresos, éstos podrán variar dependiendo de los
ejercicios que el alumno realice.
6. ANEXOS
7. REFERENCIAS
http://garota.fismat.umich.mx/mn1/manual/node18.html
Código GC-N4-017
Revisión 1
Página 9
de 9
Descargar