Herramientas de usuario

Herramientas del sitio


curso-cpp:jugando-con-hola-mundo

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anterior Revisión previa
Próxima revisión
Revisión previa
curso-cpp:jugando-con-hola-mundo [2016/09/23 21:58]
santo
curso-cpp:jugando-con-hola-mundo [2017/10/29 19:17] (actual)
santo
Línea 3: Línea 3:
 En la sección anterior, vimos un ejemplo de programa que llamamos ''​HolaMundo.cpp''​. Reproducimos este programa a continuación:​ En la sección anterior, vimos un ejemplo de programa que llamamos ''​HolaMundo.cpp''​. Reproducimos este programa a continuación:​
  
-<​code>​+<​code ​cpp>
 #include <​iostream>​ #include <​iostream>​
  
Línea 29: Línea 29:
 Veamos un ejemplo del ''​HolaMundo.cpp''​ con comentarios agregados: Veamos un ejemplo del ''​HolaMundo.cpp''​ con comentarios agregados:
  
-<​code>​+<​code ​cpp>
 #include <​iostream>​ #include <​iostream>​
  
Línea 62: Línea 62:
 En ''​HolaMundo.cpp'',​ damos a la computadora la instrucción de imprimir una línea con el texto ''​Hola mundo!''​. Pero podríamos perfectamente escribir una secuencia de órdenes, escribiendo muchas cosas: En ''​HolaMundo.cpp'',​ damos a la computadora la instrucción de imprimir una línea con el texto ''​Hola mundo!''​. Pero podríamos perfectamente escribir una secuencia de órdenes, escribiendo muchas cosas:
  
-<​code>​+<​code ​cpp>
 #include <​iostream>​ #include <​iostream>​
  
