Primeros Pasos Para Programar: El tipo de dato String

En este artículo te voy a mostrar uno de los tipos de datos que van a facilitarte mucho el aprendizaje y la resolución de problemas.

Vimos, en artículos anteriores, los tipos de datos básicos más usados. Entre ellos estaba el tipo char (carácter). Como dijimos el tipo carácter representa toda la gama alfanumérica del teclado, por tanto puede ser cualquier letra, número o símbolo del teclado.

¿Por qué te cuento esto?. Vamos a analizarlo, nosotros sólo podemos representar UN único carácter en una variable. ¿Cómo podemos representar el nombre de una persona?¿y una dirección de correo?. Realmente hay muchas técnicas, lo que pasa es que hasta que no estemos mas avanzados en la programación es complicado de entenderlas. Por ello te quiero mostrar el tipo de dato String.

El tipo de dato String no entra dentro de los básicos. ¿Qué características tiene? bueno pues puede almacenar dentro de una variable una cadena de caracteres (frase). Este tipo de dato es muy típico del lenguaje c++ ya que es una de las mejoras con respecto al lenguaje c.

¿Cómo usamos el tipo de dato String? pues es muy sencillo; primeramente debemos de declarar una nueva librería (En la zona de declaración de librerías). Esta librería aparte de ofrecernos el tipo de dato String nos ofrece también funciones asociadas a él, aunque hasta más adelante no las veremos. La librería es la String.h y se declara de la siguiente manera:

#include <string.h>

Al declarar esta librería ya puedes usar el tipo de dato string declarando variables de esta manera:

string nombre= “Javi”;

En esta declaración nombre es una variable de tipo string y el valor de esta es la cadena “Javi”.  Bueno el comportamiento es igual que cualquier otra variable.

En esta imagen os muestro un programa sencillo para que veáis el uso de este tipo de dato. Las funciones que conlleva, las iremos viendo más adelante.

Para reforzar todos los conceptos que hemos estado viendo a lo largo de estos días, te voy a proponer un pequeño ejercicio:

Crear un programa que pida el nombre, los apellidos, la dirección, el teléfono, el año de nacimiento y la profesión del usuario. El programa sacará ordenadamente dichos datos por pantalla.

Para que tu aprendizaje sea eficaz, realiza este problema, y si tienes alguna duda puedes dejarme un comentario y YO personalmente te la resolveré.

Muchas Gracias,

Javi Pizarro

Acerca de Javi Pizarro

Ingeniero informático dedicado a la docencia, con experiencia en creación de programas de gestión y desarrollo de aplicaciones web.
Esta entrada fue publicada en Programacion y etiquetada , , , , , , , , , , , , . Guarda el enlace permanente.

