• No se han encontrado resultados

77Preguntas de repaso

Mantener buenos hábitos de programación

77Preguntas de repaso

13. En la mayoría de los lenguajes de programación, una variable o constante que se declara en un módulo es ____________ en el mismo.

a) global c) en ámbito

b) invisible d) indefi nida

14. ¿Cuál de las siguientes no es una tarea de administración típica?

a) desplegar instrucciones c) abrir archivos

b) imprimir resúmenes d) desplegar encabezados de informes

15. ¿Cuál módulo en un programa típico se ejecutará más veces?

a) el de administración c) el de fi n de trabajo

b) el de ciclo detallado d) es diferente en cada programa

16. Una gráfica de jerarquía indica ____________.

a) qué tareas se ejecutan dentro de cada módulo del programa b) cuándo se ejecuta un módulo

c) cuáles rutinas llaman a cuáles otras d) todo lo anterior

17. ¿Qué son las declaraciones que no se ejecutan, que los programadores colocan dentro del código para explicar las declaraciones del programa en inglés?

a) comentarios c) trivia

b) seudocódigo d) documentación del usuario

18. Los comentarios del programa ____________. a) se requieren para crear un programa que corra b) son una forma de documentación externa c) las dos anteriores

d) ninguna de las anteriores

19. ¿Cuál de los siguientes es un consejo válido para nombrar variables?

a) Para ahorrar tiempo en la mecanograf ía, haga la mayor parte de los nombres de variables de una o dos letras.

b) Para evitar un confl icto con los nombres que otras personas usan, use algunos que sean poco comunes o impronunciables.

c) Para hacer que sea más fácil leer los nombres, separe los que sean largos usando subrayados o mayúscula al inicio de cada nueva palabra.

d) Para mantener su independencia, rechace las convenciones de su organización. 20. Un mensaje que pide al usuario una entrada es ____________.

a) un comentario c) un eco

b) un indicador d) una declaración

Ejercicios

1. Explique por qué cada uno de los siguientes puede ser o no un nombre de variable adecuado para usted.

a) d b) dsctamt c) discountAmount d) discount Amount e) discount f ) discountAmountForEachNewCustomer g) discountYear2013 h) 2013Discountyear

2. Si productCost y productPrice son variables numéricas y productName es una varia- ble de cadena, ¿cuáles de las siguientes declaraciones son asignaciones válidas? Si una declaración no lo es, explique por qué no.

a) productCost = 100 b) productPrice = productCost c) productPrice = productName d) productPrice = “24.95” e) 15.67 = productCost f ) productCost = $1,345.52 g) productCost = productPrice - 10 h) productName = “tapete para ratón” i) productCost + 20 = productPrice j) productName = 3-inch nails k) productName = 43 l) productName = “44” m) “99” = productName n) productName = brush o) battery = productName p) productPrice = productPrice q) productName = productCost 79 Ejercicios

3. Suponga que income = 8 y expense = 6. ¿Cuál es el valor de cada una de las siguien- tes expresiones? a) income + expense * 2 b) income + 4 – expense / 2 c) (income + expense) * 2 d) income – 3 * 2 + expense e) 4 * ((income – expense) + 2) + 10

4. Trace una gráfi ca de jerarquía típica para un programa que genera una factura mensual para un cliente de telefonía celular. Trate de pensar al menos en 10 módulos separados que se incluirían. Por ejemplo, uno de ellos podría calcular el cargo por minutos diur- nos que se han usado.

5. a) Trace la gráfi ca de jerarquía y luego planee la lógica para un programa que el gerente de ventas de Th e Henry User Car Dealership necesita. El programa deter- minará la ganancia sobre cualquier automóvil vendido; la entrada incluye el precio de venta y el de compra real para un vehículo. La salida es la ganancia, que es el precio de venta menos el precio de compra. Use tres módulos. El programa prin- cipal declara variables globales y llama a módulos de administración, detallado y de fi n de trabajo; el módulo de administración pide y acepta un precio de venta; el detallado pide y acepta el precio de compra, calcula la ganancia y despliega el resul- tado, y el de fi n de trabajo despliega el mensaje Gracias por usar este programa. b) Revise el programa que determina la ganancia de modo que corra en forma conti-

nua para cualquier cantidad de automóviles. El ciclo detallado se ejecuta en forma continua mientras el precio de venta no sea 0; además de calcular la ganancia, pide al usuario el siguiente precio de venta y lo obtiene. El módulo de fi n de trabajo se ejecuta después de que se introduce 0 para el precio de venta.

6. a) Trace la gráfi ca de jerarquía y luego planee la lógica para un programa que calcule el índice de masa corporal (IMC) de una persona. El IMC es una medida estadís- tica que compara el peso y la estatura. El programa usa tres módulos; el primero pide al usuario su estatura en pulgadas y la acepta; el segundo módulo acepta el peso del usuario en libras y convierte su estatura en metros y el peso en kilogra- mos. Luego, calcula el IMC como el peso en kilogramos por la estatura en metros al cuadrado y despliega los resultados. Hay 2.54 centímetros en una pulgada, 100 centímetros en un metro, 453.59 gramos en una libra y 1,000 gramos en un kilo- gramo. Use constantes nombradas siempre que las considere apropiadas. El último módulo despliega el mensaje Fin del trabajo.

b) Revise el programa que determina el IMC para que se ejecute en forma continua hasta que el usuario introduzca 0 para la estatura en pulgadas.

7. Trace la gráfi ca de jerarquía y diseñe la lógica para un programa que calcule los cargos por servicio de Hazel’s Housecleaning. El programa contiene módulos de adminis- tración, de ciclo detallado y de fi n de trabajo. El programa principal declara cualquier variable y constante globales necesarias y llama a los otros módulos. El módulo de 80

