ALGORITMIA Y PROGRAMACIN
ESTRUCTURAS ITERATIVAS
Contenido
Estructuras de Repeticin
for
Ciclos anidados
Contadores y acumuladores
while
do-while
Ejercicios
EISC
Universidad del Valle
Slide 2
17/09/2012
Estructuras de Repeticin
Ejercicio: Suponga que debe listar los nmeros del 1 a 100
EISC
Universidad del Valle
Slide 3
Estructuras de Repeticin
Ejercicio: Suponga que debe listar los nmeros del 1 a 100 en una
aplicacin Java.
Se podra hacer con el siguiente mtodo:
public static void listarNumeros()
{
JOptionPane.showMessageDialog (null, El nmero es: + 1);
JOptionPane.showMessageDialog (null, El nmero es: + 2);
JOptionPane.showMessageDialog (null, El nmero es: + 3);
JOptionPane.showMessageDialog (null, El nmero es: + 4);
Slide 4
17/09/2012
Estructuras de Repeticin
Son un grupo de instrucciones que permite la ejecucin
repetitiva de otro grupo de instrucciones. Hay una variable
asociada al ciclo o estructura de repeticin que controla
el nmero de veces que se repetirn las instrucciones.
Existen 3 estructuras de repeticin:
for
while
do-while
EISC
Universidad del Valle
Slide 5
Estructuras de Repeticin
Problema: Desarrollar una aplicacin Java que solicite un
nmero y liste los nmeros desde el 1 hasta el nmero
solicitado.
1. Anlisis del problema
Entradas: ??
Salidas: ??
Proceso:??
EISC
Universidad del Valle
Slide 6
17/09/2012
Estructuras de Repeticin
Problema: Desarrollar una aplicacin Java que solicite un
nmero y liste los nmeros desde el 1 hasta el nmero
solicitado.
1. Anlisis del problema
Entradas: n
Salidas: ??
Proceso:??
EISC
Universidad del Valle
Slide 7
Estructuras de Repeticin
Problema: Desarrollar una aplicacin Java que solicite un
nmero y liste los nmeros desde el 1 hasta el nmero
solicitado.
1. Anlisis del problema
Entradas: n
Salidas:
imprimir (nmero 1)
imprimir (nmero 2)
.
.
imprimir (nmero n)
Proceso:??
EISC
Universidad del Valle
Slide 8
17/09/2012
Estructuras de Repeticin
Problema: Desarrollar una aplicacin Java que solicite un
nmero y liste los nmeros desde el 1 hasta el nmero
solicitado.
1. Anlisis del problema
Entradas: n
Salidas:
imprimir (nmero 1)
imprimir (nmero 2)
.
.
imprimir (nmero n)
Proceso:
1 hasta n
EISC
Universidad del Valle
Slide 9
Estructuras de Repeticin
Problema: Desarrollar una aplicacin Java que solicite un
nmero y liste los nmeros desde el 1 hasta el nmero
solicitado.
1. Anlisis del problema
Entradas: n
Salidas:
imprimir (nmero 1)
imprimir (nmero 2)
.
.
imprimir (nmero n)
Proceso:
Desde 1 hasta n
Imprimir 1,2,3,.....n
EISC
Universidad del Valle
Slide 10
17/09/2012
Estructuras de Repeticin
Problema: Desarrollar una aplicacin Java que solicite un
nmero y liste los nmeros desde el 1 hasta el nmero
solicitado.
2. Disear el algoritmo y escribirlo en pseudocdigo
Inicio
n: entero
leer (n)
???
Fin
EISC
Universidad del Valle
Slide 11
Estructuras de Repeticin
Problema: Desarrollar una aplicacin Java que solicite un
nmero y liste los nmeros desde el 1 hasta el nmero
solicitado.
2. Disear el algoritmo y escribirlo en pseudocdigo
Inicio
n: entero
i: entero (Variable de control)
leer (n)
Desde i = 1 Hasta i = n
Imprimir (i)
Fin
EISC
Universidad del Valle
Slide 12
17/09/2012
Estructuras de Repeticin
Problema: Desarrollar una aplicacin Java que solicite un
nmero y liste los nmeros desde el 1 hasta el nmero
solicitado.
3. Codificar el algoritmo usando algn lenguaje de programacin
pseudocdigo
Java
EISC
Universidad del Valle
Slide 13
Estructuras de Repeticin
Problema: Desarrollar una aplicacin Java que solicite un
nmero y liste los nmeros desde el 1 hasta el nmero
solicitado.
3. Codificar el algoritmo usando algn lenguaje de programacin
pseudocdigo
Java
Estructura
De
Repeticin
for
EISC
Universidad del Valle
Slide 14
17/09/2012
Estructuras de Repeticin
Se usa para repetir una instruccin o un conjunto de instrucciones,
Desde un inicio, Mientras una condicin se cumpla y con un
incremento o decremento.
Un ciclo for tiene tres partes:
Expresin de inicio,
Expresin de condicin y
Expresin de incremento/decremento.
Desde i = 1; Mientras i < n; incrementar i en 1
Imprimir (i)
EISC
Universidad del Valle
Slide 15
Estructuras de Repeticin
.
Estructura
de la instruccin for
Se debe
declarar la
variable de
control
Inicializar la
variable de
control
Incremento o
decremento de la
variable de control
Slide 16
17/09/2012
Estructura For
Pseudocdigo
Java
Expresin de inicio
Expresin de condicin (o prueba)
Expresin de incremento/decremento
EISC
Universidad del Valle
Slide 17
Estructura for
Pseudocdigo
Java
Expresin de inicio
Expresin de condicin
Expresin de incremento/decremento
(o prueba)
EISC
Universidad del Valle
Slide 18
17/09/2012
Estructura for
Pseudocdigo
Java
Expresin de inicio
Expresin de condicin
Expresin de incremento/decremento
EISC
Universidad del Valle
Slide 19
Estructura for
Funcionamiento:
for ( inicio; condicin; incre/decremento){
instrucciones;
}
j=(y*8)/9
EISC
Universidad del Valle
Slide 20
10
17/09/2012
Estructura for
Funcionamiento:
for ( inicio; condicin; incre/decremento){
instruciones;
}
j!=(z%7)
EISC
Universidad del Valle
Slide 21
Estructura for
Funcionamiento:
for ( inicio; condicin; incre/decremento){
instruciones;
}
J--
EISC
Universidad del Valle
Slide 22
11
17/09/2012
Estructura for
Ejemplo:
Nmero Iteracin
Salida
Nmero 1
Nmero 2
Nmero 3
Nmero 4
En el ejemplo, la instruccin:
Nmero 5
se ejecuta 5 veces.
Se interrumpe
EISC
Universidad del Valle
Slide 23
Estructura for
Ejemplo:
public static void listarNumeros(){
for (int k =18 ; k>10; k = k - 2) {
JOptionPane.showMessageDialog (null, Nmero: + k );
}
}
Cuantas veces se ejecutar
la instruccin:
EISC
Universidad del Valle
Slide 24
12
17/09/2012
Estructura for
Ejemplo:
Nmero Iteracin
Salida
18
Nmero 18
16
Nmero 16
14
Nmero 14
12
Nmero 12
10
Se interrumpe
La instruccin:
JOptionPane.showMessageDialog ()
se ejecuta 4 veces
EISC
Universidad del Valle
Slide 25
Estructura for
Ejemplo:
public void muestraAlgo1( ){
int i=0;
for ( i=3; i<=30; i++ ) {
if ((i % 10) == 3)
JOptionPane.showMessageDialog(null ,El valor de I es " + i);
}
}
la instruccin:
EISC
Universidad del Valle
Slide 26
13
17/09/2012
Estructura for
Ejemplo:
public void muestraAlgo1( ){
int i=0;
for ( i=3; i<=30; i++ ) {
if ((i % 10) == 3)
JOptionPane.showMessageDialog(null ,El valor de I es " + i);
}
}
Valor de i
Nro Iteracin
Salida
El valor de I es 3
4,5,6,7,8,9,10,
11,12,13
2,3,4,5,6,7,8,9,
10,11
El valor de I es 13
La instruccin:
14,15,16,17,18,
19,20,21,22,23
12,13,14,15,16,
17,18,19,20,21
El valor de I es 23
se ejecuta 3 veces
24,25,26,27,28,
29,30
22,23,24,25,26,
27,28
Se interrumpe
JOptionPane.showMessageDialog ()
EISC
Universidad del Valle
Slide 27
Estructura for
Ejemplo:
public void muestraAlgo2( ){
for ( int j=0; j<=100; j++ ) {
if ((j % 3) == 0)
JOptionPane.showMessageDialog(null ,El valor de J es " + j);
else
JOptionPane.showMessageDialog(null ,+ j+ J NO es ..." );
}
}
J NO es ... ?
EISC
Universidad del Valle
Slide 28
14
17/09/2012
Estructura for
Ejemplo:
public void muestraAlgo2( ){
for ( int j=0; j<=20; j++ ) {
if ((j % 3) == 0)
JOptionPane.showMessageDialog(null ,El valor de J es " + j);
else
JOptionPane.showMessageDialog(null ,+ j+ J NO es ..." );
}
}
EISC
Universidad del Valle
Slide 29
Estructura for
Una vez el ciclo se interrumpe se ejecuta la instruccin ubicada despus
de l. Por ejemplo:
int a=0;
for (int k =0 ; k<=4; k = k + 2) {
a++;
}
JOptionPane.showMessageDialog (null, El valor de a es: + a );
La variable a inicia con el valor de cero (0).
Se ingresa al ciclo y se ejecuta tres (3) veces la instruccin a++
(recuerde que a++ es lo mismo que a=a+1).
Luego se muestra en pantalla el valor de a, es decir, 3.
EISC
Universidad del Valle
Slide 30
15
17/09/2012
Estructura for
Ejercicio 1:
Desarrollar un programa java que pregunte al usuario el nmero de
estudiantes de un curso, luego pregunte el nombre de cada uno de
ellos. Finalmente, se debe mostrar un listado con todos los
estudiantes.
EISC
Universidad del Valle
Slide 31
Estructura for
Ejercicio 1:
Inicio
numeroEstudiantes: int;
listadoEstudiantes: String;
nombreEstudiante: String;
leerNumEstudiantes();
leerNombres();
Fin
Slide 32
16
17/09/2012
Estructura for
Ejercicio 1:
Slide 33
Estructura for
Ejercicio 1:
public static void main (String arg[]) {
leerNumEstudiantes ();
leerNombres ();
System.exit(0);
}
}
EISC
Universidad del Valle
Slide 34
17
17/09/2012
Ejemplo:
Suponga que se desea crear un programa en Java que permita imprimir en
pantalla el factorial de cada nmero existente en la serie 1 a n, siendo n un
nmero menor a 20 el cual es digitado por un usuario.
Desde i=1 mientras i<=n incrementando en i = i +1
Haga
Desde j=1 mientras j<=i incrementando en j = j +1
Haga
instruccin 1
instruccin 2
Fin Desde
instruccin 3
instruccin 4
Fin Desde
NOTA: Usamos la condicin n<=20 con fines acadmicos y evitar resultados con
nmeros exageradamente grandes.
EISC
Universidad del Valle
Slide 35
Slide 36
18
17/09/2012
imprima(respuesta);
DE LO CONTRARIO
imprima(Ha digitado un numero superior a 20);
Fin
EISC
Universidad del Valle
Slide 37
imprima(respuesta);
DE LO CONTRARIO
imprima(Ha digitado un numero superior a 20);
Fin
EISC
Universidad del Valle
Slide 38
19
17/09/2012
Slide 39
EISC
Universidad del Valle
Slide 40
20
17/09/2012
Ejercicio 2:
Desarrollar un programa java que permita generar y visualizar la siguiente
figura:
Slide 41
Ejercicio 2:
public static void crearFigura()
Inicio
Desde i=1 mientras i<=numeroFilas incrementando en i = i +1
Haga
Desde j=1 mientras j<=i incrementando en j = j +1
Haga
triangulo = triangulo + *;
Fin Desde
triangulo = triangulo + \n;
Fin Desde
mostrar(triangulo);
Fin
EISC
Universidad del Valle
Slide 42
21
17/09/2012
Ejercicio 2:
EISC
Universidad del Valle
Slide 43
Ejercicio 2:
EISC
Universidad del Valle
Slide 44
22
17/09/2012
EISC
Universidad del Valle
Slide 45
Ejemplo:
Suponga que se desea crear un programa en Java que permita imprimir en
pantalla la cantidad de nmeros mltiplos de 3 que se encuentran en la
serie 1 a n, siendo n un nmero digitado por un usuario.
Inicio
contador: entero;
contador=0;
Desde i=1 mientras i<=n incrementando en i = i +1
Haga
if (esMultiploDeTres(i)){
contador=contador+1;
}
Fin Desde
mostrar(contador);
Fin
EISC
Universidad del Valle
Slide 46
23
17/09/2012
Ejemplo:
public class MultiplosDeTres {
static int n;
public static void leerN() {
String num = JOptionPane.showInputDialog("Ingrese n:");
n = Integer.parseInt(num);
}
public static boolean esMultiploDeTres(int numero) {
if(numero%3==0){
return true;
}else{
return false;
}
}
EISC
Universidad del Valle
Slide 47
Ejemplo:
public static void contarMultiplosDeTres() {
int contador=0;
for (int i = 1; i <= n; i++){
if (esMultiploDeTres(i)){
contador++;
}
}
JOptionPane.showMessageDialog(null,"En la serie 1 a "+ n+ " hay " + contador + " mltiplos de 3");
}
public static void main (String arg[]) {
leerN ();
contarMultiplosDeTres ();
System.exit(0);
}
EISC
Universidad del Valle
Slide 48
24
17/09/2012
Ejemplo:
int contador=0;
for (int i = 1; i <= n; i++){
if (esMultiploDeTres(i)){
contador++;
}
}
La variable contador se
incrementa en 1 cada vez que el
mtodo esMultiploDeTres
retorna true (cierto) para el
nmero i
JOptionPane.showMessageDialog(null,"En la serie 1 a "+ n+ " hay " + contador + " mltiplos de 3");
}
public static void main (String arg[]) {
leerN ();
contarMultiplosDeTres ();
System.exit(0);
}
EISC
Universidad del Valle
Slide 49
EISC
Universidad del Valle
Slide 50
25
17/09/2012
EISC
Slide 51
Slide 52
26
17/09/2012
Slide 53
Slide 54
27
17/09/2012
Estructura while
Java
while( condicion)
{
instruccin 1;
instruccin 2;
EISC
Universidad del Valle
Slide 55
Estructura while
Debe existir una variable
de control del ciclo
La variable de control se
inicializa antes del ciclo
Iniciar condiciones;
while (condiciones){
// Instrucciones a repetir
}
La variable de control se
compara contra el valor final
La variable debe
actualizarse dentro de
cada ciclo
EISC
Universidad del Valle
Slide 56
28
17/09/2012
Estructura while
Ejemplo:
int a=5, b=7, c=3;
while (a < b){
c = c *2;
a = a + 1;
}
Nmero
Iteracin
12
Se interrumpe
EISC
Universidad del Valle
Slide 57
Estructura while
Ejemplo:
Nmero
Iteracin
0
Se interrumpe
EISC
Universidad del Valle
Slide 58
29
17/09/2012
Estructura do-while
Los ciclos do-while funcionan de la misma manera que los
Java
Haga
do
{ instruccin 1;
instruccin 1
instruccin 2
.
Mientras condicin
instruccin 2;
} while(condicion);
EISC
Universidad del Valle
Estructura do-while
Debe existir una variable
de control del ciclo
Slide 59
La variable de control se
inicializa antes del ciclo
Iniciar condiciones;
do{
La variable de control
debe actualizarse
dentro de cada ciclo
//Instrucciones a repetir
} while (condiciones)
La variable de control
se compara contra el
valor final
EISC
Universidad del Valle
Slide 60
30
17/09/2012
Estructura do-while
Ejemplo:
int a=5, b=7, c=3;
do
{
c = c *2;
a = a + 1;
} while (a<b);
Valor variable
a
Valor variable
c
12
Nmero
Iteracin
Se interrumpe
EISC
Universidad del Valle
Slide 61
Estructura do-while
c = c *2;
a = a + 1;
} while (a < b);
Valor variable
a
Valor variable
c
10
Nmero
Iteracin
Se interrumpe
EISC
Universidad del Valle
Slide 62
31
17/09/2012
EISC
Universidad del Valle
Slide 63
Slide 64
32
17/09/2012
p2
lab
tra
3,2
2,4
4,4
3,0
def = 3,2
EISC
Universidad del Valle
Slide 65
EISC
Universidad del Valle
Slide 66
33
17/09/2012
Inicio
nomb: String;
par1, par2, lab, tar: float;
nEst, j = 0: int;
Leer (nEst);
mientras (j < nEst) haga
Leer (nomb, par1, par2, lab, tar);
Imprimir(par1 + par2 + lab + tar +
calculaDefinitiva(par1, par2, lab, tar);
j++;
Fin mientras
Fin
EISC
Universidad del Valle
Slide 67
EISC
Universidad del Valle
Slide 68
34
17/09/2012
Fin
EISC
Universidad del Valle
Slide 69
Slide 70
35
17/09/2012
EISC
Universidad del Valle
Slide 71
EISC
Universidad del Valle
Slide 72
36
17/09/2012
Fin
EISC
Universidad del Valle
Slide 73
numReprobados =0;
promedioCalificaciones=0.0;
do{
nota= Double.parseDouble(JOptionPane.showInputDialog(Digite la nota:"));
if(nota>=0.0){
if(nota>=3.0){
numAprobados = numAprobados +1;
} else {
numReprobados = numReprobados +1;
}
promedioCalificaciones = promedioCalificaciones + nota;
}
} while (nota<0.0);
EISC
Universidad del Valle
Slide 74
37
17/09/2012
Estructuras de Repeticin
Importante:
En cualquiera de las estructuras de repeticin implementadas
en Java, se puede detener el ciclo usando la instruccin break o
detener una iteracin utilizando la instruccin continue.
Normalmente se usan las instrucciones break o continue cuando
se ha cumplido una condicin de anormalidad u otra
especificada por el desarrollador dentro del contexto de un
problema.
En resumen: break detiene el ciclo completamente y continue
detiene una iteracin pasando a la siguiente.
EISC
Universidad del Valle
Slide 75
Estructuras de Repeticin
Importante:
Cualquiera de los ejercicios mostrados en esta presentacin
pueden ser implementados sin la necesidad de crear mtodos
(dentro del mtodo main).
EISC
Universidad del Valle
Slide 76
38
17/09/2012
Slide 77
Slide 78
39
17/09/2012
EISC
Universidad del Valle
Slide 79
EISC
Universidad del Valle
Slide 80
40
17/09/2012
EISC
Universidad del Valle
Slide 81
Ejercicio: El curso de Algoritmia se califica con dos parciales (el primero pesa
30%, el segundo 35%), laboratorios (25%) y trabajo final (10%). Hallar la nota
definitiva sin conocer el nmero de estudiantes.
EISC
Universidad del Valle
Slide 82
41
17/09/2012
p2
lab
tra
3,2
2,4
4,4
3,0
def = 3,2
EISC
Universidad del Valle
Slide 83
EISC
Universidad del Valle
Slide 84
42
17/09/2012
Ejercicio: El curso de Algoritmia se califica con dos parciales (el primero pesa
30%, el segundo 35%), laboratorios (25%) y trabajo final (10%). Hallar la nota
definitiva sin conocer el nmero de estudiantes.
Ahora elaboramos el programa principal a partir del algoritmo, en Java :
Inicio
nomb: String;
par1, par2, lab, tar: float;
Leer (nomb, par1, par2, lab, tar);
haga
Imprimir(par1 + par2 + lab + tar +
calculaDefinitiva(par1, par2, lab, tar);
Leer (nomb, par1, par2, lab, tar);
mientras (nomb != Final ) ;
Fin
EISC
Universidad del Valle
Slide 85
Ejercicio: El curso de Algoritmia se califica con dos parciales (el primero pesa
30%, el segundo 35%), laboratorios (25%) y trabajo final (10%). Hallar la nota
definitiva sin conocer el nmero de estudiantes.
Ahora elaboramos el programa principal a partir del algoritmo, en Java :
do {
par1= Double.parseDouble
(JOptionPane.showInputDialog (Parcial 1"));
par2, lab, tar =D.pD(JOP.sMD ());
miArea.append ("\n"+nomb+\t+forma.format(par1)+
"\t"+forma.format(par2)+"\t"+
forma.format(lab)+"\t"+ forma.format(tar)+"\t"+
forma.format(calculaDefinitiva
(par1, par2, lab, tar) ) );
nomb= JOptionPane.showInputDialog(Nombre");
} while (!nomb.equals("Final")); }
// Se realiza la impresin del rea de texto
JOptionPane.showMessageDialog(null, miScroll,
"Calculo de la Nota Final del Curso ",
JOptionPane.INFORMATION_MESSAGE);
System.exit(0);
} // fin del mtodo main
Inicio
nomb: String;
par1, par2, lab, tar: float;
Leer (nomb, par1, par2, lab, tar);
haga
Imprimir(par1 + par2 + lab + tar +
calculaDefinitiva(par1, par2, lab, tar);
Leer (nomb, par1, par2, lab, tar);
mientras (nomb != Final ) ;
Fin
EISC
Universidad del Valle
Slide 86
43
17/09/2012
Ejercicio: El curso de Algoritmia se califica con dos parciales (el primero pesa
30%, el segundo 35%), laboratorios (25%) y trabajo final (10%). Hallar la nota
definitiva sin conocer el nmero de estudiantes.
Probemos el programa:
JTextArea
Area de Texto
miArea
JScrollPane
barra de
desplazamiento
miScroll
EISC
Universidad del Valle
Slide 87
JOptionPane.showMessageDialog(null, miScroll);
Scroll donde
se insert el
rea de
texto
(miArea)
Slide 88
44
17/09/2012
Calcular el valor del cos (X) (coseno del ngulo x), usando
la serie infinita:
2 4 6 8 10
m
2m
x
x
x
x
x (
1
)
x
cos
(x)
=
1
+
...
+
2
!
4
!
6
!
8
!
10
! (
2m
)!
EISC
Universidad del Valle
Slide 89
1
)
x
cos
(x)
=
1
+
...
+
2
!
4
!
6
!
8
!
10
!
(
2m
)!
Si tomamos 10 trminos de la serie, tenemos:
cos( / 2 ) = 1 1,23370055013617 + 0,253669507901048
0,020863480763353 + 0,000919260274839426
0,0000252020423730606 + ... + -0,000000000000529440020073462
Slide 90
45
17/09/2012
EISC
Universidad del Valle
Slide 91
...
2! 4! 6! 8! 10!
(2m)!
3
5
7
9
11
x
x
x
x
x
(1) m x 2 m 1
sen( x) x
...
3! 5! 7! 9! 11!
(2m 1)!
cos( x) 1
cosh( x ) 1
x2
x4
x6
x8
x10
x 2m
...
2!
4!
6!
8! 10!
( 2m)!
( x 1) 2 ( x 1) 3 ( x 1) 4 ( x 1) 5
...
2
3
4
5
x 3 x 5 x 7 x 9 x11
x 2 m 1
senh( x) x
...
3! 5! 7! 9! 11!
(2m 1)!
2
3
4
5
x
x
x
x
(
1
)n X n
ex 1 x
...
2! 3!
4! 5!
n!
ln( x) ( x 1)
EISC
Universidad del Valle
Slide 92
46