15 respuestas a Primeros Pasos Para Programar: El tipo de dato String

  1. Alexhr dijo:

    Buenas,
    He intentado hacer el ejercicio que ha propuesto y no ma salio de ninguna de las maneras que lo he hecho, podría revisar la estructura, es que no sé si no he entendido bien la funcion de la libreria string o me falla algo…La estrutura me ha quedado asi:

    #include
    #include
    #include
    using namespace std;
    int main() {
    int variablenombre;
    int variableapellido;
    int variabletelefono;
    int variabledireccion;
    int variablenacimiento;
    int variableprofesion;
    string nombre=”variable nombre”;
    string apellido=”variable apellido”;
    string telefono=”variable telefono”;
    string direccion=”variable direccion”;
    string nacimiento=”variable nacimiento”;
    string profesion=”variable profesion”;

    cout<<"Por favor introduce los siguientes datos"<<endl;
    cout<<"introduce tu nombre "<>variablenombre;
    cout<<"introduce tu apellido "<>variableapellido;
    cout<<"introduce tu telefono "<>variabletelefono;
    cout<<"introduce tu direccion "<>variabledireccion;
    cout<<"introduce tu año de nacimiento "<>variablenacimiento;
    cout<<"introduce tu profesion "<>variableprofesion;
    cout<<"tus datos son:"<<endl;
    cout<<nombre<<" "<<apellido<<" "<<telefono<<" "<<direccion<<" "<<nacimiento<<" "<<profesion;//esto staria en una misma línea//
    getch();
    }

    • Javi Pizarro dijo:

      Buenas alexhr,
      Tienes algunos fallos pero, no te preocupes que es lo normal cuando se empiezan a hacer pruebas. Bueno te cuento:
      1.- No se si las librerías las declaras bien. Ya sabes que debes de poner
      #include
      #include
      #include
      2.- Declaras variables de tipo entero (int) e intentas asociarlas al tipo string. Esto es un error. Las variables enteras (int) sonun tipo de variable y eñl string es otro tipo. En las enteras introduces valores numéricos y en los string introduces cadenas de caractéres (frases).
      3.- Lo que debes de hacer, viendo tu codigo, es quitar las variables int y declarar solo tipos string. Entonces borra los tipos int y deja los string declarandolos de la siguiente manera:
      string nombre;
      string apellido;
      string telefono;
      string direccion;
      string nacimiento;
      string profesion;
      4.- Utilizas solamente cout. Cout solo muestra un mensaje por la salida estándar. Para poder recoger el dato del usuario tienes que usar la función cin. Te muestro como es un ejemplo con la variable nombre:
      cout<>nombre;
      y asi tienes que ir pidiendole al usuario que vaya introduciendo los datos, los cuales, con cin se guardaran en la variable string, el nombre que introduzca el usuario se guardara en la variable string nombre. Al final cuando hayas introducido todos los datos en todas las variables, puedes proceder a mostrarlo todo por la salida estándar con cout (Eso si lo tienes bien implementado).
      5.- Después de ver esto, te aconsejo que leas de nuevo los artículos de tipos de datos básicos y la del tipo de dato string, y observes muy bien las imágenes de ejemplo.
      Pruebalo y si sigue fallándote aqui estoy para resorver tus dudas.

  2. Alexhr dijo:

    ok!! Muchas gracias,ya ma salido bien, el fallo lo he tenido en asociar las variable string con la variable int.

  3. Samu dijo:

    Tengo varias preguntas;
    -Una vez que ya tienes el programa ejecutandose, cuando tienes que introducir los caracteres, ¿por qué si pones un espacio el siguiente no te da la opcionde poner y se salta al siguiente? Por ejemplo:
    Apellidos: Ocaña Losada
    Direccion: Telefono: (y en direccion no me la opcion de escribir)

    -Otra es como puedo hacer para que la frase se termine y pase al siguiente renglon sin tener que llegar al final, he probado en ponerlo en otro cout diferente pero me lo sigue poniendo seguido ¿Se puede?

    Gracias

    • Javi Pizarro dijo:

      Buenas Samu, Te pido disculpas por tardar en contestarte.
      A tus preguntas te comento:
      1.- La salida estandar no permite los espacios, por tanto, no puedes asignarle a un tipo string espacios en dicha salida. Si preguntas dirección e introduces en la salida estándar calle adelfa, la cadena o frase que el tipo estring te recoge es solo calle, adelfa la rechazará (pero como te he dicho no es probema del tipo string sino del simbolo del sistema de windows. Por tanto deberás separar variables. Primero una que indique si es calle o avenida etc, y despues otra con el nombre de la calle. Por eso no te permite seguir introduciendo datos. Si no te queda claro mandame otro comentario ok?.
      2.- Para que la frase pase al siguiente renglón tienes dos opciones. Una es poniendo \n, te pongo un ejemplo:
      cout<<"Introduce tu nombre\n";
      con eso el siguiente mensaje que envíes saldrá en la siguiente línea.
      La otra opción es usando endl, te lo muestro en el siguiente ejemplo:
      cout<<"Introduce tu nombre: "<<endl;
      Pruebalo y me comentas si te ha salido. Espero que continues tus prácticas.
      Ya te puedes suscribir al blog dejando tu correo electrónico y asi cuando añada artículos o comentarios se te enviará un correo y no tienes que estar visitando constantemente el blog para ver si hay actualizaciones.
      Un saludo.

  4. mark dijo:

    Hola, realmente me e quedado impresionado con este magnifico ejercicio que me a salido a la perfección y me gustaría saber si se puede pasar para que lo vean otras personas si no tienes el copilador necesario. No se si lo digo bien no se muy bien el significado de copilador y antes me refería al programa DEVC++
    Gracias.

    • Javi Pizarro dijo:

      Hola mark, veo que estas avanzando. Cuando creas un programa y lo compilas se te genera un archivo ejecutable. Mira en la carpeta donde creas el archivo cpp (archivo de código funente que es el que creas con devc++) y verás que se te ha generado un archivo con el mismo nombre y ejecutable .exe Ese es el archivo que puedes portar a cualquier computador, es el archivo ejecutable de tu programa. Los usuarios que lo usen solo podrán ejecutarlo sin ver el código que tu generaste. Espero haberte ayudado un saludo.

  5. raul galvez cachairo dijo:

    javi mira en un comentario de aqui arriba te preguntan lo de los espacios con las variables string y tu respuesta es que es problema del simbolo del sistema de windows
    ¿esto quiere decir que si cambiamos el sistema operativo a un UBUNTU por ejemplo no tendriamos este problema
    gracias

    • Javi Pizarro dijo:

      Buenas raúl, yo trabajo desde linux, y me gustaría que cuando seamos más miembros dentro del blog pues poner seminarios y artículos para también aprender a trabajar con este sistema operativo. A tu pregunta no te se contestar del todo bien, creo que el shell de cualquier distribución de linux codifica el UTF-8 y creo que permite acentos, pero no estoy seguro con la “ñ” y con los espacios. Una forma de poder solucionar esto es con un vector de char[] que me comentaste en una hebra anterior. Comprobaré a ciencia cierta esta duda que tienes.
      Un saludo.

  6. PANCHITO dijo:

    Hola Javi, me han resultado de muchisima ayuda tus aportes, llevo 3 dias programando desde cero y ya me siento bien feliz🙂
    En el ejercicio me resulto dificil pero no imposible guardar la direccion.
    Descubri que con cada “espacio” entre palabras se define la siguiente variable
    Por ejemplo en direccion al poner:
    Calle Nathan No 15
    se definen 4 variables, que son dir1 dir2 dir3 y dir4 tan solo con separarlas con un espacio. Tuve que hacer 7 variables vacias para direccion, por si el usuario escribia 7 palabras.

    Este es mi programa completito:

    #include <iostream>
    #include <conio.h>
    #include <string.h>

    using namespace std;

    int main(){
    string nombre; //variables vacias
    string apellido;
    string edad;
    string telefono;
    string dir;
    string dir2;
    string dir3;
    string dir4;
    string dir5;
    string dir6;
    string dir7;
    string dir8;

    cout<<“BIENVENIDO AL REGISTRO\n\nPor favor escribe tu nombre:\n”;
    cin>>nombre; //rellenando variables
    cout<<“Ahora escribe tu apellido\n”;
    cin>>apellido;
    cout<<“Bienvenido a la programacion en C++ “<<nombre<<” “<<apellido;
    cout<<“\n\nCuentanos mas sobre ti. Cual es tu edad?\n”;
    cin>>edad;
    cout<<“Telefono?\n”;
    cin>>telefono;
    cout<<“Tu direccion, calle y colonia\n”;
    cin>>dir>>dir2>>dir3>>dir4>>dir5>>dir6>>dir7;

    cout<<“\nMuchas gracias por registrarte! Tus datos son los siguientes:\n\n”;//ahora a mostrar las variables guardadas
    cout<<nombre<<” “<<apellido<<“\nEdad: “<<edad<<“\nDireccion:\n”<<dir<<” “<<dir2<<” “<<dir3<<” “<<dir4<<” “<<dir5<<” “<<dir6<<” “<<dir7<<” “<<dir8<<“\nTelefono:\n”<<telefono;
    cout<<“\n\nPresione cualquier tecla para finalizar el programa”;
    getch();
    }

    Alguna observacion Javi?
    Bueno Gracias por enseñarnos programacion, en verdad yo lo aprecio mucho.

    • Javi Pizarro dijo:

      Ok, Panchito, la solución que das es buena. Lo que pasa es que el cin no deberías de usarlo asi, puesto que te obliga a introducir todos los datos. Por tanto si una dirección no tiene 7 palabras el programa ya no iria bien. Este ejemplo es para que veas el tipo string y practiques un poco con él. Hay soluciones para lo de la dirección completa incluyendo los espacios. Se puede hacer con un vector o array de caracteres. Pero ya nos metemos en el tema de vectores y arrays que todavia no hemos visto. Esta solución esta bien, simplificala y continua avanzando en tu aprendizaje. Ya, mas adelante, veremos otra solución para recoger cadenas de caracteres (frases) del usuario.
      Saludos.

  7. PANCHITO dijo:

    acabo de ver en mi programita que tengo que rellenar todas las variables “dir” que hice para poder continuar ! no me fije en eso!
    Tambien me di cuenta que si en nombre pongo por ejempo “Juan Carlos”
    se rellena apellido, pues al poner JUAN CARLOS ya son dos variables que se han rellenado :S
    Hay alguna forma de poder insertar “oraciones” en una variable en vez de una sola palabra?
    ¿puede una variable ser un un conjunto de palabras?
    tambien vi que en vez de escribir todo esto:

    string dir;
    string dir2;
    string dir3;
    string dir4;
    string dir5;
    string dir6;
    string dir7;
    string dir8;

    puedo sustituirlo por
    string dir,dir2,dir3,dir4,dir5,dir6,dir7,dir8;

    esto ahorra trabajo🙂

    • Javi Pizarro dijo:

      Bueno, aqui puedes ver el comentario que te hice anteriormente. Decirte que si no quieres esperar y quieres ver una solución para recoger frases, busca por internet el uso de vectores
      char[tamaño]. Con respecto a lo de la declaración de variables creo que lo explico en los videos. Es lo mismo declararlo de una forma que de otra. Gracias por tus aportaciones Panchito. Un saludo y espero nuevos comentarios tuyos.

  8. Ramiro dijo:

    una pregunta, yo uso char ejemplo[20] para indicar que son como maximo, 20 caracteres, esto tiene la misma función no?

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s