Anteriormente revisamos que los Streams en C++ nos permiten dirigir la información (de forma más específica, bytes) de y hacia un dispositivo, en esa ocasión vimos que el objeto cout dirigía la información al dispositivo estándar de salida (el monitor, en este caso)
cin
El objeto cin es el opuesto a cout, cin dirige el flujo de información desde el dispositivo estándar de entrada (el teclado) al programa. La entrada que recibimos desde el teclado debemos almacenarla para su posterior uso. Normalmente utilizaremos variables para almacenar temporalmente los datos recibidos.
cin es acrónimo de entrada por teclado (console input) y es la forma más simple de recibir datos del usuario. Y es, a demás, la forma más elemental de añadir interactividad a tus programas.
Sintaxis de cin
La sintaxis de cin es la siguiente
cin >> entrada;
El operador «>>» se denomina de extracción o de lectura. Toma el valor del flujo de su izquierda y lo sitúa en la variable situada a la derecha.
Por ejemplo, si deseamos recibir la edad del usuario, podemos utilizar las siguientes instrucciones:
int edad; cin >> edad;
definimos la variable edad como entero y con la sentencia cin asignamos la entrada del usuario en edad.. si deseamos calcular por ejemplo, el área de un círculo, debemos solicitar el radio:
double radio; cin >> radio;
como puedes apreciar es muy sencillo el uso del cin para recibir una entrada desde el teclado. cin Ejemplo,
Analizando el uso de programas con cin
A continuación vemos que el uso de cin amplía la capacidad de nuestros programas para resolver problemas de forma más útil de cara al usuario.
// cin.cpp // Este programa muestra el uso del stream de entrada cin(), con la información obtenida obtenemos el IMC // (IMC = Índice de masa corporal) utilizando la fórmula: IMC = masa / estatura^2 de acuerdo a // https://es.wikipedia.org/wiki/%C3%8Dndice_de_masa_corporal // 2017, Por http://about.me/carlosgbr // Versión 1 // Compilado en https://www.onlinegdb.com/online_c++_compiler #include <iostream> using namespace std; int main() { char nombre[10]; float peso, estatura, imc; cout << "Después de escribir el dato que se te pide, pulsa la tecla ENTER ó ACEPTAR" << endl << endl; cout << "Este programa te permitirá conocer tu índice de masa corporal (IMC)" << endl << endl; cout << "Cuál es tu nombre?:" << endl; cin >> nombre; //Se lee y almacena el nombre cout << "Mucho gusto " << nombre << ", por favor, dime tu peso en kilogramos: " << endl; cin >> peso; //Se lee y almacena el peso cout << "Muy bien, ahora por favor, dime tu estatura en metros: " << endl; cin >> estatura; //Se lee y almacena la estatura //cálculo del IMC imc = peso / (estatura*estatura); cout << "Muy bien " << nombre << ", Te informo que tu Índice de Masa Corporal es: " << imc << endl; cout << "Lo cual no es ni bueno ni malo, sino todo lo contrario." << endl; return 0; }
A continuación se muestra una salida del programa:
Como puedes apreciar, ya es un programa «que hace algo», el código es bastante claro y están documentados los conceptos nuevos, sin embargo vale la pena hacer algunas observaciones generales.
- Nota que para almacenar el nombre, se define una variable char, la cual nos permite almacenar una letra, sin embargo la notación utilizada char nombre[10] indica que nombre puede contener hasta 10 caracteres, esto se llama un «arreglo o array», más adelante revisaremos este tema, por lo pronto es importante que sepas que así puedes almacenar palabras más allá del límite de un carácter propio de una variable de tipo char. Si necesitas almacenar nombres más extensos que 10 letras, basta con aumentar este valor.
- Observa que el programa comienza dando instrucciones al usuario, y en las siguientes líneas le deja claro al usuario que información espera el programa, indicando incluso el formato (kilogramos, metros). Te siempre presente que no basta que un programa funcione bien, debe funcionar bien y debe ser «amigable con el usuario», muchas buenas ideas han fracasado por no ser «atento y divertidos» con el usuario. Así que recuerda, trata bien a tu usuario, así como a tí te gusta que te traten bien.
- Observa que los comentarios en el encabezado del programa hacen referencia al origen de la fórmula que utilizamos, además de describir a la fórmula en sí, si bien no es información imprescindible, siempre será buena idea documentar esta información por si se llega a actualizar este programa y se pueda evaluar rápidamente si se requiere hacer cambios en la forma en que se calcula el valor que nos interesa (el IMC en nuestro caso)
- Finalmente una observación relacionada con el tema de la precedencia de operadores, en este programa queda bastante clara la necesidad de conocer a la perfección este tema. Nota que la fórmula utilizada es IMC = masa / estatura^2 el cuadrado indica que la estatura se debe elevar al cuadrado antes de dividir a la masa. por esta razón la fórmula se ha implementado imc = peso / (estatura*estatura); con los paréntesis estamos dejando claro que queremos evaluar primero el cuadrado de la estatura para después realizar la división de la masa. A modo de ejercicio te sugiero que quites los paréntesis de la fórmula y ejecutes el programa, notarás la diferencia de forma inmediata con los resultados obtenidos. Finalmente restablece los paréntesis para que el programa funcione bien.
Tal vez notes que para este ejercicio he cambiado de compilador en línea, en este ejercicio se utilizó el compilador disponible en https://www.onlinegdb.com/online_c++_compiler pues el que venía utilizando hasta el ejercicio anterior, no procesa de forma correcta las entradas del objeto cin, por eso tuve que buscar otra alternativa, junto al compilador mencionado, he revisado que los compiladores https://www.jdoodle.com/online-compiler-c++ (requiere «encender» el switch interactivo para procesar las entradas con cin() ) y https://repl.it/languages/CPP
Ya ha quedado bastante claro el uso y función de cin(), y de hecho es lo que casi siempre harás con este stream, sin embargo resulta conveniente que sepas que cin se puede utilizar con diversos modificadores que te permiten controlar de una forma más eficiente y precisa las entradas de datos que recibes.
Concatenación con cin
Puedes encadenar varias entradas con el objeto cin, por ejemplo si vas a solicitar 4 valores del mismo tipo, puedes pedir que los introduzcan seguidos separándoles por un espacio. No es la forma más clara de solicitar información, pero en ciertas circunstancias, puede resultar lo más óptimo.
Por ejemplo si vas a solicitar 3 temperaturas puedes escribir
cin >> temperatura1 cin >> temperatura2 cin >> temperatura3
o bien,
cin >> temperatura1 >> temperatura2 >> temperatura3
El siguiente programa ilustra esta forma de uso.
// cin2.cpp // Este programa muestra el uso del stream de entrada cin(), muestra el uso // de cin() encadenado // Calculamos el área y perímetro de un cuadrilátero regular // 2017, Por http://about.me/carlosgbr // VersiC3n 1 // Compilado en https://www.onlinegdb.com/online_c++_compiler #include <iostream> using namespace std; int main () { float lado1, lado2, area, perimetro; cout << "Después de escribir el dato que se te pide, pulsa la tecla ENTER ó ACEPTAR" << endl << endl; cout << "Este programa calcula el área y perímetro de un rectángulo" << endl << endl; cout << "Indica el lado1 y el lado2 separados por un espacio, depués pulsa ENTER:" << endl; cin >> lado1 >> lado2; //Lee los lado de forma encadenada //Corroboramos que tenemos los 2 lados almacenados cout << "El lado1 mide: " << lado1 << ", El lado2 mide: " << lado2 << endl; //Calculamos el perímetro p = l+l+l+L perimetro = (lado1 * 2) + (lado2 * 2); //Calculamos el área area = lado1 * lado2; cout << "El cuadrilátero tiene dimensiones de: " << lado1 << " x " << lado2 << " unidades" << endl << endl; cout << "El perímetro es de: " << perimetro << " unidades. " << "Y el área es de: " << area << " unidades cuadradas" << endl; return 0; }
Otros modificadores
cin, como objeto que es, tiene asociadas funciones para manejar cadenas de texto, validación de caracteres y control de flujo, aún faltan algunos conceptos básicos que desde mi punto de vista debes conocer para poder abordar con comodidad su descripción y uso. Por esta razón el tema se retomará adelante, una vez que cuentes con más herramientas.
Si tienes alguna duda que no se responde en este documento, por favor plantea tu pregunta para poder responderte. O escribe directamente a soporte@ehack.mx
Referencias
- Por Roberto C. González para Ethical Hack
Fuente Imágenes
- «Todas las imágenes de esta sección»: by Nala Systems
Tutorial de C++ by eHack
- Volver al índice de temas del Tutorial de C++
- *** Durante todo este tutorial se repetirá: Este es un curso orientado a gente que nunca ha programado, incluso a gente ajena a la informática. Por esta razón el desarrollo puede parecer lento en ciertas etapas. Prefiero ser claro paso a paso, que hacer «pasos mágicos» como suele ocurrir cuando se enseña programación. *** También es buena idea leas esta entrada si te preguntas «Por qué C++»
Código Fuente
- El código fuente de toda la serie lo puedes descargar en nuestro repositorio en github busca los programas con el nombre del encabezado de cada programa.
- Código de esta sección
Streams: el objeto cin, por Roberto C. González. Se distribuye bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 4.0 Internacional.
©2025, Ethical Hack, Todos los derechos reservados sobre el contenido propio.