Está en la página 1de 100

CAP.

V
ESTRUCTURASc DE
CONTROL ITERATIVAS
Ing. Francisco Javier Camacho Calderón

SUCRE - BOLIVIA
1
INTRODUCCIÓN
La iteración es una técnica que consiste
en realizar varias veces un cálculo o un
proceso.
Las estructuras algorítmicas iterativas:
 Realizar varias veces un proceso o
una secuencia de cálculos o
instrucciones.
 Ejecutar un proceso en forma
repetitiva.
2
INTRODUCCIÓN
Jacopini – Böhm solo admitían una
estructura iterativa, hoy se admiten tres,
que permiten diseñar algoritmos claros y
eficientes.
Las estructuras algorítmicas iterativas son:
 Iteración Condicional Previa (Iteración
de Jacopini – Böhm)
 Iteración Condicional Posterior.
 Iteración Definida o Automática.
3
ITERACIÓN CONDICIONAL
PREVIA (WHILE – DO)
Ejecuta una secuencia de instrucciones
en forma repetitiva cuando una
Condición = VERDADERA, sino omite la
ejecución de dichas instrucciones.
Ejecuta la secuencia de instrucciones
MIENTRAS la Condición sea Verdadera.

4
ESTRUCTURA ITERATIVA
CONDICIONAL PREVIA
Algoritmo
 MIENTRAS Cond HACER Proceso
 MIENTRAS Cond HACER
Inst_1
Inst_2 Secuencia de
..... Instrucciones
Inst_k
5
ESTRUCTURA ITERATIVA
CONDICIONAL PREVIA
También corresponde a algoritmos que
aparentan ser una estructura selectiva,
pero que dentro de la misma se tiene una
instrucción de retorno a la instrucción
donde se evalúa la condición.
Algoritmo
E: SI Cond  Hacer Proceso
Volver a E
6
ESTRUCTURA ITERATIVA
CONDICIONAL PREVIA
1. Evalúa la Condición
2. Si Cond = VERDADERO ejecuta el
proceso o secuencia de Instrucciones
y vuelve a evaluar la condición
3. Si Cond = FALSO omite el proceso o
secuencia de instrucciones en
cuestión y pasa a la siguiente
instrucción del algoritmo.
7
ESTRUCTURA ITERATIVA
CONDICIONAL PREVIA
Diagrama de Flujo

8
ESTRUCTURA ITERATIVA
CONDICIONAL PREVIA
Código en JavaScript
Si la secuencia tiene:
Un solo proceso o Varias instrucciones
Instrucción
while (Cond) do while (Cond) do {
Proceso; Inst_1;
Inst_2;
.....
Cond = expresión Inst_k;
lógico (True/False) } 9
ESTRUCTURA ITERATIVA
CONDICIONAL PREVIA - Ej
Ej. 1. Determinar el coseno de un ángulo
medido en grados (Asumiendo que no se
dispone de dicha función).
MML
Cualquier función se puede evaluar para
un punto x como una suma de potencias
de x, a partir de su desarrollo en Serie de
Mc. Laurin, una serie infinita definida por:

10
ESTRUCTURA ITERATIVA
COND. PREVIA – Ej. 1 MML

Si reemplazamos la función a calcular:

obtenemos el desarrollo en serie de la


función coseno, es decir:

11
ESTRUCTURA ITERATIVA
COND. PREVIA – Ej. 1 MML
Serie infinita  debemos truncarla para
tomar un # finito de términos.
¿Cuales? Aquellos cuyo valor sea mayor
o igual a la precisión de cálculo que
deseamos (1 E - 12).
Pero tenemos términos (+) y (-). Un valor
(-) por grande que sea siempre es menor
que un valor (+) (la precisión, aunque sea
pequeño)  Tomar su valor absoluto.
12
ESTRUCTURA ITERATIVA
COND. PREVIA – Ej. 1 MML

k es el número de término.
Si k = 1  n = 0 →
El calculo de se torna largo al aumentar
Pero si analizamos los términos de la serie:

