PROBLEMAS REPETITIVOS COMPUESTOS Recordemos que los problemas repetitivos compuestos son aquellos en los que se emplean varios ciclos. Frecuentemente encontraremos problemas en donde el cuerpo de un ciclo es otro ciclo. En estos casos estaremos hablando de un ciclo interno que est anidado dentro de un ciclo externo. Podemos encontrar muchas combinaciones, dependiendo de si los ciclos tienen un nmero determinado o indeterminado de iteraciones o si existen ms de dos ciclo anidados. PROBLEMAS DE EJEMPLO (problemas repetitivos compuestos): Problema 1 En un supermercado un cajero captura los precios de los artculos que los clientes compran e indica a cada cliente cul es el monto de lo que deben pagar. Al final del da le indica a su supervisor cunto fue lo que cobr en total a todos los clientes que pasaron por su caja. Paso 1.- Definicin del problema Igual a la redaccin del problema Paso 2.-Planeacin de la Solucin Para empezar, podemos visualizar dos ciclo: uno para obtener el total de cada cliente y otro para obtener el total de lo que el cajero cobr en todo el da. El ciclo para obtener el total por cliente debe obtener la cantidad de dinero por cada artculo distinto que compr el cliente para ir acumulando su total y como al llegar a la caja el cliente no sabe cuntos artculos distintos compr, emplearemos un ciclo con un nmero indeterminado de iteraciones que llamaremos ciclo del cliente. Lo que llamaremos ciclo del cajero deber ir acumulando los totales de los clientes para as obtener el total del cajero. Como no podremos saber cuntos clientes pasarn por la caja se usar tambin un ciclo con un nmero indeterminado de iteraciones. El algoritmo del ciclo del cajero debe quedar de la siguiente forma: 1. total del cajero = 0 2. CLIENTE 3. total del cajero = total del cajero + total del cliente 4. PEDIR mas$ 5. SI mas$ = NO ENTONCES IR al paso 6 DE OTRA FORMA IR al paso 2 6. DESPLEGAR total del cajero 7. FIN El paso 2 es la llamada a ejecucin del ciclo denominado CLIENTE. Para poder saber el total del cajero necesitamos ir acumulando los totales de los clientes. Por ello el ciclo del cajero llama a ejecucin el ciclo del CLIENTE, cuyo algoritmo deber quedar de la siguiente forma: 1. total del cliente = 0 2. ARTICULO LX Lenguajes Operativos Mtro. Juan Miguel Camargo Pulido Pgina 2 de 9 3. total del cliente = total del cliente + total del articulo 4. PEDIR mas1$ 5. SI mas1$ = NO ENTONCES IR al paso 6 DE OTRA FORMA IR al paso 2 6. DESPLEGAR total del cliente 7. FIN En donde el paso 2 es la llamada a ejecucin del proceso denominado ARTICULO, el cual constar de los siguientes pasos: 1. PEDIR precio, cantidad 2. total del artculo = preio * cantidad Se definirn ahora los datos requeridos: SALIDAS: total de cada cliente, total del cajero ENTRADAS: precio, cantidad de cada artculo DATOS ADICIONALES: ninguno Paso 3.- Algoritmo De ahora en adelante llamaremos: p a precio de cada artculo c a cantidad de cada artculo tcaj a total del cajero tcl a total del cliente ta a total del artculo mas$ a Variable que determina el fin del ciclo del cajero. mas1$ a Variable que determina el fin del ciclo del cliente. C a El proceso CLIENTE A a El proceso ARTICULO
1. tcaj 0 2. C 3. tcaj tcaj + tcl 4. PEDIR mas$ 5. SI mas$ = NO ENTONCES IR al paso 6 DE OTRA FORMA IR al paso 2 6. DESPLEGAR tcaj 7. fin Proceso C: 1. tcl 0 2. A LX Lenguajes Operativos Mtro. Juan Miguel Camargo Pulido Pgina 3 de 9 3. tcl tcl + ta 4. PEDIR mas1$ 5. SI mas1$ = NO ENTONCES IR al paso 6 DE OTRA FORMA IR al paso 2 6. DESPLEGAR tcl 7. FINC Proceso A: 1. PEDIR ,p, c 2. ta p * c 3. FINA
LX Lenguajes Operativos Mtro. Juan Miguel Camargo Pulido Pgina 4 de 9 Paso 4.- Diagrama de Flujo Para resolver este problema se requiri de un ciclo con un nmero indeterminado de iteraciones, el cual tiene anidado otro ciclo del mismo tipo, que a su vez contiene un pequeo proceso secuencial.
C tcl 0 A tcl tcl + ta mas1$ mas1$ = NO tcl FINC A ta p * c p, c FINA INICIO TCAJ 0 C tcaj tcaj + tcl mas$ mas$ = NO
tcaj FIN LX Lenguajes Operativos Mtro. Juan Miguel Camargo Pulido Pgina 5 de 9 Problema 2 Cinco miembros de un club contra la obesidad desean saber cunto han bajado o subido de peso desde la ltima vez que se reunieron. Para esto se debe realizar un ritual de pesaje en donde cada uno se pesa en diez bsculas distintas para as tener el promedio ms exacto de su peso. Si existe diferencia positiva entre este promedio de peso y el peso de la ltima vez que se reunieron, significa que subieron de peso. Pero si la diferencia es negativa, significa que bajaron. Lo que el problema requiere es que por cada persona se imprima un letrero que diga SUBI o BAJ y la cantidad de kilos que subi o baj de peso. Paso 1.- Definicin del problema Igual a la redaccin del problema Paso 2.-Planeacin de la Solucin Para solucionar este problema ser necesario utilizar dos ciclos. El primero estar compuesto por las acciones que se deben efectuar por cada uno de los cinco miembros del club, por lo que ser necesario utilizar un ciclo con un nmero determinado de iteraciones. Este ciclo estar compuesto por las siguientes acciones:
1. contador = 1 2. SI contador >5 ENTONCES IR al paso 3 DE OTRA FORMA MIEMBRO contador = contador + 1 IR al paso 2 3. FIN El segundo ciclo ser el proceso MIEMBRO, el cual contiene las acciones que se realizarn por cada miembro del club. Dichas acciones estarn representadas por un ciclo con un nmero determinado de iteraciones, pues ser necesario hacer lo mismo por cada una de las diez bsculas y por una condicional para determinar si subi o baj de peso. Las acciones que componen a este proceso son las siguientes: 1. PEDIR promedio de peso anterior 2. suma de pesos = 0 3. contador de bsculas = 1 4. SI contador de bsculas >10 ENTONCES IR al paso 5 DE OTRA FORMA BSCULA contador de bsculas = contador de bsculas + 1 IR al paso 4 5. promedio actual = suma de pesos/10 6. diferencia de pesos = promedio actual promedio de peso anterior 7. SI diferencia de pesos < 0 ENTONCES DESPLEGAR baj de peso DE OTRA FORMA LX Lenguajes Operativos Mtro. Juan Miguel Camargo Pulido Pgina 6 de 9 DESPLEGAR subi de peso 8. FIN El proceso BASCULA est formado por las acciones que se llevan a cabo cuando un miembro llega a una bscula, las acciones que lo componen son las siguientes: 1. PEDIR peso 2. suma de pesos = suma de pesos + peso Se definirn ahora los datos requeridos: SALIDAS: el mensaje bajo de peso o 2subi de peso por cada miembro. ENTRADAS: promedio peso anterior de cada miembro, diez pesos distintos por cada miembro DATOS ADICIONALES: Un miembro baj de peso si la diferencia entre el peso anterior y el promedio de pesos en las diez bsculas es negativo, en caso contrario subi de peso. Paso 3.- Algoritmo De ahora en adelante llamaremos: c a contador de miembros M a proceso MIEMBRO pant a promedio de peso anterior sp a suma de pesos cb a contador de bsculas pa a promedio de peso actual dif a diferencia de pesos B a proceso BSCULA pe a peso por bscula
1. c 1 2. SI c>5 ENTONCES IR al paso 3 DE OTRA FORMA M c c + 1 IR al paso 2 3. FIN Proceso M: 1. PEDIR pant 2. sp 0 3. cb 1 4. SI cb >10 ENTONCES IR al paso 5 DE OTRA FORMA B cb cb + LX Lenguajes Operativos Mtro. Juan Miguel Camargo Pulido Pgina 7 de 9 IR al paso 4 5. pa sp/10 6. dif pa pant 7. SI dif < 0 ENTONCES DESPLEGAR baj de peso DE OTRA FORMA DESPLEGAR subi de peso 8. FINM Proceso B : 1. PEDIR pe 2. sp sp + pe 3. FINB
LX Lenguajes Operativos Mtro. Juan Miguel Camargo Pulido Pgina 8 de 9 Paso 4.- Diagrama de Flujo En este problema se emple un ciclo con un nmero determinado de iteraciones, el cual contiene a su vez un ciclo del mismo tipo seguido de una estructura selectiva simple. El ciclo interno ejecuta un proceso secuencial.
M pant sp 0 cb 1 cb > 10 B cb cb + 1 pa sp/10 dif pa - pant dif < 0 subio de peso baj de peso FINM INICIO c 1 c > 5 M c c + 1
FIN B pe sp sp + pe FINB LX Lenguajes Operativos Mtro. Juan Miguel Camargo Pulido Pgina 9 de 9 Aplicando los primeros cuatro pasos de la Metodologa para la solucin de problemas por computadora, resuelva los siguientes: PROBLEMAS PROPUESTOS. (problemas repetiti vos compuestos 1. Simular el comportamiento de un calendario, desplegando da, mes y ao de un ao completo no bisiesto. 2. Un atleta se ha propuesto recorrer una misma ruta durante un ao, corriendo 6 das a la semana, para as saber su promedio por semana, por mes y por todo el ao. 3. A lo largo del da un cajero procesa a las personas que llegan a efectuar movimientos bancarios. Estos movimientos deben ser esencialmente cargos o abonos. Determinar la cantidad total de dinero obtenida por concepto de cargos y abonos en todo el da, as como un balance que indique si hubo ms cargos que abonos o viceversa y la diferencia absoluta. 4. Llevar el control de un tablero que registra los puntos de set de un partido de tenis de 5 sets sin muerte sbita, es decir, que gana el set aquel que llegue a 6 puntos o ms con dos puntos de ventaja sobre el adversario. Lo que debe imprimir es un mensaje con el nombre del jugador que gana cada set y el nombre del ganador del partido. 5. Simular el comportamiento de un reloj digital imprimiendo la hora, minuto y segundo en cada segundo de un da desde las 0:00.00 horas hasta las 23:59:59 horas.