universidad nacional abierta ya distancia

Anuncio
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD
ESCUELA DE CIENCIAS BASICAS, TECNOLOGIA E INGENIERIA
CONTENIDO DIDÁCTICO DEL CURSO: 301304 – INTRODUCCION A LA PROGRAMACION
Cadenas de Carácter
A diferencia de otros lenguajes de programación que emplean un tipo
denominado cadena string para manipular un conjunto de símbolos, en C++, se
debe simular mediante un arreglo de caracteres, en donde la terminación de la
cadena se debe indicar con nulo. Un nulo se especifica como '\0'. Por lo anterior,
cuando se declare un arreglo de caracteres se debe considerar un carácter
adicional a la cadena más larga que se vaya a guardar. Por ejemplo, si se quiere
declarar un arreglo cadena que guarde una cadena de diez caracteres, se hará
como:
char cadena[11];
Se pueden hacer también inicializaciones de arreglos de caracteres en donde
automáticamente C++ asigna el caracter nulo al final de la cadena, de la siguiente
forma:
char nombre_arr[ tam ]="cadena";
Por ejemplo, el siguiente fragmento inicializa cadena con ``hola'':
char cadena[5]="hola";
El código anterior es equivalente a: char cadena[5]={'h','o','l','a','\0'};
Para asignar la entrada estándar a una cadena se puede usar la instrucción cin>>
que almacenará una cadena hasta que encuentre un espacio, los demás
caracteres no serán guardados. Por lo tanto cuando se requiere almacenar una
frase que contenga más de una palabra se debe utilizar la instrucción
cin.getline(nombre_variable, tamaño_de_la_cadena).
Es decir, si se requiere almacenar un apellido (una sola palabra) se utilizará
cin>>NOMBRE_VARIABLE;
Y para almacenar un nombre completo (nombres y apellidos) se utilizará
cin.getline(NOMBRE VARIABLE, TAMAÑO_DE_LA_CADENA).
Por supuesto que las variables deben ser vectores de tipo char, puesto que el tipo
de dato cadena no existe en el lenguaje C++
Ejemplo:
/*Autor: Mirian Benavides - UNAD
Programa: Cadenas 1
IDE FALCON */
U3
Página 8
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD
ESCUELA DE CIENCIAS BASICAS, TECNOLOGIA E INGENIERIA
CONTENIDO DIDÁCTICO DEL CURSO: 301304 – INTRODUCCION A LA PROGRAMACION
//DIRECTIVAS DEL PRE-PROCESADOR
#include <iostream>
#include <stdlib.h>
#include <stdio.h> /*Libreria para utilizar la instrucción
fflush(stdin) que permite vaciar o limpiar
el buffer del teclado */
using namespace std;
int main() //Función principal
{
char palabra[15], frase[40]; // Declaración de vectores para
almacenar cadenas
cout<<"REGISTRO DE UNA PALABRA Y UNA FRASE";
cout<<endl <<endl <<"Digite una palabra : ";
cin>>palabra;
fflush(stdin); //limpiar el buffer
cout<<endl <<"Digite una frase : ";
cin.getline(frase,40);
cout<<endl <<endl <<"INFORMACION REGISTRADA";
cout<<endl <<endl <<"Palabra : " << palabra;
cout<<endl <<"Frase : " << frase;
cout<<endl <<endl;
system("pause");
return 0;
}
El lenguaje C++ no maneja cadenas de caracteres, como se hace con enteros o
flotantes, por lo que lo siguiente no es válido:
int main()
{
char nombre[40], apellidos[40], completo[80];
nombre="José María";
// Ilegal
apellidos="Morelos y Pavón";
// Ilegal
completo="Gral."+nombre+appellidos; // Ilegal
return 0;
}
Funciones de cadena
Existen funciones de carácter y cadena que amplían sus posibilidades de uso, a
continuación se explican algunas de ellas.
Funciones de Carácter
U3
Página 9
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD
ESCUELA DE CIENCIAS BASICAS, TECNOLOGIA E INGENIERIA
CONTENIDO DIDÁCTICO DEL CURSO: 301304 – INTRODUCCION A LA PROGRAMACION
Para trabajarlas es necesario incluir en los programas la librería ctype.h

toupper( variable_char ): convierte un caracter a mayúsculas.
Ej. 1 char rta = ‘s’;
rta = toupper( rta ); // en la variable rta se encuentra ahora el carácter ‘S’
Ej. 2 char x;
x = toupper(getche( )); // guarda en la variable x una letra en mayúsculas
// digitada por el usuario.
Ej. 3
if ( toupper( getche( ) = = ‘S’) // verifica que la letra digitada por el
// usuario sea ‘S’.

tolower( variable_char) convierte un carácter a minúsculas.
Funciones de Cadena
Para trabajar con cadenas es necesario utilizar ciertas funciones, que requieren
incluir en el programa la libreria: string.h

strcpy(cadena1,cadena2): copia en cadena1 el contenido de cadena2.
El primer argumento deben ser de tipo array de caracteres, el segundo puede
ser un array de caracteres o una expresión encerrada entre comillas dobles.
Ej. 1
char t1[20];
strcpy(t1,”HOLA”);
Ej. 2
char t2[20], t3[20]=”PASTO”;
strcpy(t1,t2);

strcat(cadena1, cadena2): se utiliza para unir dos cadenas. El resultado se
guarda en la cadena1.
Ej. 1
char t1[20]=”HOLA”;
strcat(t1,”JUAN”);
Ej. 2
char t1[20]=”HOLA”, t2[20]=”MUNDO”;
strcat(t1,t2);
Si se requiere un espacio, este debe estar incluido en una de las cadenas

strcmp(cadena1, cadena2): compara dos cadenas y devuelve el valor 0 si las
cadenas son iguales. Si la cadena1 es lexicográficamente mayor que la
cadena2, devuelve un valor positivo, de lo contrario será negativo.
Como la función devuelve un valor entero, es necesario asignarlo a una
variable de ese tipo, y luego evaluarla
Ej 1.
int rta;
rta = strcmp(“HOLA”,”hola”);
if (rta= =0) printf(“iguales”);
else printf(“diferentes”);
U3
Página 10
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD
ESCUELA DE CIENCIAS BASICAS, TECNOLOGIA E INGENIERIA
CONTENIDO DIDÁCTICO DEL CURSO: 301304 – INTRODUCCION A LA PROGRAMACION
Ej. 2
Ej. 3
Ej. 4

U3
int rta;
char t1[2]=”a”,t2[2]=”A”;
rta = strcmp(t1,t2);
if (rta= = 0) printf(“iguales”);
else printf(“diferentes”);
int rta;
char t1[20]=”SISTEMAS”;
rta = strcmp(t1,”informatica”);
if (rta= = 0) printf(“iguales”);
else printf(“diferentes”);
char t1[10]:
for( ; ; )
{ printf(“\ndigite una palabra”); gets(t1);
if (¡strcpm(“salir”,t1)) break;
}
strlen(cadena): devuelve el número de caracteres que tiene la cadena.
Ej. 1
int x;
x = strlen(“informatica”);
E. 2
int x;
char t1[10]=”CALI”;
x = strlen(t1);
Ej. 3
int x;
char t1[20]
x = strlen(gets(t1));
Página 11
Descargar