AnteriorPosterior

2. Operaciones aritméticas y variables

  Curso: Introducción a C++

2. Operaciones aritméticas y variables

2.1. Escribir varios textos

Si no queremos escribir sólo un texto, podemos indicar varios textos entre comillas, siempre precedidos por dos símbolos de "menor que":

// Ejemplo 02.01 en C++
 
#include <iostream>
 
int main () 
{
    std::cout << "Hola, " << "Nacho";
    return 0;
}
 

Parece que no aporta mucho: el resultado es el mismo que en el programa del apartado anterior, así que sigamos mejorándolo

Ejercicios propuestos

  • (2.1.1) Crea un programa, que en vez de decir "Hola, mundo", te salude a ti por tu nombre (por ejemplo, "Hola, Nacho", usando varios textos independientes, como en el ejemplo 2.

2.2. Escribir números

Esta variante del programa anterior sí resulta más interesante:

// Ejemplo 02.02 en C++
 
#include <iostream>
 
int main () 
{
    std::cout << "5+7=" << 5+7;
    return 0;
}
 

Su resultado será 5+7=12. Es decir, lo que hemos escrito entre comillas se muestra "tal cual". Por el contrario, lo que escribamos sin comillas, se analiza para ver cual puede ser su significado. En este caso, nuestro compilador (la herramienta que analiza nuestro programa en C++ y genera un programa ejecutable) ve que se trata de una operación, y calcula (y muestra) el resultado de dicha operación.

Ejercicios propuestos

  • (2.2.1) Crea un programa que muestre la suma de 25 y 34.
  • (2.2.2) Crea un programa que muestre la suma de 12345, 112233 y 67890.
  • (2.2.3) Crea un programa que muestra la suma de 123456789012 y 90123456789.

2.3. Operaciones matemáticas

Doy por sentado que sabes que el símbolo "+" se usa para sumar. Lo que quizá no sea tan evidente para ti es que el símbolo "*" es el que se emplea para multiplicar. Las operaciones básicas son:

Operador

Operación

+

Suma

-

Resta, negación

*

Multiplicación

/

División

Ejercicios propuestos

  • (2.3.1) Crea un programa que muestre la diferencia entre 100 y 39.
  • (2.3.2) Crea un programa que muestre el producto de 36 y 59.
  • (2.3.3) Crea un programa que muestre el producto de 72 y -14.
  • (2.3.4) Crea un programa que muestre el producto de 123456789 y 987654321.
  • (2.3.5) Crea un programa que muestre la división de 100 entre 25
  • (2.3.4) Crea un programa que muestre la división de 10 entre 4

2.4. Pedir datos al usuario

Un programa en el que todos los datos estén prefijados es poco útil: no tiene sentido necesitar modificar el puente y recompilar cada vez que hay que probar datos nuevos. Lo habitual es que esos datos los introduzca el usuario, o se lean de un fichero, o de una base de datos, o desde una red de ordenadores (Internet o cualquier otra). Iremos viendo esas alternativas, pero vamos a empezar por la más fácil: que sea el usuario quien introduzca los datos.

Usaremos la orden "cin" para leer datos, y deberemos indicar dónde queremos guardarlos.

Ese lugar donde guardar los datos será un espacio de memoria al que daremos un nombre. Esto es lo que se conoce como una "variable". Una variable necesita dos datos: el nombre con el que nos referiremos a ella y el tipo de datos que queremos guardar en ella. Por ahora sólo .Usaremos la orden "cin" para leer datos, y deberemos indicar dónde queremos guardarlos.

Así, un program que pida un número al usuario y muestre su triple podría ser así:

// Ejemplo 02.03 en C++
 
#include <iostream>
 
int main () 
{
    int numero;
    std::cout << "Dime un número: ";
    std::cin >> numero;
    std::cout << "El triple de tu número es " << numero*3;
    return 0;
}
 

Donde:

  • int numero; sirve para declarar una variable llamada "numero", que usaremos para almacenar un número entero ("int").
  • std::cin >> numero; se encarga de leer lo que introduzca el usuario y de guardarlo dentro de la variable "numero". (Atención: se usan símbolos de "mayor que", al contrario que en "cout", como forma de expresar que los datos van "hacia la variable".
  • std::cout << numero*3; escribe el triple del número. Como ya habíamos visto, no hay comillas, por lo que el compilador realiza la operación correspondiente y muestra su resultado.

Y un programa que sume dos números introducidos por el usuario sería:

// Ejemplo 02.04 en C++
 
#include <iostream>
 
int main () 
{
    int n1;
    int n2;
    int suma;
 
    std::cout << "Dime un numero: ";
    std::cin >> n1;
    std::cout << "Dime otro numero: ";
    std::cin >> n2;
    suma = n1 + n2;
    std::cout << "Su suma es " << suma;
 
    return 0;
}
 

Hay muy pocas novedades. Sólo merece la pena destacar que usamos dos variables para los datos que introduce el usuario, y una tercera variable para calcular la suma antes de mostrarla.

Cuando vamos, como en este caso, a usar varias variables que son todas del mismo tipo, podemos declarar todas ellas a la vez, así:

// Ejemplo 02.05 en C++
 
#include <iostream>
 
int main () 
{
    int n1, n2, suma;
 
    std::cout << "Dime un numero: ";
    std::cin >> n1;
    std::cout << "Dime otro numero: ";
    std::cin >> n2;
    suma = n1 + n2;
    std::cout << "Su suma es " << suma;
 
    return 0;
}
 

Ejercicios propuestos

  • (2.4.1) Crea un programa que pida dos números al usuario y muestre su producto.
  • (2.4.2) Crea un programa que pida dos números al usuario y muestre su diferencia.
  • (2.4.3) Crea un programa que pida dos números al usuario y muestre la división del primero entre el segundo.
  • (2.4.4) Crea un programa que pida tres números al usuario y muestre su suma.
  • (2.4.5) Crea un programa que pida dos números al usuario (que llamaremos "a" y "b"), y muestre el resultado de (a+b)(a-b) y el de a2-b2.

2.5. Escribir en varias líneas

Hasta ahora, hemos escrito todo en la misma línea. No es grave, porque los primeros programas eran muy sencillos, y en los últimos, el hecho de usar "cin" ayudaba a que el cursor bajase a la línea siguiente de pantalla tras cada introducción de datos. Pero en ocasiones querremos que un texto aparezca en una línea y otro en la línea siguiente, sin necesidad de que el usuario introduzca datos. Para conseguirlo, enviaremos a cout algo llamado "std::endl", así:

// Ejemplo 02.6 en C++
 
#include <iostream>
 
int main () 
{
    std::cout << "Primera línea" << std::endl;
    std::cout << "Segunda" << std::endl << "y tercera" 
        << std::endl;
    return 0;
}
 

Ejercicios propuestos

  • (2.5.1) Crea un programa que te pida tu nombre, y te salude en dos líneas. En la primer línea aparecerá "Hola" y tu nombre; en la segunda línea aparecerá "¿Cómo estás?"

2.6. Evitemos escribir "std::"

Si nos resulta pesado escribir "std::" delante de cada "cout" y de cada "cin", existe una solución, sencilla: añadir "using namespace std; al principio del programa. Ya hablaremos de "espacios de nombres" más adelante, pero de momento nos limitaremos a ver una versión alternativa del ejercicio 02.05 que emplee esa construcción:

// Ejemplo 02.07 en C++
 
#include <iostream>
using namespace std;
 
int main () 
{
    int n1;
    int n2;
    int suma;
 
    cout << "Dime un numero: ";
    cin >> n1;
    cout << "Dime otro numero: ";
    cin >> n2;
    suma = n1 + n2;
    cout << "Su suma es " << suma;
 
    return 0;
}
 

Ejercicios propuestos

  • (2.6.1) Crea un programa que pida te pida tres números y muestre su producto. No debes usar "std::" sino "using".

2.7. Números con decimales

Si has hecho todos los ejercicios propuestos, habrás notado que, como siempre estamos usando números enteros, el resultado también es un número entero. Eso es especialmente desconcertante en el caso de las divisiones: podríamos esperar que 10/2 diera como resultado 2.5, pero obtenemos 2.

La alternativa es usar otro tipo de datos, uno que sí permite guardar números reales (con cifras decimales), de modo que los resultados también tengan decimales. Bastará con cambiar "int" por "float":

// Ejemplo 02.08 en C++
 
#include <iostream>
using namespace std;
 
int main () 
{
    float n1, n2, suma;
 
    cout << "Dime un numero: ";
    cin >> n1;
    cout << "Dime otro numero: ";
    cin >> n2;
    suma = n1 + n2;
    cout << "Su suma es " << suma;
 
    return 0;
}
 

Pronto detallaremos que existen más tipos de datos: enteros que permiten almacenar más o menos cifras, y reales que tienen más o menos precisión. Pero para empezar a practicar nos bastará con "int" y "float".

Ejercicios propuestos

  • (2.7.1) Crea un programa que pida te pida dos números reales y muestre su división. Comprueba si esta vez sí aparecen correctamente los decimales.

2.8. La operación "módulo"

Una quinta operación aritmética, que no es especialmente frecuente en "el mundo real", pero sí en la programación de ordenadores, es la operación "módulo", el resto de la división. Para ella se usa el símbolo "%". Así, una operación como "25%4" (25 módulo 4) daría como resultado "1" (el resto que se obtiene al dividir 25 entre 4).

¿Y por qué se usa con frecuencia? Porque es una forma sencilla de saber si un número es múltiplo de otro: en ese caso, el resto de la división será 0. Así podremos darnos cuenta de cuándo un número es par (múltiplo de 2), o hacer una pausa tras mostrar cada bloque de 25 datos, por ejemplo. Lo usaremos mucho en los dos siguientes temas.

Ejercicios propuestos

  • (2.8.1) Crea un programa que pida te pida dos números enteros y muestre su división y el resto de esa división.

2.9. Incremento y decremento

Hay otra operación que es muy frecuente cuando se crean programas, pero que no tiene un símbolo específico para representarla en matemáticas. Es incrementar el valor de una variable en una unidad:

a = a+1;

Pues bien, en C y C++, existe una notación más compacta para esta operación, y para la opuesta (el decremento):

a++; // es lo mismo que a = a+1;
a--; // es lo mismo que a = a-1;

Pero esto tiene más misterio todavía del que puede parecer en un primer vistazo: podemos distinguir entre "preincremento" y "postincremento". En C es posible hacer asignaciones como

b = a++;

Así, si "a" valía 2, lo que esta instrucción hace es dar a "b" el valor de "a" y aumentar el valor de "a". Por tanto, al final tenemos que b=2 y a=3 (postincremento: se incrementa "a" tras asignar su valor).

En cambio, si escribimos

b = ++a;

y "a" valía 2, primero aumentamos "a" y luego los asignamos a "b" (preincremento), de modo que a=3 y b=3.

Por supuesto, también podemos distinguir postdecremento (a--) y predecremento (--a).

Ejercicios propuestos:

  • (2.9.1) Crear un programa que use tres variables x,y,z. Sus valores iniciales serán 15, -10, 2.147.483.647. Se deberá incrementar el valor de estas variables. ¿Qué valores esperas que se obtengan? Contrástalo con el resultado obtenido por el programa.
  • (2.9.2) ¿Cuál sería el resultado de las siguientes operaciones? a=5; b=++a; c=a++; b=b*5; a=a*2;

 

Y ya que estamos hablando de las asignaciones, hay que comentar que en C y en C++ es posible hacer asignaciones múltiples:

a = b = c = 1;

2.10. Operaciones abreviadas: +=

Pero aún hay más. Tenemos incluso formas reducidas de escribir cosas como "a = a+5". Allá van

a += b ; // es lo mismo que a = a+b;
a -= b ; // es lo mismo que a = a-b;
a *= b ; // es lo mismo que a = a*b;
a /= b ; // es lo mismo que a = a/b;
a %= b ; // es lo mismo que a = a%b;

Ejercicios propuestos:

  • (2.10.1) Crear un programa que use tres variables x,y,z. Sus valores iniciales serán 15, -10, 214. Se deberá incrementar el valor de estas variables en 12, usando el formato abreviado. ¿Qué valores esperas que se obtengan? Contrástalo con el resultado obtenido por el programa.
  • (2.10.2) ¿Cuál sería el resultado de las siguientes operaciones? a=5; b=a+2; b-=3; c=-3; c*=2; ++c; a*=b;

Actualizado el: 29-08-2013 15:42

AnteriorPosterior