administración despliega un indicador y acepta el apellido de un cliente. Mientras el usuario no introduzca ZZZZ para el nombre, el ciclo detallado acepta el número de baños y el de otras habitaciones que se limpiarán. El cargo por servicio se calcula como $40 más $15 por cada baño y $10 por cada una de las otras habitaciones. El ciclo detallado también despliega el cargo por servicio y luego pide al usuario el nombre del siguiente cliente. El módulo fi n de trabajo, que se ejecuta después de que el usuario introduce el valor centinela para el nombre, despliega un mensaje que indica que el programa está completo.

8. Trace la gráfi ca de jerarquía y diseñe la lógica para un programa que calcule el costo proyectado de un viaje en automóvil. Suponga que el vehículo del usuario viaja a 8 kiló- metros por litro de gasolina. Diseñe un programa que pida al usuario el número de kilómetros recorridos y el costo actual por litro. El programa calcula y despliega el costo del viaje al igual que el costo si los precios de la gasolina aumentan 10%; acepta datos en forma continua hasta que se introduce 0 para el número de kilómetros. Use los módulos apropiados, incluyendo uno que despliegue Fin del programa cuando éste termine.

9. a) Trace la gráfica de jerarquía y diseñe la lógica para un programa que necesita el gerente del equipo de softball del condado Stengel, quien desea calcular los porcentajes de slugging para sus jugadores. Un porcentaje de slugging es el total de bases alcanzadas dividido entre el número de turnos al bate del jugador. Diseñe un programa que pida al usuario el número de camiseta de un jugador, el de bases alcanzadas y el de turnos al bate y luego despliegue todos los datos, incluyendo el promedio de slugging calculado. El programa acepta jugadores en forma continua hasta que se introduce 0 para el número de camiseta. Use módulos apropiados, incluyendo uno que despliegue Fin de trabajo después de que se introduce el centinela para el número de camiseta.

b) Modifi que el programa de porcentaje de slugging para calcular también el porcen- taje de veces que se embasa un jugador. Un porcentaje de veces que se embasa se calcula sumando los hits y bases por bolas de un jugador y luego se divide entre la suma de turnos al bate, bases por bolas y elevados de sacrifi cio. Pida al usuario con un indicador todos los datos adicionales necesarios y despliegue todos los datos para cada jugador.

c) Modifi que el programa de softball de modo que también calcule un promedio de producción bruta (GPA, gross production average) para cada jugador. Un GPA se calcula multiplicando el porcentaje de veces que cada uno se embasa por 1.8, luego sumando el porcentaje de slugging del jugador y luego dividiendo entre cuatro.

Encuentre los errores

10. Sus archivos descargables para el capítulo 2 incluyen DEBUG02-01.txt, DEBUG02-02. txt y DEBUG02-03.txt. Cada archivo empieza con algunos comentarios que describen el problema. Los comentarios son líneas que comienzan con dos diagonales (//). Después de los comentarios, cada archivo contiene seudocódigo que tiene uno o más errores que usted debe encontrar y corregir. (NOTA: Estos archivos se encuentran disponibles sólo para la versión original en inglés.)

81 Ejercicios

Zona de juegos

11. Para que los juegos mantengan su interés, casi siempre incluyen algún comportamiento aleatorio impredecible. Por ejemplo, uno en el que dispara a los asteroides pierde algo de su diversión si éstos siguen la misma trayectoria predecible cada vez que juega. Por consiguiente, generar valores aleatorios es un componente clave en la creación de juegos de computadora más interesantes. En muchos lenguajes de programación se ha incorporado un módulo que usted puede usar para generar números aleatorios. La sintaxis varía en cada lenguaje, pero en general es algo como esto:

myRandomNumber = random(10)

En esta declaración, myRandomNumber es una variable numérica que usted ha declarado y la expresión random(10) significa “llamar a un método que genere y devuelva un número aleatorio entre 1 y 10”. Por convención, en un diagrama de flujo colocaría una declaración como ésta en un símbolo de procesamiento con dos franjas verticales en los bordes, como se muestra a continuación.

myRandomNumber = random(10)

Cree un diagrama de fl ujo o un seudocódigo que muestre la lógica para un programa que genere un número aleatorio, luego pida al usuario que piense en un número entre 1 y 10. Después despliegue el número generado aleatoriamente de modo que el usuario vea si su hipótesis fue correcta. (En capítulos futuros, mejorará este juego de modo que el usuario pueda introducir una suposición y el programa determine si estuvo en lo correcto.)

Para discusión

12. En la web se publican muchas guías de estilo de programación que sugieren buenos identifi cadores, explican las reglas de sangrado estándar e identifi can cuestiones de estilo en lenguajes de programación específi cos. Encuentre guías de estilo para al menos dos lenguajes (por ejemplo, C++, Java, Visual Basic o C#) y enumere cualquier diferencia que note.

13. ¿Qué ventajas hay en requerir que las variables tengan un tipo de datos?

14. Como se menciona en este capítulo, algunos lenguajes de programación requieren que a las constantes nombradas se les asigne un valor cuando se declaran; otros permiten que el valor de una constante se asigne más adelante en un programa. ¿Cuál requisito piensa que es mejor? ¿Por qué?

15. ¿Preferiría escribir un programa extenso por sí solo o trabajar en un equipo en el que cada programador elabora uno o más módulos? ¿Por qué?

16. La programación extrema es un sistema para desarrollar software con rapidez. Uno de sus principios es que todo el código de producción sea escrito por dos programadores sentados frente a una máquina. ¿Esto es buena idea? ¿Trabajar así es atractivo para usted como programador? ¿Por qué sí o por qué no?

C A P Í T U L O

3

Comprender la