Professional Documents
Culture Documents
Estructuras de Control
t Mientras (con condicin inicial) Esta instruccin evala una condicin que ser ejecutada mientras la condicin sea cierta. Finalizar su ejecucin cuando la condicin evaluada sea falsa. La figura 4.2 ilustra este concepto:
Formato: Diagrama
Mientras ( Condicin) Sentencia 1 : Sentencia n Fin Mientras
sentencia 1 sentencia n
Cierto
cond
Falso
nnnn
En ambos ejemplos podemos observar, que se utiliza la variable c como contador la cual se incrementa de 1 en 1 y es la variable que controla el fin del ciclo. En el otro ejemplo se utiliza la variable tot como acumulador de la suma.
Se puede observar que se utiliza la variable resp como variable de control para ejecutar el ciclo, mientras resp sea igual a s, mayscula o minscula. A continuacin, veremos un ejemplo de ciclo Mientras controlado con valor centinela:
/*Se desean leer una serie de velocidades mientras la velocidad sea diferente a -999 e imprima su promedio. */ c=0 suma=0 Imprimir (Entre la velocidad:) Leer(v) Mientras (v <> -999) suma= suma + v c=c+1 imprimir (Entre la velocidad) Leer (v) Fin_mientras prom = suma / c imprimir (Promedio de velocidades: , prom)
En el ejemplo se puede observar que se utiliza la variable v como variable de control para ejecutar el ciclo, mientras v sea diferente -999.
Problema Resuelto. Definicin o Dominio del Problema Supongamos que se deposit un capital de $65,000.00 en una cuenta de ahorros el primero de enero del ao 1998, y que el banco paga anualmente el 5% de inters; es decir, cada ao el capital se incrementa en un 5%. Confeccione un algoritmo que a partir de los datos dados imprima el ao y el capital de la cuenta desde 1998 hasta 2003. Utilice la estructura del mientras.
/*Algoritmo
*/
flotante cal_capital (flotante monto ) { monto = monto*.05 + monto retornar monto } INICIO. /* Declaracin de variables */ flotante capital =65000 entero anio // Imprimir Titulos Imprimir ( BANCO NOSOTROS) Imprimir(Ao Capital) // ciclo de calculo e impresin del capital anio = 1998 mientras (anio<=2003) /* Activacin de mensajes */ capital = cal_capital(capital ) Imprimir( anio, capital) Anio = anio + 1 Fin mientras FIN.
Formato:
Repetir Sentencia 1 : Sentencia n Hasta que( Condicin)
Diagrama
sentencia1 sentencian
Falso
cond
Cierto
En ambos ejemplos podemos observar, que se utiliza la variable c como contador, la cual se incrementa de 1 en 1 y es la variable que controla el fin del ciclo. El siguiente ejemplo describe un ciclo controlado con respuesta del usuario:
Capitulo 1. Estructuras de Control /* Se desean leer diferentes nmeros y sumarlos. Permita al usuario la opcin de terminar cuando lo desee. */ suma= o resp = n Repetir Imprimir (Entre un nmero) Leer(n) suma= suma + n Imprimir (Desea terminar s/n) Leer (resp) Hasta que (resp == s o resp == S) Imprimir (La suma =,suma)
Se puede observar que se utiliza la variable resp con valor inicial de n, como variable de control para ejecutar el ciclo, hasta que resp sea igual a s.
Se puede observar que se utiliza la variable v como variable de control para ejecutar el ciclo, hasta que v sea igual a -999.
Para
Es una instruccin condicional que ejecuta un conjunto de acciones un nmero especfico de veces, de acuerdo con el siguiente formato:
Formato: Para Variable_ de_ control = Valor, Inicial Sentencia 1 : Sentencia n Fin Para Valor, Final Incremento o Decremento
Diagrama
Falso
cond
Cierto
sentencia1 sentencia n
Estructura Para
La instruccin Para esta compuesta por: variable de control, valor inicial, valor final e incremento. Variable de control: es una variable que se incrementa o disminuye al final del ciclo para evaluar internamente la condicin que determina la terminacin de ste. Valor inicial: establece el valor con el cual debe iniciar la variable de control. Puede ser un valor constante, variable o expresin. Valor final: es el valor de comparacin, que se utiliza para determinar la condicin de finalizacin del ciclo. Puede ser una variable o un valor constante. Si el valor inicial de la variable de control es menor que el valor final, la condicin pregunta por menor o igual y los incrementos deben ser positivos. Si el valor inicial de la variable de control es mayor que el valor final, la condicin pregunta por mayor o igual y se dar un decremento en la variable de control. Importante recordar que el Para trabaja por condicin cierta Incremento o decremento: debe ser un valor entero y, puede ser una variable o un valor constante. Esta estructura se utiliza slo en los casos en que se conoce de antemano el valor inicial y el nmero de veces que se desea ejecutar las acciones de un ciclo.
Los valores inicial, final y de incremento no deben alterarse durante la ejecucin del ciclo, aunque ello sea posible.
Problema Resuelto Definicin o Dominio del Problema Supongamos que se deposit un capital de $65,000.00 en una cuenta de ahorros el primero de enero del ao 1998 y que el banco paga anualmente el 5% de inters, es decir, cada ao el capital se incrementa en un 5%. Confeccione un algoritmo que a partir de los datos dados imprima el ao y el capital de la cuenta desde 1998 hasta 2003. Utilice la estructura para. /* Algoritmo */
flotante cal_capital ( flotante monto) { monto = monto*.05 + monto retornar monto } INICIO. /* Declaracin de variables */ flotante capital =65000 entero anio // Imprimir Titulos Imprimir ( BANCO NOSOTROS) Imprimir(Ao Capital) // ciclo de calculo e impresin del capital Para anio = 1998, 2003, 1 /* Activacin de mensajes */ capital = cal_capital( capital) Imprimir( anio, capital) Fin para FIN.
ciclo externo
Para k=1,2,1
k
1 1 1 2 2 2
j
1 2 3 4 1 2 3 4
ciclo interno
Para j=1,3,1 3 2
Figura 4.5 Estructura de repeticin anidada En el esquema podemos observar que j vara ms rpido que k; es decir, que el ciclo interno vara ms rpido, que el ciclo externo. Se pueden anidar tantas estructuras como sean necesarias, pero debemos recordar que se debe incluir un ciclo dentro del otro y no solaparlos. Por ejemplo, veamos la estructura a continuacin:
ciclo externo
ciclo interno
Figura 4.6. Ciclos solapados Podemos combinar las diferentes estructuras: Para y Mientras, Mientras y Hasta que, Para y Para, etc.
Ejemplo Ciclos anidados Imprima todas la tablas de multiplicar del 1 al 10 con 12 elementos. imprimir (Tablas de multiplicar) Para (i=1, 10, 1) imprimir (Tabla del, i) Para (j=1, 12, 1) p=i*j imprimir (i, x, j =, p) Fin_para Fin_para
Otra forma es : i=1 imprimir (Tablas de multiplicar) Mientras ( i < 10 ) imprimir (Tabla del, i) Para (j=1, 12, 1) p=i*j imprimir (i, x, j =, p) Fin_para i=i+1 Fin_mientras
Problemas Propuestos Para cada una de las operaciones que se describe a continuacin, construya un algoritmo empleando estructuras de REPETICIN. 1. Leer cinco(5) nmeros, e imprimir la suma de ellos. 2. Genere los 5 primeros enteros, e imprima la suma. 3. Leer diez (10) nmeros. Cada nmero debe ser verificado, si es negativo, sumarlo; si es cero, contarlo y si es positivo, se suma. Imprimir la cantidad de ceros, la suma de positivos y la suma de negativos. 4. Se tiene un nmero indeterminado de valores para la ecuacin Y= ax + bx +c. Evale e imprima Y. Lea y procese hasta que el valor de x sea igual a cero(0). Imprima la sumatoria de las Y calculadas. 5. Generar la tabla de multiplicar del 5, con 10 elementos. Imprimir su ttulo y cada valor de la tabla de la forma 5 x 1=5, 5 x 2=10... . 6. Generar las 12 tablas de multiplicar con 10 elementos cada una. Imprimir el ttulo de cada tabla generada con sus elementos de la forma 1 x 1=1, 1 x 2=2.. 7. Leer un numero N, determinar si el nmero es par o impar empleando el mtodo de restas sucesivas. Ejemplo: si el numero es 6, sera 6-2=4; 4-2=2; 2-2=0, entonces el numero es par. Imprimir el nmero con su mensaje respectivo. 8. La altura del rebote de una bola, se calcula como 2/3 de la altura alcanzada en el rebote anterior. Si una bola es lanzada desde una altura de 10 pies, crear un algoritmo para determinar e imprimir la suma de la altura de los rebotes, hasta llegar al rebote numero 40. 9. Hacer un programa que imprima los 500 primeros nmeros de la siguiente progresin aritmtica: 1,5,9,13,17.... 10. En 1616, Peter compr la isla de Manhattan por el equivalente a 24 dlares en piedrecitas de fantasa. Si estos 24 dlares se hubiesen capitalizado a un inters anual del 12%, determine cunto capital se tendra en 1976. 11. Miguel pidi un prstamo de 200 dlares para comprar un perro. Un banco de la localidad se lo est facilitando a un inters del 6% anual. Haga un algoritmo que lea la letra mensual asignada por el banco e imprima el monto pagado a inters, el monto pagado a capital y saldo pendiente mensual en un perodo de 5 aos.
12. Hacer un algoritmo que determine el valor mayor de 20 nmeros ledos. Imprima dicho nmero . 13. Un programador est preocupado acerca de su rendimiento en clases de informtica. En el primer programa comete una falta, en el segundo dos, en el tercero cuatro, y as sucesivamente. Parece que en cada programa comete el doble nmero de faltas que cometi en el programa anterior. Las clases transcurren durante trece semanas, a razn de 2 problemas de programacin por semana. Hacer un algoritmo que calcule el nmero total de errores que puede esperar el programador, segn su ritmo normal de rendimiento. 14. Escriba un algoritmo que simule el control de velocidad por radar de la polica. El problema debe leer la velocidad del automvil e imprimir el mensaje BIEN si la velocidad es menor o igual a 90KM/H o RAPIDO, si es mayor. Detenga el proceso cuando la velocidad leda exceda los 160KM/H, e imprima el nmero de velocidades menores o iguales a 90 y el nmero mayores a 90. 15. La tasa de degradacin radiactiva de un istopo es dada habitualmente en trminos de perodo de semidesintegracin (PS: lapso necesario para que el istopo se degrade hasta la mitad de su masa original). Para el istopo de estroncio 90, la razn de degradacin es aproximadamente de 0.60 PS. El perodo de semidesintegracin del estroncio 90 es de 28 aos. Calcular e imprimir, en forma tabular, el residuo despus de cada ao a partir de una cantidad inicial de gramos ledo. Para cada ao la cantidad residual de istopo puede calcularse: R= cantidad de gramos *C (ao/PS) donde C= e-0.693 e=2.71828