OTRO PROGRAMA EN C++: SUMA DE ENTEROS
• Nuestro siguiente programa utiliza el objeto flujo de entrada std::cin y el
operador de extracción de flujo, >>, para obtener dos enteros escritos por el
usuario mediante el teclado, calcula la suma de esos valores e imprime el
resultado mediante el uso de std::cout.
• En la se muestra el programa, junto con los datos de entrada y salida de ejemplo.
PROGRAMA DE SUMA QUE MUESTRA LA SUMA DE DOS
ENTEROS INTRODUCIDOS MEDIANTE EL TECLADO.
PROGRAMA DE SUMA QUE MUESTRA LA SUMA DE DOS
ENTEROS INTRODUCIDOS MEDIANTE EL TECLADO.
OTRO PROGRAMA EN C++: SUMA DE ENTEROS
• Los comentarios en la línea 2
• // Programa de suma que muestra la suma de dos enteros.
• indican el nombre del archivo y el propósito del programa. La directiva del
preprocesador de C++
• #include <iostream> // permite al programa realizar operaciones de entrada y
salida
• en la línea 3 incluye el contenido del archivo de encabezado <iostream> en el
programa.
OTRO PROGRAMA EN C++: SUMA DE ENTEROS
• El programa empieza a ejecutarse con la función main (línea 6). La llave izquierda (línea 7) marca
el inicio del cuerpo de main y la correspondiente llave derecha (línea 24) marca el fin de main.
• Las líneas 9 a 11
• int numero1; // primer entero a sumar
• int numero2; // segundo entero a sumar
• int suma; // suma de numero1 y numero2
• son declaraciones. Los identificadores numero1, numero2 y suma son nombres de variables
OTRO PROGRAMA EN C++: SUMA DE ENTEROS
• Una variable es una ubicación en la memoria de la computadora, en la que puede
almacenarse un valor para usarlo mediante un programa. Estas declaraciones
especifican que las variables numero1, numero2 y suma son datos de tipo int, lo
cual significa que estas variables contienen valores enteros; es decir, números
enteros como 7, –11, 0 y 31914. Todas las variables se deben declarar con un
nombre y un tipo de datos antes de poder usarlas en un programa.
OTRO PROGRAMA EN C++: SUMA DE ENTEROS
• Pueden declararse diversas variables del mismo tipo en una declaración, o en varias
declaraciones. Podríamos haber declarado las tres variables en una declaración, como
se muestra a continuación:
• int numero1, numero2, suma;
• Esto reduce la legibilidad del programa y evita que podamos proporcionar
comentarios que describan el propósito de cada variable. Si se declara más de un
nombre en una declaración (como se muestra aquí), los nombres van separados por
comas (,); a esto se le conoce como lista separada por comas.
BUENA PRÁCTICA DE PROGRAMACIÓN
• Coloque un espacio después de cada coma (,) para aumentar la legibilidad de los
programas
• Algunos programadores prefieren declarar cada variable en una línea separada.
Este formato permite insertar fácilmente un comentario descriptivo a un lado de
cada declaración
OTRO PROGRAMA EN C++: SUMA DE ENTEROS
• Pronto hablaremos sobre el tipo de datos double para especificar números reales, y sobre el tipo de
datos char para especificar datos tipo carácter. Los números reales son números con puntos
decimales, como 3.4, 0.0 y –11.19. Una variable char puede guardar sólo una letra minúscula, una letra
mayúscula, un dígito o un carácter especial (como $ o *).
• Los tipos como int, double y char se conocen comúnmente como tipos fundamentales, tipos primitivos
o tipos integrados.
• Los nombres de los tipos fundamentales son palabras clave y, por lo tanto, deben aparecer todos en
minúsculas.
OTRO PROGRAMA EN C++: SUMA DE ENTEROS
• El nombre de una variable (como numero1) es cualquier identificador válido que
no sea una palabra clave. Un identificador es una serie de caracteres que
consisten en letras, dígitos y símbolos de guión bajo ( _ ) que no empieza con un
dígito. C++ es sensible a mayúsculas y minúsculas: las letras mayúsculas y
minúsculas son distintas, por lo que 𝑎1 𝑦 𝐴1 se consideran identificadores
distintos.
ARITMÉTICA
• La mayoría de los programas realizan cálculos aritméticos. Los operadores aritméticos
se sintetizan en la figura. Observe el uso de varios símbolos especiales que no se
utilizan en álgebra. El asterisco (*) indica la multiplicación, y el signo de porcentaje (%)
es el operador módulo, el cual describiremos en breve. Los operadores aritméticos en
la figura son operadores binarios, ya que funcionan con dos operandos. Por ejemplo,
la expresión numero1 + numero2 contiene el operador binario + y los dos operandos
numero1 y numero2.
ARITMÉTICA
• La división de enteros (es decir, donde tanto el numerador como el denominador
son enteros) produce un cociente entero; por ejemplo, la expresión 7 / 4 da como
resultado 1, y la expresión 17 / 5 da como resultado 3. Observe que cualquier
parte fraccionaria en una división de enteros se descarta (es decir, se trunca); no
ocurre un redondeo.
ARITMÉTICA
• C++ proporciona el operador módulo, %, el cual produce el residuo después de
la división entera. El operador módulo sólo se puede utilizar con operandos
enteros. La expresión 𝑥 % 𝑦 produce el residuo después de que x se divide entre
y. Por lo tanto, 7 % 4 produce 3, y 17 % 5 produce 2. Posteriormente
consideramos muchas aplicaciones interesantes del operador módulo, como
determinar si un número es múltiplo de otro (un caso especial de esta aplicación
es determinar si un número es par o impar).
ERROR COMÚN DE PROGRAMACIÓN
• Tratar de utilizar el operador módulo (%) con operandos no enteros es un error
de compilación
EXPRESIONES ARITMÉTICAS EN FORMATO DE
LÍNEA RECTA
• En la computadora, las expresiones aritméticas en C++ deben escribirse en
formato de línea recta. Por lo tanto, las expresiones como “a dividida entre b”
deben escribirse como a / b, de manera que todas las constantes, variables y
operadores aparezcan en una línea recta. La siguiente notación algebraica:
EXPRESIONES ARITMÉTICAS EN FORMATO DE
LÍNEA RECTA
•
𝑎
𝑏
• no es generalmente aceptable para los compiladores, aunque ciertos paquetes de
software de propósito especial soportan una notación más natural para las
expresiones matemáticas complejas.
PARÉNTESIS PARA AGRUPAR SUBEXPRESIONES
• Los paréntesis se utilizan en las expresiones en C++ de la misma manera que en
las expresiones algebraicas. Por ejemplo, para multiplicar a por la cantidad b + c,
escribimos
• 𝑎 ∗ ( 𝑏 + 𝑐 ).
REGLAS DE PRECEDENCIA DE OPERADORES
• C++ aplica los operadores en expresiones aritméticas en una secuencia precisa,
determinada por las siguientes reglas de precedencia de operadores, que
generalmente son las mismas que las que se utilizan en álgebra:
1. Los operadores en las expresiones contenidas dentro de pares de paréntesis se
evalúan primero. Se dice que los paréntesis tienen el “nivel más alto de
precedencia”. En casos de paréntesis anidados o incrustados, como: ( ( a + b ) + c )
los operadores en el par más interno de paréntesis se aplican primero.
REGLAS DE PRECEDENCIA DE OPERADORES
2. Las operaciones de multiplicación, división y módulo se aplican a continuación. Si
una expresión contiene varias de esas operaciones, los operadores se aplican de
izquierda a derecha. Se dice que los operadores de multiplicación, división y residuo
tienen el mismo nivel de precedencia.
3. Las operaciones de suma y resta se aplican al último. Si una expresión contiene
varias de esas operaciones, los operadores se aplican de izquierda a derecha. Los
operadores de suma y resta tienen el mismo nivel de precedencia.
REGLAS DE PRECEDENCIA DE OPERADORES
• El conjunto de reglas de precedencia de operadores define el orden en el que C++ aplica los
operadores. Cuando decimos que ciertos operadores se aplican de izquierda a derecha, nos referimos
a su asociatividad. Por ejemplo, en la expresión
• 𝑎 + 𝑏 + 𝑐
• los operadores de suma (+) se asocian de izquierda a derecha, por lo que a + b se calcula primero, y
después se agrega c a esa suma para determinar el valor de toda la expresión. Más adelante veremos
que algunos operadores se asocian de derecha a izquierda. En la figura se sintetizan estas reglas de
precedencia de operadores
EJEMPLOS DE EXPRESIONES ALGEBRAICAS Y DE
C++
• Ahora, consideremos varias expresiones en vista de las reglas de precedencia de operadores. Cada
ejemplo enlista una expresión algebraica y su equivalente en C++. El siguiente es un ejemplo de una
media ( promedio) aritmética de cinco términos:
• Álgebra:
• 𝑚 =
( 𝑎 + 𝑏 + 𝑐 + 𝑑 + 𝑒 )
5
;
• C++:
• 𝑚 = ( 𝑎 + 𝑏 + 𝑐 + 𝑑 + 𝑒 ) / 5;
EJEMPLOS DE EXPRESIONES ALGEBRAICAS Y DE
C++
• Los paréntesis son obligatorios, ya que la división tiene una mayor precedencia
que la suma. La cantidad completa ( 𝑎 + 𝑏 + 𝑐 + 𝑑 + 𝑒 ) va a dividirse entre 5.
Si los paréntesis se omiten por error, obtenemos 𝑎 + 𝑏 + 𝑐 + 𝑑 + 𝑒 / 5, lo cual
da como resultado
• 𝑎 + 𝑏 + 𝑐 + 𝑑 +
𝑒
5
EJEMPLOS DE EXPRESIONES ALGEBRAICAS Y DE
C++
• Los números dentro de los círculos bajo la instrucción indican el orden en el que
C++ aplica los operadores. Las operaciones de multiplicación, residuo y división
se evalúan primero, en orden de izquierda a derecha (es decir, se asocian de
izquierda a derecha), ya que tienen mayor precedencia que la suma y la resta. Las
operaciones de suma y resta se evalúan a continuación. Estas operaciones
también se aplican de izquierda a derecha. Después se aplica el operador de
asignación
ERROR COMÚN DE PROGRAMACIÓN
• Algunos lenguajes de programación usan los operadores ∗∗ 𝑜 ^ para representar
la exponenciación. C++ no soporta estos operadores de exponenciación; si se
utilizan para este fin, se producen errores
BUENA PRÁCTICA DE PROGRAMACIÓN
• El uso de paréntesis redundantes en expresiones aritméticas complejas puede
hacer que éstas sean más fáciles de leer
TOMA DE DECISIONES: OPERADORES DE
IGUALDAD Y RELACIONALES
• Presentaremos una versión simple de la instrucción if de C++, la cual permite que
un programa tome una acción alternativa, con base en la verdad o falsedad de
cierta condición. Si se cumple la condición (es decir, si es verdadera), se ejecuta la
instrucción que está en el cuerpo de la instrucción if. Si la condición no se cumple
(es falsa), el cuerpo no se ejecuta. Veremos un ejemplo en breve.
TOMA DE DECISIONES: OPERADORES DE
IGUALDAD Y RELACIONALES
• Las condiciones en las instrucciones if pueden formarse utilizando los operadores
de igualdad y los operadores relacionales, que se sintetizan en la figura. Los
operadores relacionales tienen todos el mismo nivel de precedencia y se asocian
de izquierda a derecha. Los dos operadores de igualdad tienen el mismo nivel de
precedencia, que es menor que la precedencia de los operadores relacionales, y
se asocian de izquierda a derecha
ERROR COMÚN DE PROGRAMACIÓN
• Se producirá un error de sintaxis si cualquiera de los operadores ==, !=, >= y <=
aparece con espacios entre su par de símbolos.
ERROR COMÚN DE PROGRAMACIÓN
• Invertir el orden del par de símbolos en cualquiera de los operadores !=, >= y <=
(al escribirlos como =!, => y =<, respectivamente) es comúnmente un error de
sintaxis. En algunos casos, escribir != como =! no será un error de sintaxis, sino
casi con certeza será un error lógico, el cual tiene un efecto en tiempo de
ejecución. Un error lógico fatal hace que un programa falle y termine antes de
tiempo. Un error lógico no fatal permite que un programa continúe ejecutándose,
pero por lo general produce resultados incorrectos
ERROR COMÚN DE PROGRAMACIÓN
• Confundir el operador de igualdad == con el operador de asignación = produce
errores lógicos. El operador de igualdad se debe leer como “es igual a”, y el
operador de asignación se debe leer como “obtiene” u “obtiene el valor de”, o “se
le asigna el valor de”. Algunas personas prefieren leer el operador de igualdad
como “doble igual”.
ERROR COMÚN DE PROGRAMACIÓN
• El siguiente ejemplo utiliza seis instrucciones if para comparar dos números introducidos por el usuario. Si la
condición en cualquiera de estas instrucciones if es verdadera, se ejecuta la instrucción de salida asociada con esa
instrucción if. En la figura se muestra el programa y los diálogos de entrada/salida de tres ejecuciones del ejemplo.
• Las líneas 6 a 8
• using std::cout; // el programa usa cout
• using std::cin; // el programa usa cin
• using std::endl; // el programa usa endl
ERROR COMÚN DE PROGRAMACIÓN
• son declaraciones using, las cuales eliminan la necesidad de repetir el prefijo std::,
como hicimos en programas anteriores.
• Una vez que insertamos estas declaraciones using, podemos escribir cout en
lugar de std::cout, cin en vez de std::cin y endl en lugar de std::endl,
respectivamente, en el resto del programa.
EJERCICIO
• Utilizando las instrucciones que escribió anteriormente, escriba un programa
completo que calcule e imprima el producto de tres enteros. Agregue
comentarios al código donde sea apropiado. [Nota: necesitara escribir las
declaraciones using necesarias.]