Cadenas - WordPress.com

Anuncio
Universidad de Ciencias comerciales U.C.C
PROGRAMACION II
Unidad II: Cadenas y Caracteres en C++
Docente : Lic. José Ramón Vilchez
Introducción:
C++ y su lenguaje padre( C) no tiene datos predefinidos tipo cadena ( string) , en su lugar C++ como C manipulan
cadenas mediante arrays de caracteres que terminan con el carácter nulo(/0).
Una cadena se considera como un arrray unimensional de tipo char o unsigned char.
Concepto de Cadena :Una cadena es un tipo de dato compuesto .Un array de caracteres (char),terminado por un
carácter nulo(/0),NULL.
Una cadena (también llamada constante de cadena o literal de cadena) es “ABC”, Cuando la cadena aparece dentro
de un programa se verá como si se almacenara cuatro elementos: ¨A´,¨B´,¨C´, y ¨/0´,en consecuencia se
considera la cadena como un array de 4 elementos de tipo char , el valor real de esta cadena es la dirección de su
primer carácter su tipo es un puntero a char. Aplicando el operador * a un objeto de tipo se obtiene el carácter que
forma su contenido; es posible también utilizar aritmética de direcciones con cadenas.
*”ABC es igual a 'A'
*(”ABC + 1) es igual a 'B'
*(”ABC + 2) es igual a 'C'
*(”ABC + 3) es igual a '\0'
De igual forma utilizando el sub índice del array se puede escribir:
“ABC”
“ABC”
“ABC”
“ABC”
[0]
[1]
[2]
[3]
es
es
es
es
L
igual
igual
igual
igual
A
a
a
a
a
'A'
'B'
'C'
'\0'
c
a
d
e
n
a
d
e
t
e
S
t
e
t
e
S
t
Array de Caracteres.
L
A
c
a
d
e
n
a
d
\0
Cadena de Caracteres
Ejemplos :
1 – char cad[] = “Mackoy”;
Cad tiene siete caractreres : 'M´,'a´,'c´,'k´,'o´,y´
2 – cout <<cad;
Elaborado por el Lic. Jose Ramon Vilchez
Página 1
Universidad de Ciencias comerciales U.C.C
PROGRAMACION II
Unidad II: Cadenas y Caracteres en C++
Docente : Lic. José Ramón Vilchez
El sistema copiara caracteres de cad a cout hasta que el carácter NULL, '\0' se encuentre.
Las funciones declaradas en el archivo de cabecera<string> se utilizan para manipular cadenas.
#include<string>.
Declaración de variables de cadena:
Las cadenas se declaran como los restantes tipos de arrays.El operador postfijo [ ] contiene el tamaño máximo del
objeto.
El tipo base, naturalmente es char o bien unsigned char:
char texto[80];
// Una línea de caracteres de texto
char orden[40];
// cadena utilizada para recibir una orden del teclado
unsigned char datos; //Activación de bit de orden alto
El tipo unsigned char puede ser de interés en aquellos casos en que los caracteres especiales presentes puedan
tener el bit de orden alto activado.
Si el carácter se considera con signo, el bit de mayor peso(orden alto)se interpreta como bit de signo y se puede
propagar a la posición de mayor orden (peso) del nuevo tipo.
Para definir un array de caracteres que contenga la cadena “ABCDEF”
Escriba char una cadena[7];
Observe que el tamaño de la cadena debe de incluir el carácter '\0'
Inicialización de variables de cadena:
Todos los tipos de arrays requieren una inicialización que consiste en una lista de valores separados por comas y
encerrados entre llaves.
char texto[81] = ”Esto es una cadena”;
char textodemo[255] = ”Esto es una cadena muy larga”;
char cadenatest [] = ”Cual es la longitud de esta cadena”;
Las cadenas texto y textodemo pueden contener 80 y 254 caracteres respectivamente, mas el carácter nulo. La
tercera cadena cadenatest se declara con una especificación de tipo incompleta y se completa solo con el
inicializador .Dado que en el literal hay 36 carácter y el compilador añade el carácter '\0' un total de 37 caracteres
se asignaran a cadenatest
Elaborado por el Lic. Jose Ramon Vilchez
Página 2
Universidad de Ciencias comerciales U.C.C
PROGRAMACION II
Unidad II: Cadenas y Caracteres en C++
Docente : Lic. José Ramón Vilchez
Ejemplos de cadenas
Ejemplo 1
#include <cstdlib>
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
char s[] = "ABCD";
for (int i=0;i<5;i++)
cout<<"s["<<i<<"]="<<s[i]<<"\n";
system("PAUSE");
}
Ejemplo2
#include <cstdlib>
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
char nombre[] ="!hola Mundo¡";
for (int i=0;i<12;i++)
cout<<"nombre["<<i<<"]="<<""<<nombre[i]<<"\n";
system("PAUSE");
}
Elaborado por el Lic. Jose Ramon Vilchez
Página 3
Universidad de Ciencias comerciales U.C.C
PROGRAMACION II
Unidad II: Cadenas y Caracteres en C++
Docente : Lic. José Ramón Vilchez
Lectura de caracteres
Objetivos:
1 - Los alumnos aprenderán a construir cadenas de caracteres
2 - Los alumnos Aprenderán a utilizar las funciones miembro cin, cin.get, cout.put, cin.putback, cin.ignore
Funciones miembros cin:
Función cin :
El objeto cin del flujo de entrada incluye las funciones de entrada cin.getline(),cin.get(),cin.putback,y cin.peek.
Cada uno de estos nombres de funciones incluyen el prefijo “cin”.
Cin es un objeto de la clase istream y getline() es una función miembro de la clase iostream; en consecuencia cin
puede llamar a getline() para leer una línea completa incluyendo cualquier espacio en blanco.
La sintaxis de la función getline() es :
Cin.getline(<var_cad>,<max_long_cadena+2>,<'separador'>);
La función getline() utiliza 3 argumentos. El primer argumento es el identificador de la variable cadena(nombre de
la cadena), el segundo argumento es la log. Máxima de cadena(el número máximo de caracteres que se leerán),
que debe de ser al menos 2 caracteres mayor que la cadena real, para permitir el carácter nulo '\0' y el '\n.Por
último, el carácter separador se lee y almacena como al siguiente al último carácter de la cadena.
La función getline() inserta automáticamente el carácter nulo como el ultimo carácter de la cadena.
Ejemplo función cin
#include <iostream>
#include <string>
using namespace std;
int main()
{
float i,n,f;
cout<<"Ingrese un número"<<endl;
cin>>n;
if(n<0)
{
cout<<"Como se calcula el factorial de un numero negativo?";
}
else
Elaborado por el Lic. Jose Ramon Vilchez
Página 4
Universidad de Ciencias comerciales U.C.C
PROGRAMACION II
Unidad II: Cadenas y Caracteres en C++
Docente : Lic. José Ramón Vilchez
{
f=1;
for(i=1;i<=n;i++)
{
f=f*i;
}
cout<<"El Resultado es :"<<f<<"\n";
system("pause");
}
}
Ejemplo función cin.getline()
#include <iostream>
#include <string>
using namespace std;
int main()
{
char s1[15];
char s2[15];
cout << "Ingrese su primer Nombre: ";
cin >> s1;
//cin.getline(s1,15);
cout << "Ingrese su segundo Nombre: ";
//cin.getline(s2,15);
cin >> s2;
cout <<"Su Nombre Completo es :"<<s1<<" "<<s2<<""<< endl;
system("pause");
return 0;
}
Elaborado por el Lic. Jose Ramon Vilchez
Página 5
Universidad de Ciencias comerciales U.C.C
PROGRAMACION II
Unidad II: Cadenas y Caracteres en C++
Docente : Lic. José Ramón Vilchez
Función cin.get
Se utiliza para leer carácter a carácter.La llamada cin.get(car) copia el carácter siguiente del flujo de entrada cin
en la variable car y devuelve 1 , a menos que se detecte el final del archivo, en cuyo caso se devuelve 0.
Ejemplo
#include<iostream>
using namespace std;
int main()
{
char str[500];
cout << "Introduce una frase: ";
cin.getline(str, 500, '\n');
cout << "Tu frase es: " << str;
cin.get();
system("pause");
}
Función cout.put
La funcion opuesta de get es put. La funcion cin.put se utiliza para escribir en el flujo de salida cout caracter a
caracter
Ejemplo
#include <iostream>
using namespace std;
int main() {
char l = 'l';
unsigned char a = 'a';
cout.put('H').put('o').put(l).put(a) << endl;
system("pause");
}
Elaborado por el Lic. Jose Ramon Vilchez
Página 6
Universidad de Ciencias comerciales U.C.C
PROGRAMACION II
Unidad II: Cadenas y Caracteres en C++
Docente : Lic. José Ramón Vilchez
Funcion cin.putback
La funcion cin.putback restaura el ultimo caracter leido por cin.get() de nuevo al flujo de entrada cin
#include <iostream>
#include <string>
int main () {
std::cout << "Ingrese un numero o una palabra: ";
char c = std::cin.get();
if ( (c >= '0') && (c <= '9') )
{
int n;
std::cin.putback (c);
std::cin >> n;
std::cout << "Usted ingreso el Numero: " << n << '\n';
}
else
{
std::string str;
std::cin.putback (c);
getline (std::cin,str);
std::cout << "Usted Ingreso la Palabra: " << str << '\n';
}
system("pause");
return 0;
}
Funcion cin.ignore
La función cin.ignore lee uno o mas caracteres del flujo de entrada cin sin procesar.
#include <iostream>
int main () {
char first, last;
std::cout << "Ingrese su primer nombre seguido de su segundo nombre: ";
first = std::cin.get();
std::cin.ignore(256,' ');
last = std::cin.get();
std::cout << "sus iniciales son : " << first << last << '\n';
system("pause");
return 0;
}
Elaborado por el Lic. Jose Ramon Vilchez
Página 7
Universidad de Ciencias comerciales U.C.C
PROGRAMACION II
Unidad II: Cadenas y Caracteres en C++
Docente : Lic. José Ramón Vilchez
Funcion cin.peek
#include <iostream>
#include <string>
int main () {
std::cout << "Ingrese un Numero o una palabra ";
char c = std::cin.peek();
if ( (c >= '0') && (c <= '9') )
{
int n;
std::cin >> n;
std::cout << "Usted ingreso el Numero: " << n << '\n';
}
else
{
std::string str;
std::getline (std::cin, str);
std::cout << "Usted ingreso la palabra: " << str << '\n';
}
system("pause");
return 0;
}
Elaborado por el Lic. Jose Ramon Vilchez
Página 8
Descargar