13
ESTRUCTURA ITERATIVA
COND. PREVIA – Ej. 1 MML

En general:

14
ESTRUCTURA ITERATIVA
COND. PREVIA – Ej. 1 MML
Es posible, a partir del segundo término,
calcular un término (k) en función al
anterior (k-1), con las Ecs. (5) (6) y (7).
El valor del primer término resulta de
aplicar la Ec. (4).
k por incrementos unitarios 
con un valor inicial

15
ESTRUCTURA ITERATIVA
COND. PREVIA – Ej. 1 MML
El valor del coseno será la suma de
todos términos de la serie:

Esta suma se calcula acumulando los


términos generados:

Con un valor inicial igual a cero (el


neutro de la suma), es decir:

16
ESTRUCTURA ITERATIVA
COND. PREVIA – Ej. 1 MML
En la Ec. (2):
x debe estar expresado en Rad.
 Estaren el rango de 0 - 2π (0º - 360º) 
convertir el ángulo de º  Rad, según:

17
ESTRUCTURA ITERATIVA
COND. PREVIA – Ej. 1 MML
1. Convertir ángulo medido con Ec. (12)
2. Fijar los valores iniciales de c, k y t
con Ecs. (11), (9) y (4).
3. Recalcular repetitivamente c, k y t con
Ecs. (10), (8) y (5), con Ecs. (6) y (7)
para i y j, mientras que la Ec. (3) se
cumpla.

18
ESTRUCTURA ITERATIVA
COND. PREVIA – Ej. 1
ALGORITMO
Cosenos
1. Leer el ángulo (0º - 360º),
2. Convertir a radianes,
3. Calcular el coseno,
4. Mostrar el coseno del ángulo,
Coseno(x)
1. Inicializar el coseno en cero,
2. Inicializar # de término en uno,
3. Inicializar el término en uno, 19
ESTRUCTURA ITERATIVA
COND. PREVIA – Ej. 1
4. Mientras que hacer
4.1. Recalc. coseno,
4.2. Recalc. # de término,
4.3. Calc. i,
4.4. Calc. j,
4.5. Recalc. término,
5. Devolver el coseno,

20
ESTRUCTURA ITERATIVA
COND. PREVIA – Ej. 1
E.D.
Ang: x, cose
T.A.D. Modificar algoritmo básico:
Inst. p/convertir ángulo de º  Rad
 2ª
asignar a un pequeño método (ConvGR)
 4ªInst. para mostrar el ángulo asignar a
otro método (MCos).
Ang. A: xg, xr, cose;
M: Coseno, ConvGR, MCos 21
ESTRUCTURA ITERATIVA
COND. PREVIA – Ej. 1
ALGORITMO
Cosenos
1. Leer el ángulo (0º - 360º),
2. Convertir a radianes,
3. Calcular el coseno,
4. Mostrar el coseno del ángulo,
Ang.Coseno(x)
1. Inicializar el coseno en cero,
2. Inicializar # de término en uno,
3. Inicializar el término en uno, 22
ESTRUCTURA ITERATIVA
COND. PREVIA – Ej. 1
4. Mientras que hacer
4.1. Recalc. coseno,
4.2. Recalc. # de término,
4.3. Calc. i,
4.4. Calc. j,
4.5. Recalc. término,
5. Devolver el coseno,
Ang.ConvGR(xg;xr)
1. Convertir ángulo a Rad,
23
ESTRUCTURA ITERATIVA
CONDICIONAL PREVIA – Ej. 1
Ang.MCos(cose;)
1. Mostrar el coseno del ángulo,
Diagrama de Flujo

24
ESTRUCTURA ITERATIVA
CONDICIONAL PREVIA – Ej. 1

