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)
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.
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,
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.
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.
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; }
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.
Streams: el objeto cin by Roberto C. González is licensed under a Creative Commons Reconocimiento-NoComercial-CompartirIgual 4.0 Internacional License.
El comando dnsenum es una herramienta de línea de comandos para realizar enumeración de DNS…
En esta entrada te presento 24 de las listas negras más comunes que los servidores…
ZoomIt es una herramienta de anotación y zoom de pantalla para presentaciones técnicas que incluyen…
WinObj es el visor de espacios de nombres de Object Manager definitivo. Es la primera…
Whois realiza el registro de registro para el nombre de dominio o la dirección IP…
VolumeID – Esta utilidad, le permite cambiar los identificadores de los discos FAT y NTFS…