Línea 93: Línea 93:
 </​code>​ </​code>​
  
 +Es posible que al ejecutar esto con Geany, en la ventana parezca que la línea larga (que comienza con "Esto va a salir"​) se vea partida en dos líneas. Pero esto es por una cuestión de que la ventana que utiliza Geany para la visualización no es muy ancha: el texto que escribe el programa tiene todo eso en una sola línea. Esto lo podemos verificar si seleccionamos el texto que ha producido el programa, hacemos clic derecho -> copiar, y luego lo pegamos en un editor de texto separado (como el mismo Geany): Veremos que allí el programa ha producido un texto que efectivamente,​ solamente cambia de línea al utilizar los endl.
 +
 +
 +
 +
 +
 +===== Programa que saluda =====
 +
 +Hasta ahora, nunca hemos hecho un programa interactivo:​ Nuestros programas solamente escriben un texto fijo a la pantalla sin importar lo que hagamos. Veamos ahora un programa que saluda:
 +
 +<code cpp>
 +#include <​iostream>​
 +#include <​string>​
 +
 +using namespace std;
 +
 +int main()
 +{
 +    cout << "Cual es tu nombre?"​ << endl;
 +    string nombre;
 +    cin >> nombre;
 +    cout << "​Buenos dias " << nombre << "​!"​ << endl;
 +    return 0;
 +}
 +</​code>​
 +
 +Este es un ejemplo muy sencillo, pero aquí hemos incorporado varios elementos nuevos que explicaremos brevemente (serán explicados mejor en la sección siguiente).
 +
 +En primer lugar, hemos añadido la línea ''#​include <​string>''​. Esto es necesario porque queremos utilizar ''​string'',​ que es parte de la biblioteca de igual nombre. ''​string''​ se utiliza para que los programas puedan manipular textos.
 +
 +La línea ''​string nombre;''​ le avisa a la computadora que usaremos una **variable**,​ a la cual hemos llamado nombre (puesto que la usaremos para el nombre del usuario que vamos a saludar). Las variables son un concepto fundamental de la programación imperativa: Lo veremos mucho mejor en la sección siguiente, pero por ahora, basta con saber que la intención de esta línea es reservar espacio para un texto que vamos a recibir del usuario (en concreto: su nombre).
 +
 +La línea ''​cin >> nombre;''​ es novedosa: Utiliza el elemento nuevo ''​cin'',​ que es parte junto con ''​cout''​ y ''​endl''​ de la biblioteca ''​iostream''​. Así como ''​cout''​ es un elemento al cual podemos **enviar** datos que queremos que se escriban en la pantalla, ''​cin''​ trabaja como **entrada**,​ y de él podemos **recibir** datos que se ingresan al programa (normalmente,​ a través del teclado, pero es posible cambiarlo y que por ejemplo ''​cin''​ obtenga los datos desde un archivo). La forma de escribir esto es igual que para ''​cout'',​ pero con "las flechas"​ invertidas, pues ahora recibimos los datos desde ''​cin''​. Además, en lugar de indicar cuál es el dato que enviamos, indicamos **dónde guardarlo**:​ Eso es lo que hacemos al indicar la variable ''​nombre''​ usada anteriormente.
 +
 +Finalmente, la línea ''​cout << "​Buenos dias " << nombre << "​!"​ << endl;''​ imprime por pantalla el saludo final. Notar que como estamos enviando ''​nombre''​ a ''​cout'',​ que es algo que **recibimos** previamente a través de ''​cin'',​ la cadena que se imprime no está fija, sino que **depende** de lo que haya ingresado el usuario. En otras palabras, este programa presenta un saludo interactivo según el nombre del usuario, como podemos verificar si lo ejecutamos.
 +
 +Se sugiere fuertemente experimentar haciendo cambios a este programa. Veremos más cuidadosamente los principios en funcionamiento detrás de instrucciones como esta, en la sección siguiente.
 +
 +===== Cuentas sencillas =====
 +
 +Es sabido que la computadora tiene una gran **capacidad de cálculo**. Podemos ponerla a hacer cuentas, y las resolverá de manera prácticamente instantánea. Veamos un ejemplo que suma dos números recibidos por pantalla:
 +
 +<code cpp>
 +#include <​iostream>​
 +
 +using namespace std;
 +
 +int main()
 +{
 +    cout << "​Ingrese los numeros " << endl;
 +    int a,b;
 +    cin >> a >> b;
 +    cout << "La suma de los dos numeros es " << a + b << endl;
 +    return 0;
 +}
 +</​code>​
 +
 +Este ejemplo es similar al anterior pero se usa ''​int''​ en lugar de ''​string'':​ ''​int''​ se utiliza para indicar que trabajaremos con **números enteros**. Veremos más en detalle qué significa esto en la sección siguiente.
 +
 +Al ejecutar este programa, si ingresamos por ejemplo 23 y 48, podemos obtener una salida como la siguiente:
 +
 +<​code>​
 +Ingrese los numeros ​
 +23 48
 +La suma de los dos numeros es 71
 +</​code>​
 +
 +Observamos que este programa es capaz de sumar los números que le indicamos, **sin importar cuáles sean**. Es decir, le hemos **enseñado** a la computadora,​ a través de nuestro programa, cómo interactuar para escribir la suma de dos números dados. ¿Qué ocurrirá si usamos ''​a * b''​ en lugar de 'a + b'? ¿Y si usamos a - b? ¿Y si usamos a / b? **¡Experimente!**
 +
 +¿Se anima a hacer un programa que lea dos números, como el anterior, pero luego los escriba en el orden inverso al que fueron ingresados? Lo dejamos como desafío. Por ejemplo si al programa se ingresa ''​12 34'',​ se espera que escriba a continuación ''​34 12''​.
 +
 +Así como podemos utilizar ''​+'',​ ''​-'',​ ''​*''​ y ''/''​ para realizar operaciones aritméticas fundamentales,​ es posible utilizar los paréntesis ''​(''​ y ''​)''​ para poder escribir cosas como (1+2) * 3 (que tiene por resultado 9) en lugar de 1 + 2 * 3 (que tiene como resultado 7, por las reglas de separar en términos). Con eso podríamos escribir cualquier operación aritmética y usar a la computadora como calculadora en programas sencillos.
 +
 +Por ejemplo, el siguiente programa:
 +
 +<code cpp>
 +#include <​iostream>​
 +
 +using namespace std;
 +
 +int main()
 +{
 +    cout << 23+12 << endl;
 +    cout << ((23*11-32)*5 + 70) / 6 << endl;
 +    cout << (((5*5 - 4*4 - 3*3))) << endl;
 +    cout << 5*5 - 4*4 - 3*3 << endl;
 +    cout << (5*5 - 4*4 - 3*3) * (5*5 - 4*4 - 3*3) << endl;
 +    return 0;
 +}
 +</​code>​
 +
 +Imprimiría por pantalla lo siguiente:
 +
 +<​code>​
 +35
 +195
 +0
 +0
 +0
 +</​code>​
 +
 +Notar que en C++ es válido utilizar "​paréntesis redundantes",​ como los de la tercera cuenta. Lo que no está permitido es tener paréntesis inválidos, o que no se correspondan entre sí. Por ejemplo, una expresión como ''​(2 + 4(''​ generará un error de compilación,​ pues el segundo paréntesis que abre debería estar cerrando. Similarmente,​ algo como ''​(2 + 4''​ sería una expresión incompleta, pues falta cerrar el paréntesis,​ y esto también producirá un error de compilación.
  
-  * CIN + COUT (de int) (de string) 
-  * Cuentas básicas 
curso-cpp/jugando-con-hola-mundo.1474667903.txt.gz · Última modificación: 2016/09/23 21:58 por santo