25
ESTRUCTURA ITERATIVA
CONDICIONAL PREVIA – Ej. 1
Codificación – Arch. HTML: F0501.html
<html>
<head>
<meta http-equiv="Content-Type"
content="text/html; charset=ISO-8859-1">
<title>CÁLCULO DEL COSENO DE UN ANGULO</title>
<script type="text/javascript" src="cosenos.js">
</script>
</head>
<body>
</body>
</html>
26
ESTRUCTURA ITERATIVA
CONDICIONAL PREVIA – Ej. 1
Codificación – Arch. JS: cosenos.js
function Ang(x) {
this.xg=x;
this.xr=0;
this.cose=0;
this.ConvGR=ConvGR;
this.Coseno=Coseno;
this.Mcos=Mcos;
}
27
ESTRUCTURA ITERATIVA
CONDICIONAL PREVIA – Ej. 1
function ConvGR() {
this.xr=this.xg*Math.PI/180;
}
function Mcos() {
alert(this.cose);
}

28
ESTRUCTURA ITERATIVA
CONDICIONAL PREVIA – Ej. 1
function Coseno() {
var i=0, j=0;
var c=0.0;
var k=1;
var t=1.0;
while (Math.abs(t)>=1E-12) {
c=c+t;
k=k+1;
i=2*(k-1);
j=i-1;
t=-t*this.xr*this.xr/i/j;
} 29
ESTRUCTURA ITERATIVA
CONDICIONAL PREVIA – Ej. 1
this.cose=c;
}
var A=new Ang(prompt("Introduzca un ángulo
entre 0º y 360º",0));
A.ConvGR();
A.Coseno();
A.Mcos();
delete A;

30
ITERACIÓN CONDICIONAL
POSTERIOR(DO – WHILE)
Ejecuta un proceso o secuencia de
instrucciones y lo repite si
Condición = FALSO
Si es VERDADERO pasa a la siguiente
instrucción del algoritmo.
Repite una secuencia de instrucciones
HASTA que la Condición sea Verdadera.

31
ESTRUCTURA ITERATIVA
CONDICIONAL POSTERIOR
Algoritmo
HACER Proceso
MIENTRAS QUE Cond SE CUMPLA
o si son varias instrucciones:
HACER
Inst_1 Secuencia de
..... Instrucciones
Inst_k
MIENTRAS QUE Cond SE CUMPLA 32
ESTRUCTURA ITERATIVA
CONDICIONAL POSTERIOR
También puede aparentar ser una
instrucción selectiva, pero siempre está
al final de una secuencia con una
instrucción de retorno a la primera
instrucción de la secuencia:
E: Inst_1
Inst_2 Secuencia de
..... Instrucciones
Inst_k
Si (Cond)  Volver a E 33
ESTRUCTURA ITERATIVA
CONDICIONAL POSTERIOR
1. Ejecuta el proceso o secuencia de
instrucciones.
2. Evalúa la condición.
3. SiCond = VERDADERA  repite la
secuencia de instrucciones
4. Si Cond = FALSA  pasa a la
siguiente instrucción del algoritmo

34
ESTRUCTURA ITERATIVA
CONDICIONAL POSTERIOR
Diagrama de Flujo

35
ESTRUCTURA ITERATIVA
CONDICIONAL POSTERIOR
Código en JavaScript
Si la secuencia tiene:
Un solo proceso o Varias instrucciones
Instrucción
do do {
Proceso ; Inst_1;
while (Cond ); Inst_2;
.....
Cond = expresión Inst_k;
lógico (True/False) } while (Cond );
36
ESTRUCTURA ITERATIVA
CONDICIONAL POSTERIOR
Ej. 2. Calcular para Re Z (Asumir
que el lenguaje no dispone de una
función para dicho objeto).
MML
Partimos de la definición, multiplicar y
veces x, matemáticamente:

37
ESTRUCTURA ITERATIVA o

COND. POSTERIOR – Ej. 2


Se implementa con un acumulador de
productos para la potencia: ;
cuyo valor inicial es , el neutro del
producto.
Para contar los productos utilizamos un
acumulador de sumas: ; con
valor inicial y valor final .
Si  corregir la potencia con:
o 38
ESTRUCTURA ITERATIVA
COND. POSTERIOR – Ej. 2
 Dar valores iniciales a p y k, luego
iterar repitiendo las Ecs. (1) y (3) hasta
que y finalmente verificar si ,
en
ALGORITMO
Potencias
1. Leer operación,
2. Calcular potencia,
3. Mostrar potencia,
39
ESTRUCTURA ITERATIVA
COND. POSTERIOR – Ej. 2
LeeOp(;b,e)
1. Leer la base,
2. Leer el exponente,
MPot(p;)
1. Inicializar el # de prod. en cero,

40
ESTRUCTURA ITERATIVA
COND. POSTERIOR – Ej. 2
Potencia(a,b;pot)
1. Inicializar potencia en uno,
2. Inicializar # de productos en cero,
3. Asignar al exponente su valor absoluto,
.
4. Recalcular potencia,
5. Recalc. # de productos (contar),
6. Si  volver al paso 4.
7. Si  Dev. Pot. corregida,
sino Devolver la Potencia, 41
ESTRUCTURA ITERATIVA
COND. POSTERIOR – Ej. 2
E.D.
Pot: x, y, p
TAD
Pot. A: Pot
M: LeeOp, Potencia, Mpot
ALGORITMO
Potencias
1. Leer operación,
2. Calcular potencia,
3. Mostrar potencia, 42
ESTRUCTURA ITERATIVA
COND. POSTERIOR – Ej. 2
Pot.LeeOp(;b,e)
1. Leer la base,
2. Leer el exponente,
Pot.MPot(p;)
1. Inicializar el # de prod. en cero,

43
ESTRUCTURA ITERATIVA
COND. POSTERIOR – Ej. 2
Pot.Potencia(a,b;pot)
1. Inicializar potencia en uno,
2. Inicializar # de productos en cero,
3. Asignar al exponente su valor absoluto,
.
4. Recalcular potencia,
5. Recalc. # de productos (contar),
6. Si  volver al paso 4.
7. Si  Dev. Pot. corregida,
sino Devolver la Potencia, 44
ESTRUCTURA ITERATIVA
COND. POSTERIOR – Ej. 2
DIAGRAMA DE FLUJO

45
ESTRUCTURA ITERATIVA
COND. POSTERIOR – Ej. 2

46
ESTRUCTURA ITERATIVA
COND. POSTERIOR – Ej. 2
Codificación – Arch. HTML: F0502.html
<html>
<head>
<title>CÁLCULO DE LA POTENCIA X ELEVADO A Y
</title>
<script type="text/javascript" src="potencias.js">
</script>
</head>
<body>
</body>
</html>
47
ESTRUCTURA ITERATIVA
COND. POSTERIOR – Ej. 2
Codificación – Arch. JS: potencias.js
function Pot() {
this.x=0;
this.y=0;
this.p=0;
this.LeeOp=LeeOp;
This.Potencia=Potencia;
this.MPot=MPot;
}
48
ESTRUCTURA ITERATIVA
COND. POSTERIOR – Ej. 2
function LeeOp() {
this.x=prompt('Base:',1);
this.y=prompt('Exponente',1);
}
function MPot() {
alert('La potencia es: '+ this.p);
}

49
ESTRUCTURA ITERATIVA
COND. POSTERIOR – Ej. 2
function Potencia() {
var pt=1;
var k=0;
var e=Math.abs(this.y);
do {
pt=pt*this.x;
k=k+1;
} while (k<1E-12) ;
(this.y<0)?this.p=1/pt:this.p=pt;
}
50
ESTRUCTURA ITERATIVA
COND. POSTERIOR – Ej. 2
var o=new Pot();
o.LeeOp();
o.Potencia();
o.MPot();
delete o;

51
DIFERENCIAS ITERACIÓN
COND. PREVIA - POSTERIOR
 El lugar donde se evalúa la Condición.
Previa → al principio
Posterior → al final
 El número mínimo de veces que se
ejecuta la secuencia de instrucciones.
Consecuencia de la anterior:
 Previa, podría no ejecutarse ni una
vez, si la primera vez Cond=FALSO
 Posterior, se ejecuta al menos una
vez, aún si de inicio Cond=FALSO . 52
DIFERENCIAS ITERACIÓN
COND. PREVIA - POSTERIOR
Sin embargo, a pesar de las diferencias,
cualquier problema que se resuelve:
 Utilizando la Iteración Condicional
Previa se puede resolver también con
la Iteración Condicional Posterior.
 Con la Iteración Condicional Posterior
pueden resolverse también con la
Iteración Condicional Previa.
53
DIFERENCIAS ITERACIÓN
COND. PREVIA - POSTERIOR
Ej. 3. Solución alternativa al problema de
determinar el coseno de un ángulo
(Solución con Iteración Condicional
Posterior).
MML
El MML no cambia, solo cambia la forma
de implementarlo.
Sólo cambia subalgoritmo Coseno.
54
DIFERENCIAS ITERACIÓN COND.
PREVIA – POSTERIOR – Ej. 3
Algoritmo
Ang.Coseno(xr;cose)
1. Inicializar coseno en cero,
2. Inicializar # de término en uno,
3. Inicializar término en uno,
4. Recalcular coseno,
5. Recalcular # de término,
6. Calcular i,
7. Calcular j,
8. Recalcular término,
9. Si t > 1 E – 12  Volver al paso 4.
10. Devolver el coseno, 55
DIFERENCIAS ITERACIÓN COND.
PREVIA – POSTERIOR – Ej. 3
Diagrama de Flujo

56
DIFERENCIAS ITERACIÓN COND.
PREVIA – POSTERIOR – Ej. 3
function Coseno() {
var i=0, j=0;
var c=0.0;
var k=1;
var t=1.0;
do { c=c+t;
k=k+1;
i=2*(k-1);
j=i-1;
t=-t*this.xr*this.xr/i/j;
} while (Math.abs(t)>=1E-12);
this.cose=c;
} 57
DIFERENCIAS ITERACIÓN
COND. PREVIA - POSTERIOR
Ej. 4. Calcular para Re Z (Asumir
que el lenguaje no dispone de una
función para dicho objeto).
MML
El MML no cambia, , solo cambia la forma
de implementarlo.
Sólo cambia subalgoritmo Potencia.

58
DIFERENCIAS ITERACIÓN COND.
PREVIA – POSTERIOR – Ej. 4
Algoritmo
Potencia(a,b)
1. Inicializar potencia en uno,
2. Inicializar # productos en cero,
3. Asignar al exponente en su valor
absoluto,
4. Mientras que hacer
4.1. Recalc. potencia,
4.2. Recalc. # productos,
5. Si  Corregir potencia,
6. Devolver Potencia,
59
DIFERENCIAS ITERACIÓN COND.
PREVIA – POSTERIOR – Ej. 4
Diagrama de Flujo

60
DIFERENCIAS ITERACIÓN COND.
PREVIA – POSTERIOR – Ej. 4
function Potencia() {
var pt=0;
var k=0;
var e=Math.abs(this.y);
while (k<e) {
pt=pt+this.x;
k=k+1;
};
if (this.y<0) pt=1/pt;
this.p=pt;
} 61
ITERACIÓN DEFINIDA O
AUTOMÁTICA (FOR - DO)
Permite repetir un proceso o secuencia
de instrucciones un número definido de
veces, automática e incondicionalmente.
El número de veces que se repite el
proceso está determinado por los límites
inferior y superior de una variable
llamada Índice de Control de Ciclo.

62
ESTRUCTURA ITERATIVA
DEFINIDA (PARA, DESDE)
Algoritmo
 (Para IC que varía) (o Haciendo variar
IC) desde Ini mientras se cumple Cond
cambiando IC según (o de acuerdo con)
(la operación) OpInc
(para c/IC) hacer Proceso

63
ESTRUCTURA ITERATIVA
DEFINIDA (PARA, DESDE)
 (Para IC que varía) (o Variando IC)
desde IC = Ini hasta Fin (o mientras
IC≤Fin) cambiando (o incrementando)
IC en un incremento dado Inc (o según
o de acuerdo con IC←IC+Inc)
(para c/IC) hacer Proceso

64
ITERACIÓN DEFINIDA
 Elproceso puede estar formado por
una o varias instrucciones.
 ICes la variable Índice de Control de
Ciclo.
 Ini es el valor inicial que toma IC.
 Cond es la condición de progreso del
ciclo, mientras se cumple, el ciclo
ejecuta repetitivamente la secuencia de
instrucciones o Proceso.
65
ITERACIÓN DEFINIDA
 OpInc es la operación de incremento
de IC.
 Engeneral es un incremento sumativo
y unitario, pero puede ser cualquier
operación que haga cambiar IC.
 En la forma más usual: Cond es
(IC<=Fin) y OpInc es (IC  IC + Inc).
 SiInc = 1, normalmente OpInc no se
incluye en la estructura y se
sobreentiende (IC  IC + 1), es decir:
66
ITERACIÓN DEFINIDA
 OpInc es la operación de incremento
de IC.
 Engeneral es un incremento sumativo
y unitario, pero puede ser cualquier
operación que haga cambiar IC.
 En la forma más usual: Cond es
(IC<=Fin) y OpInc es (IC  IC + Inc).
 SiInc = 1, normalmente OpInc no se
incluye en la estructura y se
sobreentiende (IC  IC + 1), es decir:
67
ITERACIÓN DEFINIDA
 Para
IC que varía (Haciendo variar IC)
desde Ini hasta Fin (mientras (IC<=Fin))
(para c/ IC) hacer Proceso.
En general, los ciclos pueden ser:
 Ascendentes si IC incrementa de valor.
 Descendentes si IC decrementa de valor

68
ITERACIÓN DEFINIDA
1. Inicializa el valor de IC en el valor
inicial Ini.
2. Prueba la condición de progreso Cond
 Si Cond = VERDADERO
1. Ejecuta
la secuencia de Instr. o
Proceso
2. Efectúa la operación de Incremento
OpInc.
69
ITERACIÓN DEFINIDA
3. Vuelve a probar la condición de
progreso Cond.
 Si Cond = FALSO pasa a la siguiente
Inst. del Algoritmo.

70
ITERACIÓN DEFINIDA
Diagrama de Flujo

71
ITERACIÓN DEFINIDA
Código en JavaScript
for (IC = Ini; Cond; OpInc) Instrucción;
for (IC = Ini; Cond; OpInc) {
Instrucción-1;
Instrucción-2;
.....
Instrucción-k;
}

72
ITERACIÓN DEFINIDA
Ej. 5. Leer las edades de un grupo de N
personas y determinar el promedio de
edad del grupo, el número de personas
no han alcanzado la mayoría de edad y el
número de aquellas que deben cobrar su
Bonosol.
MML
El promedio de un conjunto de datos x
está dado por:

73
ITERACIÓN DEFINIDA – Ej. 5
Se puede implementar a través de un
acumulador de sumas para la sumatoria
de los datos y luego dividir entre N:
, con valor inicial
Para contar las personas que no han
alcanzado la mayoría de edad y las que
debe cobrar su Bonosol, también se
utilizan acumuladores de sumas con
incrementos unitarios.
74
ITERACIÓN DEFINIDA – Ej. 5
Para determinar quienes son menores de
edad y quienes deben cobrar su Bonosol
se prueban las siguientes condiciones:
 Menores de edad:
 Bonosolistas:
Para resolver el problema:
1. Iterar desde 1 hasta el número de
personas en el grupo N.

75
ITERACIÓN DEFINIDA – Ej. 5
2. p/c persona:
 Leer su edad
 Verificar la condición de mayoría de
edad y contar en un acumulador de
suma si corresponde.
 Verificar la condición de cobro del
Bonosol y contar en un acumulador
de suma si corresponde.
 Acumular la edad.
3. Finalmente la suma de edades dividir
entre el número de personas N 76
ITERACIÓN DEFINIDA – Ej. 5
Algoritmo
Edades
1. Leer Nº de personas en el grupo,
2. Leer grupo de personas,
3. Mostrar estadística,
MEst(p,m,b;)
1. Mostar promedio de edades,
2. Mostar # de menores de edad,
3. Mostar # de Bonosolistas,

77
ITERACIÓN DEFINIDA – Ej. 5
LGrupo(N;p,m,b)
1. Inicializar promedio en cero,
2. Inicializar # de menores de edad en cero,

3. Inicializar # de Bonosolistas en cero,


4. Para I que varia de 1 hasta N hacer
5. Para cada I Leer Edad,
6. p/c I Recalcular promedio,
7. p/c I, Si E < 18  Incrementar contador de
menores,
8. p/c I, Si E ≥ 65  Incrementar contador de
Bonosolistas,
9. Recalcular promedio, 78
ITERACIÓN DEFINIDA – Ej. 5
Observe que las instrucciones 5 – 8, que
son parte del ciclo iterativo, se efectúan
para cada valor de I.
Por el contrario la última instrucción (9)
no se efectúa para cada I, luego no forma
parte de la secuencia de instrucciones
del ciclo de iteración.
E.D. Grupo: N, p, m,b
T.A.D Grupo. A:Grupo M: LGrupo, MEst
79
ITERACIÓN DEFINIDA – Ej. 5
Algoritmo
Edades
1. Leer Nº de personas en el grupo,
2. Leer grupo de personas,
3. Mostrar estadística,
Grupo.MEst(p,m,b;)
1. Mostar promedio de edades,
2. Mostar # de menores de edad,
3. Mostar # de Bonosolistas,

80
ITERACIÓN DEFINIDA – Ej. 5
LGrupo(N;p,m,b)
1. Inicializar promedio en cero,
2. Inicializar # de menores de edad en cero,

3. Inicializar # de Bonosolistas en cero,


4. Para I que varia de 1 hasta hacer
5. Para cada I Leer Edad,
6. p/c I Recalcular promedio,
7. p/c I, Si E < 18  Incrementar contador de
menores,
8. p/c I, Si E ≥ 65  Incrementar contador de
Bonosolistas,
9. Recalcular promedio,
81
ITERACIÓN DEFINIDA – Ej. 5
DIAGRAMA DE FLUJO

82
ITERACIÓN DEFINIDA – Ej. 5
DIAGRAMA DE FLUJO

83
ITERACIÓN DEFINIDA – Ej. 5

Codificación – Arch. HTML: F0505.html


<html>
<head>
<title>ESTADISTICAS</title>
<script type="text/javascript" src="personas.js">
</script>
</head>
<body>
</body>
</html>

84
ITERACIÓN DEFINIDA – Ej. 5
Codificación – Arch. JS: personas.js
function Grupo (N) {
this.n=n;
this.p=0;
this.m=0;
this.b=0;
this.LGrupo=LGrupo;
this.MEst=MEst;
}

85
ITERACIÓN DEFINIDA – Ej. 5
Codificación – Arch. JS: personas.js
function LGrupo() {
var i=0, E=0;
this.p=0;
this.m=0;
this.b=0;
for (i=1; i<=this.N; i++) {
E=prompt('Edad miembro del grupo Nº '+i+': ',0)/1;
this.p=this.p+E;
if (E<18) this.m=this.m+1;
if (E>=65) this.b=this.b+1;
}
this.p=this.p/this.N;
} 86
ITERACIÓN DEFINIDA – Ej. 5
function MEst() {
alert('Promedio de Edad del Grupo: '+
this.p);
alert('El número de personas menores
de edad en el grupo es: '+this.m);
alert('El número de personas que deben
cobrar su Bonosol en el grupo es:
'+this.b);
}

87
ITERACIÓN DEFINIDA – Ej. 5
var gp= new Grupo(prompt('Numero de
personas en el grupo: ',1));
gp.LGrupo();
gp.MEst();
delete gp;

88
ITERACIÓN DEFINIDA
En general:
 Si un problema se resuelve con la
iteración definida  también se puede
resolver con una iteración condicional
previa o posterior.
 Pero no todos los problemas que se
resuelven con una iteración
condicional se resuelven con la
iteración definida, no siempre se
conocen los límites de iteración.
89
ITERACIÓN DEFINIDA
Por ejemplo
 El problema de determinar el coseno
de un ángulo si el lenguaje no dispone
de esta función, NO es posible resolver
con la iteración definida, pues no se
conoce el número de términos
mayores que la precisión deseada.
 El problema de determinar el valor de
xy SI ya que se conoce el número de
veces (y) que debe multiplicarse el
valor de x. 90
ITERACIÓN DEFINIDA
Sin embargo, en JavaScript:
 Esta limitación no existe.
 Cualquierproblema que se resuelve
mediante una iteración condicional se
puede resolver también la iteración
definida.

91
ITERACIÓN DEFINIDA
Ej. 6. Una solución alternativa al
problema de determinar el coseno de un
ángulo (con Iteración Definida).
MML
El MML es el mismo. Solo cambia la
forma de implementarlo  cambia el
algoritmo, el diagrama de flujo y el
código JavaScript del sub - algoritmo
Coseno.
92
ITERACIÓN DEFINIDA – Ej. 6
Algoritmo
Ang.Coseno(xr;cose)
1. Inicializar coseno en uno,
2. Inicializar # de término en uno,
3. Para que varía desde 2 mientras que
incrementando en 1
4. p/c k Calcular i,
5. p/c k Calcular j,
6. p/c k Recalcular término,
7. p/c k Recalcular coseno,
8. Devolver el coseno,
93
ITERACIÓN DEFINIDA – Ej. 6
DIAGRAMA DE FLUJO

94
ITERACIÓN DEFINIDA – Ej. 6
Codificación – Arch. JS: Cosenos.js
function Coseno() {
var i=0, j=0;
var c=1.0;
var k=1;
var t=1.0;
for (k=2; Math.abs(t)>=1E-12; k++) {
i=2*(k-1);
j=i-1;
t=-t*this.xr*this.xr/i/j;
c=c+t;
}
this.cose=c;
} 95
ITERACIÓN DEFINIDA
Ej. 7. Una solución alternativa al
problema de leer las edades de un grupo
de N personas y determinar: la edad
promedio del grupo, el número de
personas del grupo que no han
alcanzado la mayoría de edad y el
número de personas del grupo que debe
cobrar su Bonosol (con Iteración
Condicional Previa).

96
ITERACIÓN DEFINIDA – Ej. 7
MML
El MML es el mismo. Solo cambia la
forma de implementarlo  cambia el
algoritmo, el diagrama de flujo y el
código JavaScript del sub - algoritmo
LGrupo.

97
ITERACIÓN DEFINIDA – Ej. 7
Grupo.LGrupo(N;p,m,b)
1. Inicializar promedio en cero,
2. Inicializar menores de edad en cero,
3. Inicializar Bonosolistas en cero,
4. Inicializar contador de personas en cero,
5. Mientras que hacer
5.1 Leer Edad,
5.2 Recalcular promedio,
5.3 Si  Incrementar contador de
menores,
5.4 Si  Incrementar contador de
Bonosolistas,
5.5 Recalcular promedio,
6. Recalcular promedio, 98
ITERACIÓN DEFINIDA – Ej. 7
DIAGRAMA DE FLUJO

99
ITERACIÓN DEFINIDA – Ej. 7
Codificación – Arch. JS: personas.js
function LGrupo() {
this.p=0;
this.m=0;
this.b=0;
var i=0, E=0;
while (i<this.N) {
E=prompt('Edad miembro del grupo #'+(i+1)+': ',0)/1;
this.p=this.p+E;
if (E<18) this.m=this.m+1;
if (E>=65) this.b=this.b+1;
i++;
}
this.p=this.p/this.N;
} 100

También podría gustarte