E/S POR CONSOLA DE C++ Parte I. Elementos Básicos Dr. Oldemar Rodríguez R. Dado que C++ es un superconjunto de C, todos los elementos del lenguaje C están contenidos en el lenguaje C++. Esto implica que todos los programas en C también son por omisión programas en C++. (En realidad hay muy pocas excepciones a esta regla.) Por Io tanto, es posible escribir programas en C++ que parezcan programas en C. Aunque no hay nada malo en esto, significa que no se va a beneficiar de las características de C++. La mayoría de los programadores de C++ escriben programas que usan un estilo y características que son exclusivas de C++. Una razón para ello es que ayuda a comenzar a pensar en términos de C++ en vez de hacerlo en términos de C. Además, usando características de C++, cualquiera que lea el programa sabrá inmediatamente que es un programa en C++ y no en C. Quizás la característica específica más común utilizada por los programadores de C++ es su enfoque a la E/S por consola. Aunque se pueden utilizar funciones como printf() y scanf(), C++ proporciona un método nuevo y mejor de realizar estas operaciones de E/S. En C++, la E/S se realiza usando operadores de E/S en vez de funciones de E/S. El operador de salida es << y el operador de entrada >>. Analicemos esta sentencia de C++: cout << "Muestra esta cadena por pantalla.\n"; Esta sentencia hace que se muestre la cadena en la pantalla de la computadora. cout es un flujo predefinido que se enlaza automáticamente con la consola cuando un programa C++ comienza su ejecución. Es similar al stdout de C. Como en C, la consola de E/S de C++ se puede redirigir, pero para el resto de este estudio se asume que se está utilizando la consola. Utilizando el operador de salida << es posible sacar cualquier tipo básico de C++. Por ejemplo, esta sentencia muestra el valor 100.99: cout << 100.99; En general, para mostrar algo por consola, utilice esta sintaxis general del operador <<: cout<<expresión; Para introducir un valor desde el teclado, utilice el operador de entrada >>. Por ejemplo, este fragmento introduce un valor entero en num: int num; cin >> num; Observe que num no viene precedido por un & Como ya sabe, como cuando se introducen valores utilizando la función de C scanf(). Este no es el caso cuando utilizamos operadores de entrada de C++. En general, para introducir valores desde el teclado utilice la sintaxis de >>: cin >> variable; Nota: Los papeles de << y >> son ejemplos de sobrecarga de operadores. Para usar los operadores de E/S de C++, se debe incluir en el programa el archivo de cabecera iostream.h. Ejemplo 1: (ver EjemploP1-1) Este programa muestra una cadena, dos valores enteros y un valor real doble: #include "StdAfx.h" #include <iostream> using std::cout; using std::cin; using std::endl; int main() { int i, j; double d; char ch; i = 10; j = 20; d = 99.101; cout << "estos son algunos valores: "; cout << i; cout << ' '; cout << j; cout << ' '; cout << d; cin >> ch; return 0; } Ejemplo 2: (ver EjemploP1-2) Este programa muestra una forma más eficiente del ejemplo 1: #include "StdAfx.h" #include <iostream> using std::cout; using std::cin; using std::endl; int main() { int i, j; double d; char ch; i = 10; j = 20; d = 99.101; cout << "estos son algunos valores: "; cout << i << ' ' << j << ' ' << d; cin >> ch; return 0; } Ejemplo 3: (ver EjemploP1-3) Este programa pide al usuario un valor entero: #include "StdAfx.h" #include <iostream> using std::cout; using std::cin; using std::endl; int main() { int i; char ch; cout << "Introduzca un valor: "; cin >> i; cout << "Este es su número: " << i <<"\n"; cin >> ch; return 0; } Ejemplo 4: (ver EjemploP1-4) Este programa pide al usuario un valor entero, un valor real y una cadena: #include "StdAfx.h" #include <iostream> #include <stdio.h> using std::cout; using std::cin; using std::endl; int main() { int i; float f; char s[80]; char ch; cout << "Introduzca un entero, un real y una cadena: "; cin >> i >> f >> s; cout << "Estos son sus datos: "; cout << i << ' ' << f << ' ' << s; flushall(); cin >> ch; } Ejemplo 5: (ver EjemploP1-5) #include "StdAfx.h" #include <iostream> #include <stdio.h> using std::cout; using std::cin; using std::endl; int main() { int i; float f; char s[80]; char ch; cout << "Introduzca un entero, un real y una cadena: "; cin >> i >> f; flushall(); cin.getline(s,79); cout << "Estos son sus datos: "; cout << i << ' ' << f << ' ' << s; flushall(); cin >> ch; }