jueves, 10 de abril de 2025

02.- Programación I - Manejo de Cadena de caracteres - Programa Clase del 17 de Oct 2024

/*Programa tutorial inicial para el manejo de las variables tipo cadena de caracteres

autor: Carlos Ferrer

Rev. 1


Nota: Como es un programa Tutorial el mismo se va explicando


*/


#include <iostream>


#include <locale.h> //LIBRERIA PARA TRABAJAR CON LOS CARACTERES ACENTUADOS Y LA LETRA Ñ

using namespace std;


main()

{

char a;

int i,j;

setlocale(LC_ALL, "spanish"); //SETEAR EL LEGUAGE EN ESPAÑOL

cout <<"Programa elaborado por el Prof. Carlos Ferrer"<<endl;

cout <<"Rev Cs - abr 2025 "<<endl;

cout <<"Manejo de Variables Char (Caracter) y String (Cadena de Caracteres)"<<endl<<endl;

system ("pause");

system("cls");

cout <<"************************** (1) *****************************"<<endl<<endl;

cout <<"Las variables tipo Char se caracterizan por que almacenan"<<endl;

cout <<"un carácter alfanumérico o símbolo especial."<<endl<<endl;

cout <<"Las variables tipo Char se declaran de la siguiente forma"<<endl;

cout <<"char var1"<<endl<<endl;

cout <<"Se le puede asignar un valor directo usando var1='A', el dato"<<endl;

cout <<"debe ser colocado dentro de comillas simples"<<endl<<endl;

cout <<endl<<"por ejemplo"<<endl<<endl<<"caracter='a';"<<endl;

cout <<"caracter='1';"<<endl;

cout <<"caracter='*';"<<endl<<endl;

system ("pause");

system("cls");

cout <<"************************** (2) *****************************"<<endl<<endl;

cout <<"Si a Las variables tipo Char se le asigna un valor numérico (Sin comillas simples)"<<endl;

cout <<"la variable tomará el carácter de la tabla ascii de tu computadora"<<endl;

cout <<"correspondiente a esa posición"<<endl<<endl;

cout <<"Por ejemplo variable=78"<<endl;

cout <<"Para este caso el valor almacenado corresponde a la letra N en mayúscula"<<endl<<endl;

cout <<"este carácter ocupa la posición 78 en la tabla ascii de tu computador"<<endl<<endl;

cout <<""<<endl<<endl;

system ("pause");

system("cls");

cout <<"************************** (3) *****************************"<<endl<<endl;

cout <<"Procedamos a imprimir los caracteres de la tabla ascii ubicados "<<endl;

cout <<"en el rango desde el Nro.= 30 hasta el 199 "<<endl<<endl;

system ("pause");

for (i=30;i<=199;i=i+1)

    {

    a=i;

    cout <<i<<"="<<a<<" ";

    if(j==10)

        {

j=0;

cout <<endl;

    j=j+1;

   }

cout <<endl<<"Nota: Observe como las letras mayúsculas y minúsculas "<<endl;

cout <<"estan separadas por 32 posiciones (80=P y 112=p) "<<endl<<endl;

system ("pause");

system("cls");

cout <<"************************** (4) *****************************"<<endl<<endl;

cout <<endl<<"Si usted intenta meter en una variable CHAR más de un carácter"<<endl;

cout <<"el carácter almacenado será el último de la cadena "<<endl;

cout <<"por ejemplo caracter1='Carlos' el valor almacenado será"<<endl;

cout <<"el carácter 's'"<<endl<<endl;

cout <<"Sin embargo el compilador te dará una advertencia (warning) "<<endl;

cout <<"indicando que la variable tiene overflow "<<endl;

cout <<"Recuerde que esto no impide que el programa compile "<<endl<<endl;

system ("pause");

system("cls");

cout <<"************************** (5) *****************************"<<endl<<endl;

cout <<endl<<"Si a una variable tipo char (sin comillas) se le aplica una operación"<<endl;

cout <<"matemática de suma o resta, básicamente lo que hacemos es "<<endl;

cout <<"cambiar de posición de la tabla ascci"<<endl;

cout <<"Por ejemplo  "<<endl<<endl;

cout <<"Char var2= 'B'"<<endl;

cout <<"var2= var2+32"<<endl<<endl;

cout <<"Después de esa operación matemática la variable presentará"<<endl;

cout <<"el siguiente valor var2='b'"<<endl<<endl;

system ("pause");

system("cls");

cout <<"************************** (6) *****************************"<<endl<<endl;

cout <<"Las variables tipo string se caracterizan por que almacenan"<<endl;

cout <<"varios caracteres alfanumérico o símbolo especiales, incluyendo espacios en blanco"<<endl<<endl;

cout <<"Las variables tipo string se declaran de la siguiente forma"<<endl;

cout <<"string var2;"<<endl<<endl;

a=34;

cout <<"Se le puede asignar un valor directo de la siguiente manera: var2="<<a<<"Caracas"<<a<<"; el dato"<<endl;

cout <<"debe ser colocado dentro de comillas dobles"<<endl<<endl;

system ("pause");

system ("cls");

cout <<"************************** (7) *****************************"<<endl<<endl;

cout <<"Una variable string se recomienda sea declarada dentro del "<<endl;

cout <<"programa principal Main o dentro de las funciones."<<endl<<endl;

cout <<"No es recomendable declararla como una variable Global."<<endl<<endl;

cout <<"(Afuera del Main y de las funciones)"<<endl<<endl;

system ("pause");

system ("cls");

 cout <<"************************** (8) *****************************"<<endl<<endl;

cout <<"El compilador de Dev C++ entiende a una variable string"<<endl;

cout <<"como un arreglo tipo Char[n] donde n será la cantidad"<<endl;

cout <<"de letras del string menos 1, dado que la primera posición"<<endl;

cout <<"se entiende como la posición 0."<<endl<<endl;

cout <<"Veamos un ejemplo:"<<endl;

cout <<"string cadena1"<<endl;

cout <<"cadena1"<<a<<"Carlos"<<a<<endl<<endl;

cout <<"cadena1[0]='C'"<<endl;

cout <<"cadena1[1]='a'"<<endl;

cout <<"cadena1[2]='r'"<<endl;

cout <<"cadena1[3]='l'"<<endl;

cout <<"cadena1[4]='o'"<<endl;

cout <<"cadena1[5]='s'"<<endl<<endl;

system ("pause");

system ("cls");

cout <<"************************** (9) *****************************"<<endl<<endl;

cout <<"Dos variables tipo string se pueden concatenar en otra variable"<<endl;

cout <<"usando el operador (+)"<<endl;

cout <<"veamos el ejemplo:"<<endl<<endl;

cout <<"string var1,var2,var3;"<<endl;

cout <<"var1="<<a<<"Carlos"<<a<<endl;

cout <<"var2="<<a<<"Ferrer"<<a<<endl;

cout <<"var3="<<"var1 +"<<a<<" "<<a<<"+ var2;"<<endl;

cout <<"El valor final de Var3 corresponderá"<<endl;

cout <<"Var3= "<<a<<"Carlos Ferrer"<<a<<endl<<endl;

system ("pause");

system ("cls");

cout <<"************************** (10) *****************************"<<endl<<endl;

cout <<"Si usted intenta leer una variable string"<<endl;

cout <<"desde la consola usando la instrucción cin"<<endl;

cout <<"el dato se almacenara hasta el primer espacio en blanco"<<endl<<endl;

cout <<"Por ejemplo:"<<endl<<endl;

a='"';

cout <<"string var2;"<<endl;

cout <<"cout <<"<<a<<"ingrese nombre y apellido"<<a<<"<<endl;"<<endl;

cout <<"cin >>var2;"<<endl<<endl;

cout <<"Si el usuario ingresa "<<a<<"Pedro Guerra"<<a<<endl;

cout <<"El único dato que se almacenará en la variable var2 será= "<<a<<"Pedro"<<a<<endl<<endl;

system ("pause");

system ("cls");

cout <<"************************** (10) Continuación *****************************"<<endl<<endl;

cout <<"Para poder almacenar la cadena de caracteres completa"<<endl;

cout <<"usted debe usar una una instrucción de la biblioteca "<<a<<"iostream"<<a<<endl;

cout <<"que permite leer líneas completa: getline()"<<endl;

cout <<"dentro de los paréntesis usted indicará que ejecutará la función"<<endl;

cout <<"Console input y la variable que recibirá el dato: getline(cin,var2);"<<endl;

cout <<"modifiquemos el código de la forma correcta"<<endl<<endl;

cout <<"string var2;"<<endl;

cout <<"cout <<"<<a<<"ingrese nombre y apellido"<<a<<"<<endl;"<<endl;

cout <<"cin.ignore(); /*Se se utiliza para ignorar lo que hay en el buffer o un dato anterior"<<endl;   

cout <<"                Normalmente el primer getline no requiere el comando ignorar*/"<<endl; 

cout <<"getline(cin,var2);"<<endl<<endl;

cout <<"Si el usuario ingresa "<<a<<"Pedro Guerra"<<a<<endl;

cout <<"El dato que se almacenará en la variable var2 será= "<<a<<"Pedro Guerra"<<a<<endl;

cout <<"(Incluyendo el espacio en blanco como un carácter)"<<a<<endl<<endl;

system ("pause");

system ("cls");

cout <<"************************** (11)  *****************************"<<endl<<endl;

cout <<"Nosotros podemos extraer una cadena de caracteres a partir de otra"<<endl;

cout <<"cadena de caracteres usando el parámetro "<<a<<"substr()"<<a<<endl;

cout <<"este parámetro actúa sobre el dato a extraer"<<endl;

cout <<"dentro de los paréntesis se indica en principio la posición del carácter"<<endl;

cout <<"a partir del cual se ejecutará la extracción, veamos un ejemplo:"<<endl<<endl;

cout <<"string var1,var2;"<<endl;

cout <<"var1="<<a<<"123456 89ABCD"<<a<<";"<<endl;

cout <<"var2=var1.substr(4);"<<endl<<endl;

cout <<"En var2 se guardará ="<<endl;

cout <<a<<"56 89ABCD"<<a<<endl<<endl;

cout <<"Recuerde que las cadenas de caracteres arrancan"<<endl;

cout <<"en la posición Cero (0), por eso el carácter de la posición 4 es el cinco (5)"<<endl<<endl;

system ("pause");

system ("cls");

cout <<"************************** (11) Continuación *****************************"<<endl<<endl;

cout <<"Al parámetro substr se le puede agregar en los paréntesis "<<endl;

cout <<"un segundo elemento que correspondería a la cantidad de"<<endl;

cout <<"caracteres que vas a extraer"<<endl<<endl;

cout <<"veamos un ejemplo:"<<endl<<endl;

cout <<"string var1,var2;"<<endl;

cout <<"var1="<<a<<"Profesión= Ingeniero Industrial"<<a<<";"<<endl;

cout <<"var2=var1.substr(11,9);"<<endl<<endl;

cout <<"En var2 se guardará ="<<endl;

cout <<a<<"Ingeniero"<<a<<endl<<endl;

cout <<"nota: recuerde la posición de la frase arranca en (0) cero"<<endl;

system ("pause");

system ("cls");

cout <<"************************** (12)  *****************************"<<endl<<endl;

cout <<"El parámetro "<<a<<"size()"<<a<<" retorna la cantidad de caracteres"<<endl;

cout <<"de una cadena de caracteres"<<endl;

cout <<"veamos un ejemplo:"<<endl<<endl;

cout <<"string var1;"<<endl;

cout <<"int cantidad;"<<endl;

cout <<"var1="<<a<<"Esto es una Prueba"<<a<<";"<<endl;

cout <<"cantidad=var1.size();"<<endl<<endl;

cout <<"En cantidad se guardará = 18"<<endl<<endl;

cout <<"Recuerde que las cadenas de caracteres arrancan"<<endl;

cout <<"en la posición Cero (0), como esta cadena tiene 18 caracteres"<<endl;

cout <<"terminará en la posición diecisiete (17)"<<endl<<endl;

system ("pause");

system ("cls");

cout <<"************************** (13)  *****************************"<<endl<<endl;

cout <<"El parámetro "<<a<<"find()"<<a<<" retorna la posición en la que aparece"<<endl;

cout <<"una cadena de caracteres dentro de otra"<<endl;

cout <<"veamos un ejemplo:"<<endl<<endl;

cout <<"string var1;"<<endl;

cout <<"int Pos;"<<endl;

cout <<"var1="<<a<<"Esto es una Prueba"<<a<<";"<<endl;

cout <<"Pos=var1.find("<<a<<"Pru"<<a<<");"<<endl<<endl;

cout <<"En Pos se guardará = 12"<<endl<<endl;

cout <<"Este valor corresponde a la posición donde comienza la cadena"<<endl;

cout <<"de caracteres "<<a<<"Pru"<<a<<" dentro de var1"<<endl<<endl;

system ("pause");

system("cls");

cout <<"************************** (13)  Continuación *****************************"<<endl<<endl;

cout <<"veamos otro ejemplo:"<<endl<<endl;

cout <<"string var1,var2;"<<endl;

cout <<"int Pos;"<<endl;

cout <<"var1="<<a<<"Esto es una Prueba"<<a<<";"<<endl;

cout <<"var2="<<a<<" e"<<a<<";"<<endl;

cout <<"Pos=var1.find(var2);"<<endl<<endl;

cout <<"En Pos se guardará = 5"<<endl<<endl;

cout <<"Este valor corresponde a la posición donde comienza la cadena"<<endl;

cout <<"de caracteres "<<a<<" e"<<a<<" dentro de var1"<<endl<<endl;

cout <<"Recuerde los espacios en blanco son caracteres existentes"<<endl<<endl;

system ("pause");

system ("cls");

cout <<"************************** (13) Continuación *****************************"<<endl<<endl;

cout <<"El parámetro find() tambien puede retornar la posición en la que aparece"<<endl;

cout <<"una cadena de caracteres a partir de una posición específica"<<endl;

cout <<"veamos un ejemplo:"<<endl<<endl;

cout <<"string var1;"<<endl;

cout <<"int Pos;"<<endl;

cout <<"var1="<<a<<"Esto es una Prueba especial"<<a<<";"<<endl;

cout <<"Pos=var1.find("<<a<<"es"<<a<<";10);"<<endl<<endl;

cout <<"En Pos se guardará = 19"<<endl<<endl;

cout <<"Este valor corresponde a la posición donde comienza la cadena"<<endl;

cout <<"de caracteres "<<a<<"es"<<a<<" dentro de var1 después de la decima posición"<<endl<<endl;

cout <<"Nota: Observen como la primera cadena "<<a<<"es"<<a<<" se ignora porque esta antes de la posición 10"<<endl<<endl;

system ("pause");

system("cls");

cout <<"************************** (14)  Actividad del estudiante *****************************"<<endl<<endl;

cout <<"Elabore un programa que permita capturar desde la consola"<<endl;

cout <<"una cadena de caracteres de 5 palabras en una variable string."<<endl<<endl;

cout <<"Este programa debera sustituir todas las vocales de las 5 palabras por asteriscos y después"<<endl;

cout <<"invertir el sentido de cada palabra"<<endl<<endl;

cout <<"Por ejemplo:"<<endl<<endl;

cout <<"Ingrese frase de tres palabras = La Florencia Caracas"<<endl<<endl;

cout <<"Resultado = *L **cn*r*lF s*c*r*C"<<endl<<endl;

cout <<"ÉXITO!!!!"<<endl<<endl;

system ("pause");

system ("cls");

}

No hay comentarios.:

Publicar un comentario