Ejercicios de autoevaluación 2.1 Complete las siguientes oraciones: a) Todo programa en C++ empieza su ejecución en la función main. b) Un(a) llave izquierda ({) empieza el cuerpo de toda función, y un(a) llave derecha (}) termina el cuerpo. c) Toda instrucción de C++ termina con un(a) punto y coma (;). d) La secuencia de escape \n representa el carácter nueva línea, el cual hace que el cursor se posicione al principio de la siguiente línea en la pantalla. e) La instrucción if.se utiliza para tomar decisiones. 2.2 Indique si cada una de las siguientes instrucciones es verdadera o falsa. Si es falsa, explique por qué. Asuma que se usa La instrucción using std::cout; a) Los comentarios hacen que la computadora imprima el texto que va después de los caracteres // en la pantalla, al ejecutarse el programa. Falso. Los comentarios no producen ninguna acción cuando el programa se ejecuta. Se utilizan para documentar b) Cuando la secuencia de escape \n se imprime con cout y el operador de inserción de f lujo, el cursor se posiciona al principio de la siguiente línea en la pantalla. Verdadero. c) Todas las variables deben declararse antes de utilizarlas. Verdadero. d) Todas las variables deben recibir un tipo al declararlas. Verdadero. e) C++ considera que las variables número y número son idénticas. Falso. C++ es f) sensible a mayúsculas y minúsculas, por lo que estas variables son distintas. Las declaraciones pueden aparecer casi en cualquier parte del cuerpo de una función de C++. Verdadero. g) El operador módulo (%) se puede utilizar sólo con operandos enteros. Verdadero. h) Los operadores aritméticos *, /, %, + y – tienen todos el mismo nivel de precedencia. Falso. Los operadores *, / y % se encuentran en el mismo nivel de precedencia, y los operadores + y - se encuentranen un nivel menor de i) precedencia. Un programa en C++ que imprime tres líneas de salida debe contener tres instrucciones en las que se utilicen cout y el operador de inserción de f lujo. Falso. Una instrucción con cout y varias secuencias de escape \n puede imprimir varias líneas. 2.3 Escriba una sola instrucción en C++ para realizar cada una de las siguientes tareas (suponga que no se han utilizado declaraciones using): a) Declarar las variables c, estaEsUnaVariable, q76354 y numero como de tipo int. int c, estaEsUnaVariable, q76354, numero; b) Pedir al usuario que introduzca un entero. Termine el mensaje del indicador con un signo de dos puntos (:) seguido de un espacio, y deje el cursor posicionado después del espacio. std::cout << "Escriba un entero: “; c) Recibir un entero como entrada del usuario mediante el teclado, y almacenarlo en la variable entera edad. std::cin >> edad; d) Si la variable numero no es igual a 7, mostrar “La variable numero no es igual a 7”. if ( numero != 7 ) std::cout << "La variable numero no es igual a 7\n"; e) Imprimir el mensaje "Este es un programa en C++" en una línea. std::cout << "Este es un programa en C++\n"; f) Imprimir el mensaje "Este es un programa en C++" en dos líneas. La primera línea debe terminar con es un. std::cout << "Este es un\n programa en C++\n"; g) Imprimir el mensaje "Este es un programa en C++"; cada palabra se debe escribir en una línea separada. std::cout << "Este\nes\nun\nprograma\nen\nC++\n"; h) Imprimir el mensaje "Este es un programa en C++". Separe una palabra de otra mediante un tabulador. std::cout << "Este\tes\tun\tprograma\ten\tC++\n" 2.4 Escriba una declaración (o comentario) para realizar cada una de las siguientes tareas (suponga que se han utilizado declaraciones using para cin, cout y endl): a) Indicar que un programa calculará el producto de tres enteros. // Calcula el producto de tres enteros b) Declarar las variables x, y, z y resultado de tipo int (en instrucciones separadas). int x; int y; int z; int result; c) Pedir al usuario que escriba tres enteros. cout << "Escriba tres enteros: "; d) Leer tres enteros del usuario y almacenarlos en las variables x, y y z. cin >> x >> y >> z; e) Calcular el producto de los tres enteros contenidos en las variables x, y y z, y asignar el resultado a la variable resultado. resultado = x * y * z; f) Imprimir "El producto es ", seguido del valor de la variable resultado. cout << "El producto es " << resultado << endl; g) Devolver un valor de main, indicando que el programa terminó correctamente. return 0; 2.5 Utilizando las instrucciones que escribió en el ejercicio 2.4, escriba un programa completo que calcule e imprima el producto de tres enteros. Agregue comentarios al código donde sea apropiado. [Nota: necesitará escribir las declaraciones using necesarias.] a) 1 // Calcula el producto de tres enteros b) 2 #include <iostream> // permite al programa realizar operaciones de entrada y salida c) d) e) f) g) h) i) j) k) l) m) n) o) p) q) r) s) 3 4 using std::cout; // el programa usa cout 5 using std::cin; // el program usa cin 6 using std::endl; // el programa usa endl 7 8 // la función main empieza la ejecución del programa 9 int main() 10 { 11 int x; // primer entero a multiplicar 12 int y; // segundo entero a multiplicar 13 int z; // tercer entero a multiplicar 14 int resultado; // el producto de los tres enteros 15 16 cout << "Escriba tres enteros: "; // pide los datos al usuario 17 cin >> x >> y >> z; // lee tres enteros del usuario 18 resultado = x * y * z; // multiplica los tres enteros; almacena el resultado 19 cout << "El producto es " << resultado << endl; // imprime el resultado; fin de línea t) 20 u) 21 return 0; // indica que el programa se ejecutó correctamente v) 22 } // fin de la función main 2.6 Identifique y corrija los errores en cada una de las siguientes instrucciones (suponga que se utiliza la instrucción using std::cout): a) if ( c < 7 ); cout << "c es menor que 7\n"; Error: punto y coma después del paréntesis derecho de la condición en la instrucción if. Corrección: elimine el punto y coma después del paréntesis derecho. [Nota: el resultado de este error es que la instrucción de salida se ejecutará sin importar que la condición en la instrucción if sea verdadera o no.] El punto y coma después del paréntesis derecho es una instrucción nula (o vacía): una instrucción que no hace nada. En el siguiente capítulo aprenderemos más acerca de la instrucción nula. b) if ( c => 7 ) cout << "c es igual o mayor que 7\n"; Error: el operador relacional =>. Corrección: cambie => a >=, y tal vez quiera cambiar “igual o mayor que” a “mayor o igual que”, también. 2.7 Hable sobre el significado de cada uno de los siguientes objetos: A) std::cin: Los nombres cin (el f lujo de entrada estándar) B) std::cout: indica a la computadora que debe realizar una acción 2.8 Complete las siguientes oraciones: a) __________ se utilizan para documentar un programa y mejorar su legibilidad. b) El objeto que se utiliza para imprimir información en la pantalla es #include <iostream> // permite al programa imprimir datos en la pantalla. c) Una instrucción de C++ que toma una decisión es __________. d) La mayoría de los cálculos se realizan normalmente mediante instrucciones suma = numero1 + numero2; e) El objeto #include <iostream> // recibe valores de entrada del teclado. 2.9 Escriba una sola instrucción o línea en C++ que realice cada una de las siguientes tareas: a) Imprimir el mensaje "Escriba dos numeros". int suma; // suma de numero1 y numero2 b) Asignar el producto de las variables b y c a la variable a. std::cout << “La suma es “ << numero1 + numero2 << std::endl; c) Indicar que un programa va a realizar un cálculo de nómina (es decir, usar texto que ayude a documentar un programa). // Programa de suma que muestra la suma de dos enteros. d) Recibir tres valores de entrada del teclado y colocarlos en las variables enteras a, b y c. 2.10 Conteste con verdadero o falso a cada una de las siguientes proposiciones; en caso de ser falso, explique por qué. A) Los operadores en C++ se evalúan de izquierda a derecha. Verdadero. B) Los siguientes nombres de variables son todos válidos: _barra_inferior_, m928134, t5, j7, sus_ventas, su_cuenta_total, a, b, c, z, z2. Verdadero. C) La instrucción cout << "a = 5;"; es un ejemplo típico de una instrucción de asignación. Falso; no se puede igualar una letra a un número. D) Una expresión aritmética válida en C++ sin paréntesis se evalúa de izquierda a derecha. Falso; una expresión aritmética lleva paréntesis E) Los siguientes nombres de variables son todos inválidos: 3g, 87, 67h2, h22, 2h. Verdadero 2.11 Complete cada una de las siguientes oraciones: a) ¿Qué operaciones aritméticas se encuentran en el mismo nivel de precedencia que la multiplicación? La división de enteros b) Cuando los paréntesis están anidados, ¿cuál conjunto de paréntesis se evalúa primero en una expresión aritmética? Los operadores en el par más interno de paréntesis se aplican primero Si hay varios pares de paréntesis “en el mismo nivel” (es decir, no anidados), se evalúan de izquierda a derecha. c) Una ubicación en la memoria de la computadora que puede contener distintos valores en distintos momentos durante la ejecución de un programa se llama Variable 2.12 ¿Qué se imprime (si acaso) cuando se ejecuta cada una de las siguientes instrucciones de C++? Si no se imprime nada, entonces responda “nada”. Suponga que x = 2 y y = 3. a) cout << x; x=2 b) cout << x + x; 4 c) cout << "x=" ; x= d) cout << "x = " << x; 2=2 e) cout << x + y << " = " << y + x; 5=5 f) z = x + y; 5 g) cin >> x >> y; h) // cout << "x + y = " << x + y; i) cout << "\n"; 2>>3 5=5 nulo 2.13 ¿Cuáles de las siguientes instrucciones de C++ contienen variables, cuyos valores se modifican? a) cin >> b >> c >> d >> e >> f; no b) p = i + j + k + 7; si c) cout << "variables cuyos valores se destruyen"; no d) cout << "a = 5"; si 2.14 Dada la ecuación algebraica y = ax3+ 7, ¿cuáles de las siguientes instrucciones (si acaso) en C++ son correctas para esta ecuación? a) y = a * x * x * x + 7; Falso b) y = a * x * x * ( x + 7 ); Falso c) y = ( a * x ) * x * ( x + 7 ); Falso d) y = ( a * x ) * x * x + 7; Verdadero e) y = a * ( x * x * x ) + 7; Verdadero f) y = a * x * ( x * x + 7 ); Falso 2.15 Indique el orden de evaluación de los operadores en cada una de las siguientes instrucciones en C++, y muestre el valor de x después de ejecutar cada una de ellas: a) x = 7 + 3 * 6 / 2 – 1; b) x = 2 % 2 + 2 * 2 – 2 / 2; c) x = ( 3 * 9 * ( 3 + ( 9 * 3 / ( 3 ) ) ) ); a) x: = 7 + 3 * 6 / 2 - 1; 1 *, 2/, 3+, 4 - y x=15 b) x = 2%2 + 2*2-2/2; 1 *, 2%, 3/, 4 + y x=3 c) x = ( 3 * 9 * ( 3 + ( 9 * 3 / ( 3 ) ) ) ); ( 3 8* 9 9* (6 3 +7 (5 9 *3 3 /4 (131) 2) 5) 6); y x=324 2.16 Escriba un programa que pida al usuario que escriba dos números, que obtenga los números del usuario e imprima la suma, producto, diferencia y cociente de los números. // Declaración de clase 'Aritmetica' 1. 2. 3. { 4. // Método de clase 5. public static void main( String[] args ) 6. { 7. // Declaración de variables 8. int x; // Primer número entero 9. int y; // Segundo número entero 10. int suma; // Almacenará el valor obtenido de sumar x e y 11. int resta; // Almacenará el valor obtenido de restar x menos y 12. int producto; // Almacenará el valor obtenido de multiplicar x por y 13. int cociente; // Almacenerá el valor obtenido de dividir x sobre y 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. } 48. } // Instanciación (creación) de un objeto de clase 'Scanner' Scanner entrada = new Scanner( System.in ); // Solicitud de los datos al usuario a través de la entrada estándar System.out.print( "Digite el primer número entero: "); x = entrada.nextInt(); System.out.printf( "Digite el segundo número entero: "); y = entrada.nextInt(); // Calcular suma suma = x + y; // Calcular resta resta = x - y; // Calcular producto producto = x * y; // Calcular cociente cociente = x / y; // Visualización de resultados en la salida estándar (monitor) System.out.printf( "La suma de %d + %d = %d\n", x , y , suma ); System.out.printf( "La diferencia de %d - %d = %d\n", x , y , resta ); System.out.printf( "El producto de %d * %d = %d\n", x , y , producto ); System.out.printf( "El cociente de %d / %d = %d\n", x , y , cociente); System.exit(0); 2.17 Escriba un programa que imprima los números del 1 al 4 en la misma línea, con cada par de números adyacentes separado por un espacio. Haga esto de varias formas: a) Utilizando una instrucción con un operador de inserción de f lujo. b) Utilizando una instrucción con cuatro operadores de inserción de f lujo. c) Utilizando cuatro instrucciones. 1. 2. 3. 4. 5. 6. //mostrar cuatro numeros() { System.out.print("1 2 3 4")<< std::endl; } { System.out.print("1")<< std::endl; 7. System.out.print("2")<< std::endl; 8. System.out.print("3")<< std::endl; 9. System.out.print("4")<< std::endl; 10. } 11. 2.18 Escriba un programa que pida al usuario que escriba dos enteros, que obtenga los números del usuario e imprima el número más grande, seguido de las palabras "es más grande". Si los números son iguales, imprima el mensaje "Estos números son iguales." 1. //Este programa muestra el mayor de dos numeros 2. { 3. string N1; 4. String N2; 5. String resultado=""; 6. 7. Int numero 1; 8. Int numero 2; 9. { 10. N1 = ("introdusca el primer entero:"); 11. 12. N2=(introdusca el segundo entero:2); 13. 14. If(numero1==numero2) 15. Resultado="estos numeros son iguales"; 16. 17. If(numero1>numero2) 18. Resultado="el numero"+numero1+" es mas grande que el "+numero2" 19. 20. If(numero1>numero2) 21. Resultado=numero2+" es mas grande que el "+numero1; 22. 23. //mostrar los resultados 24. 25. Opcionpanel.INFORMACION_MENSAJE);"Estos numeros son iguales" 26. 27. Sistema.exito(0);//aqui termina la aplicación 28. } 29. } 2.19 Escriba un programa que reciba tres enteros del teclado e imprima la suma, promedio, producto, menor y mayor de esos números. El diálogo de la pantalla debe aparecer de la siguiente manera: 1. // Programa que muestra el mayor, menor, producto, promedio, suma de dos numeros; 2. { 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. { 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. } 26. } // Calcular suma("13 27 14"); suma = x+y+z // Calcular resta("13 27 14") resta = x-y-z // Calcular producto("13 27 14") producto = x*y*z // Calcular promedio("13 27 14") promedio = >>x // Visualización de resultados en la salida estándar (monitor) System.out.printf( "La suma de %d + %d + %d = %d\n", x , y , suma ); System.out.printf( "La diferencia de %d - %d - %d = %d\n", x , y ,z resta ); System.out.printf( "El producto de %d * %d * %d = %d\n", x , y ,z producto ); System.out.printf( "El promedio de %d / %d / %d = %d\n", x , y ,z promedio); System.exit(0); 2.20 Escriba un programa que lea el radio de un círculo como un número entero y que imprima su diámetro, circunferencia y área. Use el valor constante 3.14159 para π. Realice todos los cálculos en instrucciones de salida. [Nota: en este capítulo sólo hemos visto constantes enteras y variables. En el capítulo 4 hablaremos sobre los números de punto f lotante; es decir, valores que pueden tener puntos decimales.] 1. // Programa que recibe el radio de un circulo e imprime el diámetro, circunferencia y área de ese círculo. 2. 3. { 4. double radio; 5. radio=Integer.parseInt(JOptionPane.showInputDialog("Dame el radio del circulo en metros:")); 6. 7. String resultado="el diametro es: "+String.valueOf(3.1416*radio)+" M.\nLa circunferencia es: " 8. +String.valueOf(Math.PI*radio) 9. +"M. \nEl area es: "+ String.valueOf(Math.PI*(Math.pow(radio,3.1416))) +"M3.1416"; 10. 11. JOptionPane.showMessageDialog(null,resultado ,"resultados de las operaciones",JOptionPane.INFORMATION_MESSAGE); 12. 13. System.exit(0); //terminar la aplicacion 14. } 2.21 Escriba un programa que imprima un cuadro, un óvalo, una f lecha y un diamante como se muestra a continuación: 2.22 ¿Qué imprime el siguiente código? a) cout << "*\n**\n***\n****\n*****" << endl; 2.23 Escriba un programa que lea cinco enteros y que determine e imprima los enteros mayor y menor en el grupo. Use solamente las técnicas de programación que aprendió en este capítulo. 2.24 Escriba un programa que lea un entero y que determine e imprima si es impar o par. [Sugerencia: use el operador módulo. Un número par es un múltiplo de dos. Cualquier múltiplo de dos deja un residuo de cero cuando se divide entre dos.] 2.25 Escriba un programa que lea dos enteros, determine si el primero es un múltiplo del segundo e imprima el resultado. [Sugerencia: use el operador de módulo.] 2.26 Escriba una aplicación que muestre un patrón de tablero de damas con ocho instrucciones de salida, y después muestre el mismo patrón utilizando el menor número de instrucciones posible. 2.27 He aquí un adelanto. En este capítulo, aprendió sobre los enteros y el tipo int. C++ también puede representar letras mayúsculas, minúsculas y una considerable variedad de símbolos especiales. C++ utiliza enteros pequeños de manera interna para representar cada uno de los distintos caracteres. Al conjunto de caracteres que utiliza una computadora, y las correspondientes representaciones enteras para esos caracteres, se le conoce como el conjunto de caracteres de esa computadora. Podemos imprimir un carácter encerrándolo entre comillas sencillas, como se muestra a continuación: cout << 'A'; // imprimir una letra A mayúscula Podemos imprimir el equivalente entero de un carácter mediante el uso de static_cast, como se muestra a continuación: cout << static_cast< int >( 'A' ); // imprime 'A' como un entero A esto se le conoce como operación de conversión (en el capítulo 4 presentaremos formalmente las conversiones). Cuando se ejecuta la instrucción anterior, imprime el valor 65 (en sistemas que utilizan el conjunto de caracteres ASCII). Escriba un programa que imprima el equivalente entero de un carácter escrito en el teclado. Almacene la entrada en una variable de tipo char. Pruebe su programa varias veces, usando letras mayúsculas, minúsculas, dígitos y caracteres especiales (como $). 2.28 Escriba un programa que reciba como entrada un número entero de cinco dígitos, que separe ese número en sus dígitos individuales y los imprima, cada uno separado de los demás por tres espacios. [Sugerencia: use los operadores de división entera y módulo.] Por ejemplo, si el usuario escribe el número 42339, el programa debe imprimir: 42339 2.29 Utilizando sólo las técnicas que aprendió en este capítulo, escriba un programa que calcule los cuadrados y cubos de los números enteros del 0 al 10, y que imprima los valores resultantes en formato de tabla, como se muestra a continuación: