You are on page 1of 103

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

Estructuras de Repeticin

Ejercicio: Suponga que debe listar los nmeros del 1 a 100


en una aplicacin Java.

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); JOptionPane.showMessageDialog( null, El nmero es: + 100); } Y si nos piden listar del 1 al 5000?
EISC
Universidad del Valle

Slide 4

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

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

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

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 mientras i < n incrementando i en 1 Imprimir (i) fin_desde Fin
EISC
Universidad del Valle

Slide 12

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

Desde i = 1; Mientras i < n; incrementar i en 1 Imprimir (i) Fin_desde

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

Desde i = 1; Mientras i < n; incrementar i en 1 Imprimir (i) Fin_desde

EISC
Universidad del Valle

Slide 14

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) Fin_desde

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 probar el valor final de la variable de control para continuar el ciclo Incremento o decremento de la variable de control

for (inicio; prueba; actualizacin) {


//Instrucciones a Repetir

}
EISC
Universidad del Valle

Slide 16

Estructura For
Pseudocdigo Desde inicio mientras condicin incrementando en incremento Haga instruccin 1 instruccin 2 . Fin desde Java

for ( inicio; condicin; incre/decremento) { instruccin 1; instruccin 2; }

Expresin de inicio Expresin de condicin (o prueba) Expresin de incremento/decremento


EISC
Universidad del Valle

Slide 17

Estructura for
Pseudocdigo Java

Desde inicio mientras condicin incrementando en incremento Haga instruccin 1 instruccin 2 . Fin desde

for( inicio; condicin; incre/decremento)


{ instruccin 1; instruccin 2;

Expresin de inicio Expresin de condicin Expresin de incremento/decremento


EISC
Universidad del Valle

(o prueba)

Slide 18

Estructura for
Pseudocdigo Java

Desde inicio mientras condicin incrementando en incremento Haga instruccin 1 instruccin 2 . Fin desde

for ( inicio; condicin; incre/decremento) { instruccin 1; instruccin 2; }

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; }

Expresin de Inicio: Es una expresin que permite dar un valor inicial


a la variable de control del ciclo. Variable de control: Es la variable que se utiliza para contar la cantidad de iteraciones realizadas y es usada en la condicin que determina el lmite de repeticiones a realizar.

Ejemplos: i=1 k=m


EISC
Universidad del Valle

j=(y*8)

i, k , j en cada caso ser la variable de control del ciclo.


Slide 20

Estructura for
Funcionamiento:
for ( inicio; condicin; incre/decremento){ instruciones; }

Expresin de Condicin: Es una condicin que se evala


antes de realizar el bloque de instrucciones en el ciclo. Esta prueba determina cuando se termina la ejecucin del ciclo. Ejemplos: i<=5 k>total i, k , j en cada caso ser la variable de control del ciclo.

j!=(z%7)

EISC
Universidad del Valle

Slide 21

Estructura for
Funcionamiento:
for ( inicio; condicin; incre/decremento){ instruciones; }

Expresin de Incre/Decremento: Es una expresin usada para


incrementar o decrementar (actualizar) el valor de la variable de control del ciclo. Ejemplos: i++ k= k + 2

J--

EISC
Universidad del Valle

Slide 22

Estructura for

Ejemplo:
for (int i =1 ; i<=5; i++) { JOptionPane.showMessageDialog (null, Nmero: + i );
}

public static void listarNumeros(){

EISC
Universidad del Valle

Slide 23

Estructura for

Ejemplo:
for (int i =1 ; i<=5; i++) { JOptionPane.showMessageDialog (null, Nmero: + i );
}

public static void listarNumeros(){

Valor de i
1

Nmero Iteracin
1

Salida
Nmero 1

2
3

2
3

Nmero 2
Nmero 3

4
5 6
EISC
Universidad del Valle

4
5 Se interrumpe

Nmero 4
Nmero 5

Slide 24

Estructura for

Ejemplo:
for (int i =1 ; i<=5; i++) { JOptionPane.showMessageDialog (null, Nmero: + i );
}

public static void listarNumeros(){

Valor de i
1

Nmero Iteracin
1

Salida
Nmero 1

2
3

2
3

Nmero 2
Nmero 3

El nmero de iteraciones indica la cantidad de veces que se repite la(s) instruccin(es) que estn en el cuerpo del ciclo. En el ejemplo, la instruccin:
JOptionPane.showMessageDialog()

4
5 6
EISC
Universidad del Valle

4
5 Se interrumpe

Nmero 4
Nmero 5

se ejecuta 5 veces.

Slide 25

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:

JOptionPane.showMessageDialog (null, Nmero: + k );

EISC
Universidad del Valle

Slide 26

Estructura for

Ejemplo:
for(int k =18 ; k>10; k = k - 2) { JOptionPane.showMessageDialog (null, Nmero: + k ); }

public void listarNumeros(){

} Valor de i 18 16 14 12 10 Nmero Iteracin 1 2 3 4 Se interrumpe Salida Nmero 18 Nmero 16 Nmero 14 Nmero 12 La instruccin:
JOptionPane.showMessageDialog ()

se ejecuta 4 veces

EISC
Universidad del Valle

Slide 27

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); } }

Cuantas veces se ejecutar la instruccin: JOptionPane.showMessageDialog(null ,El valor de I es " + i);

EISC
Universidad del Valle

Slide 28

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
3

Nro Iteracin
1

Salida
El valor de I es 3

4,5,6,7,8,9,10, 11,12,13
14,15,16,17,18, 19,20,21,22,23 24,25,26,27,28, 29,30
EISC
Universidad del Valle

2,3,4,5,6,7,8,9, 10,11
12,13,14,15,16, 17,18,19,20,21 22,23,24,25,26, 27,28

El valor de I es 13
El valor de I es 23 Se interrumpe

La instruccin:
JOptionPane.showMessageDialog ()

se ejecuta 3 veces

Slide 29

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+ NO es ..." ); } }

Que debo completar en el mensaje NO es ... ? JOptionPane.showMessageDialog(null ,+ j+ NO es ..." );

EISC
Universidad del Valle

Slide 30

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+ NO es ..." ); } }

EISC
Universidad del Valle

Slide 31

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 );

EISC
Universidad del Valle

Slide 32

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 33

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 34

Estructuras de Repeticin
Problema: 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 1. Anlisis del problema Entradas: numeroEstudiantes, nombreEstudiante, Salidas: listadoEstudiantes Proceso:??

EISC
Universidad del Valle

Slide 35

Estructuras de Repeticin
Problema: 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 1. Anlisis del problema Entradas: numeroEstudiantes, nombreEstudiante, Salidas: listadoEstudiantes Proceso:
Desde x=1 mientras x<= numeroEstudiantes incrementando en x = x +1 Haga leer(nombreEstudiante); listadoEstudiantes = listadoEstudiantes + nombreEstudiante; Fin Desde
EISC
Universidad del Valle

Slide 36

Estructura for

Ejercicio 1:

Inicio numeroEstudiantes: int; listadoEstudiantes: String; nombreEstudiante: String; leer(numeroEstudiantes) Desde x=1 mientras x<= numeroEstudiantes incrementando en x = x +1 Haga leer(nombreEstudiante); listadoEstudiantes = listadoEstudiantes + nombreEstudiante; Fin Desde imprimir(listadoEstudiantes ); Fin

EISC
Universidad del Valle

Slide 37

Estructura for

Ejercicio 1:

public void leerNumEstudiantes()


Inicio numeroEstudiantes: int; leer (numeroEstudiantes); Fin

Inicio numeroEstudiantes: int; listadoEstudiantes: String; nombreEstudiante: String; leerNumEstudiantes(); leerNombres(); Fin

public void leerNombres()


x : Entero; Inicio Desde x=1 mientras x<= numeroEstudiantes incrementando en x = x +1 Haga leer(nombreEstudiante); listadoEstudiantes = listadoEstudiantes + nombreEstudiante; Fin Desde mostrar(listadoEstudiantes ); Fin
EISC
Universidad del Valle

Slide 38

Estructura for

Ejercicio 1:

public class Asignatura { static int numEstudiantes; static String listadoEstudiantes; public static void leerNumEstudiantes () { String num = JOptionPane.showInputDialog("Ingrese el nmero de Estudiantes:"); numEstudiantes= Integer.parseInt(num); } public static void leerNombres () { listadoEstudiantes = ; for (int x = 0; x < numEstudiantes; x++){ String estudiante = JOptionPane.showInputDialog(Nombre No: +(x+1)); listadoEstudiantes += "\nEstudiante No: "+ (x+1) + " : "+ estudiante; } JOptionPane.showMessageDialog(null, listadoEstudiantes ); }
EISC
Universidad del Valle

Slide 39

Estructura for

Ejercicio 1:
public static void main (String arg[]) {
leerNumEstudiantes (); leerNombres (); System.exit(0); } }

EISC
Universidad del Valle

Slide 40

Estructura for Ciclos Anidados

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 41

Estructura for Ciclos Anidados


Un ciclo anidado es un ciclo, de cualquier tipo, que contiene otro ciclo de cualquier tipo.

En el ejercicio propuesto se observa que se debe crear un ciclo para manejar la serie de 1 a n, y un ciclo anidado para calcular el factorial de ni .
Por ejemplo: si el usuario digita el nmero 5 el sistema debe recorrer la serie 1 a 5, y para cada nmero devolver su factorial, as: Factorial de 1 = 1, Factorial de 2 = 2, Factorial de 3 = 6 , Factorial de 4 = 24 y el Factorial de 5 = 120. Nota: El factorial de un nmero n es la multiplicacin de todos los nmeros de la serie 1 a n, entonces, el factorial de 5 es 1 x 2 x 3 x 4 x 5 = 120, el factorial de 3 es 1 x 2 x 3 = 6.
EISC
Universidad del Valle

Slide 42

Estructura for Ciclos Anidados


public static void Factorial() Inicio Si n <= 20 Entonces factorial: entero; respuesta: cadena;
Desde i=1 mientras i<=n incrementando en i = i +1 Haga factorial=1 Desde j=1 mientras j<=i incrementando en j = j +1 Haga factorial = factorial*j Fin Desde respuesta = respuesta + El factorial de + j + es: factorial; Fin Desde

imprima(respuesta); DE LO CONTRARIO imprima(Ha digitado un numero superior a 20);


Fin
EISC
Universidad del Valle

Slide 43

Estructura for Ciclos Anidados


public static void Factorial() Inicio IF n<= 20 factorial: entero; respuesta: cadena; El ciclo principal, basado en la variable de control i, contiene un ciclo anidado basado en la variable de control j.

Desde i=1 mientras i<=n incrementando en i = i +1 Haga factorial=1 Desde j=1 mientras j<=i incrementando en j = j +1 Haga factorial = factorial*j Fin Desde respuesta = respuesta + El factorial de + j + es: factorial; Fin Desde

imprima(respuesta); DE LO CONTRARIO imprima(Ha digitado un numero superior a 20);


Fin
EISC
Universidad del Valle

Slide 44

Estructura for Ciclos Anidados


public class Factorial { static int n; public static void leerN() { String num = JOptionPane.showInputDialog("Ingrese n:"); n = Integer.parseInt(num); } public static void calcularFactorial() { long factorial; String respuesta=""; if(n<=20){ for (int i = 1; i <= n; i++){ factorial=1; for (int j = 1; j <= i; j++){ factorial=factorial*j; } respuesta += "\n El Factorial de " + i + "es: " + factorial; } JOptionPane.showMessageDialog(null,respuesta); }else{ JOptionPane.showMessageDialog(null,"Ha digitado un nmero superior a 20"); } }
EISC
Universidad del Valle

Slide 45

Estructura for Ciclos Anidados

public static void main (String arg[]) { leerN (); calcularFactorial(); System.exit(0); } }

EISC
Universidad del Valle

Slide 46

Estructura for Ciclos Anidados

Ejercicio 2:
Desarrollar un programa java que permita generar y visualizar la siguiente figura:

Tenga en cuenta que el usuario ingresa al programa el nmero

de lneas que debe tener la figura (En el ejemplo hay 7 filas).


EISC
Universidad del Valle

Slide 47

Estructura for Ciclos Anidados

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 48

Estructura for Ciclos Anidados

Ejercicio 2:

EISC
Universidad del Valle

Slide 49

Estructura For Ciclos Anidados

Ejercicio 2:

EISC
Universidad del Valle

Slide 50

Estructura for - Contadores


Los contadores son variables utilizadas para realizar, como su nombre lo indica, conteos de la cantidad de veces que se cumple una situacin especfica. Como su objetivo principal es contar, deben ser de tipo entero y normalmente se inicializan en cero.

Los contadores y los acumuladores pueden ser usados en cualquier tipo de ciclos.

EISC
Universidad del Valle

Slide 51

Estructura for - Contadores

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.

EISC
Universidad del Valle

Slide 52

Estructura for - Contadores

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; leer(n) Desde i=1 mientras i<=n incrementando en i = i +1 Haga if ((i%3)==0){ contador=contador+1; } Fin Desde mostrar(contador);

Fin
EISC
Universidad del Valle

Slide 53

Estructura for - Contadores

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; leerN() 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 54

Estructura for - Contadores

Ejemplo:
public class MultiplosDeTres { static int n; public static void leerN() { n = Integer.parseInt(JOptionPane.showInputDialog("Ingrese n:")); } public static boolean esMultiploDeTres(int numero) { if(numero%3==0){ return true; }else{ return false; } }

EISC
Universidad del Valle

Slide 55

Estructura for - Contadores

Ejemplo:
public static void main (String arg[]) { int contador=0; leerN (); 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");

System.exit(0); }

EISC
Universidad del Valle

Slide 56

Estructura for - Contadores

Ejemplo:
int contador=0;
leerN (); for (int i = 1; i <= n; i++){ if (esMultiploDeTres(i)){ contador++; } } System.exit(0); La variable contador se incrementa en 1 cada vez que el mtodo esMultiploDeTres retorna true (cierto) para el nmero i

public static void main (String arg[]) {

JOptionPane.showMessageDialog(null,"En la serie 1 a "+ n+ " hay " + contador + " mltiplos de 3");

EISC
Universidad del Valle

Slide 57

Estructura for - Acumuladores


Los acumuladores son variables utilizadas para ir almacenando (acumulando) el resultado de una operacin. Pueden ser de tipo numrico (entero o real) en las cuales acumula el resultado de operaciones matemticas, o de tipo cadena en las cuales se concatenan frases o palabras. En el ejemplo del factorial se pueden observar las variables factorial y respuesta las cuales actan como acumuladores numricos y de cadena respectivamente.

EISC
Universidad del Valle

Slide 58

Estructura For - Acumuladores

public static void calcularFactorial(int n) { La variable factorial va long factorial = 1; acumulando el valor de la String respuesta=""; multiplicacin y la variable if (n >= 0) { respuesta va acumulando las if (n<=20){ cadenas usadas como for (int i = 1; i <= n; i++){ factorial=1; respuesta en cada iteracin del for (int j = 1; j <= i; j++){ ciclo principal. factorial=factorial*j; } respuesta += "\n El Factorial de " + i + "es: " + factorial; } } } else { respuesta +=Factorial de un negativo no existe; } }
EISC

.
Slide 59

Universidad del Valle

Ejercicios Estructura for


1. Disee un algoritmo que permita detectar los nmeros pares existentes en una serie de 1 a n, siendo n un nmero digitado por un usuario. 2. Disee un algoritmo que permita obtener la suma de todos los nmeros enteros existentes en una serie de 1 a n y la cantidad de nmeros pares encontrados, siendo n un nmero digitado por un usuario. Use un ciclo for en su diseo. 3. Suponga que se desea saber la nota promedio del curso de algoritmia, disee un algoritmo que solicite la cantidad de estudiantes del curso y el promedio de cada estudiante. NOTA: Para cada ejercicio realice su respectiva implementacin en Java
EISC
Universidad del Valle

Slide 60

Ejercicios Estructura for


4. Suponga que el calculo de la pensin de una persona se realiza de la siguiente manera: por cada ao de servicio se paga $80 si el empleado ingres en o despus de 1995 y $100 si ingres antes, dicho valor (80 o 100) se multiplica por el nmero de cada ao ms la edad que tena en el ao (p.e. (100*1994+32)+(100*1995+33)+), el descuento de seguridad social salud es del 12%. El programa debe recibir el ao de ingreso y la edad del empleado en el ao de ingreso, devolver el sueldo o mesada bruta, la mesada neta y el valor del descuento por salud. Ejemplo: Para una persona que ingres en el 2009 y que tena 44 aos en dicho ao, su mesada o sueldo bruto para el 2011 es $482.535, el descuento por salud es $57.904 y por lo tanto su sueldo o mesada neta es $424.630. NOTA: Realice la respectiva implementacin en Java.
EISC
Universidad del Valle

Slide 61

Ejercicios Estructura for


5. Escribir una aplicacin que permita: generar los nmeros enteros impares entre a y b Crear una aplicacin que permita: Generar los nmeros pares entre p y q Generar los primeros z mltiplos de 3 Generar la suma de m primeros mltiplos de 7 ms los n primeros mltiplos de 9

6.

NOTA: Realice la respectiva implementacin en Java.

EISC
Universidad del Valle

Slide 62

Estructura while

Evala una condicin dada para determinar si repite un conjunto de instrucciones. Si la condicin es verdadera se repiten las instrucciones. Observe que el primer paso es validar la condicin y luego se ejecutan las instrucciones (en caso de que la condicin cumpla). Pseudocdigo Mientras condicin Haga instruccin 1 instruccin 2 . Fin mientras Java while( condicion) { instruccin 1; instruccin 2; }
Slide 63

EISC
Universidad del Valle

Estructura while
Debe existir una variable de control del ciclo

La variable de control se inicializa antes del ciclo

Iniciar condiciones; while (condiciones) {


La variable de control se compara contra el valor final

// Instrucciones a repetir
}
EISC
Universidad del Valle

La variable debe actualizarse dentro de cada ciclo


Slide 64

Estructura while

Ejemplo: int a=5, b=7, c=3; while (a < b){ c = c *2; a = a + 1;


}

EISC
Universidad del Valle

Slide 65

Estructura while

Ejemplo: int a=5, b=7, c=3; while (a < b){ c = c *2; a = a + 1;


}
Nmero Iteracin 0 1 Valor variable Valor variable a c 5 6 3 6

2
Se interrumpe
EISC
Universidad del Valle

12

Slide 66

Estructura while

Ejemplo:

int a=9, b=7, c=3; while (a < b){ c = c *2; a = a + 1;


}

Nmero Iteracin 0

Valor variable Valor variable a c 9 3

Se interrumpe

Si la primera vez la condicin del ciclo while no se cumple, no se ejecuta ninguna instruccin.

EISC
Universidad del Valle

Slide 67

Estructura do-while
Los ciclos do-while funcionan de la misma manera que los

ciclos while, sin embargo un ciclo do-while ejecuta primero las instrucciones y luego hace la validacin.
Ciclo do-while: Realiza un bloque de instrucciones y despus

evala la condicin para determinar si repite el bloque o no. Pseudocdigo Haga


instruccin 1 instruccin 2 .

Java do { instruccin 1;
instruccin 2;

Mientras condicin
EISC
Universidad del Valle

} while(condicion);
Slide 68

Estructura do-while
Debe existir una variable de control del ciclo

La variable de control se inicializa antes del ciclo

Iniciar condiciones;
do{ //Instrucciones a repetir } while (condiciones)
EISC
Universidad del Valle

La variable de control debe actualizarse dentro de cada ciclo

La variable de control se compara contra el valor final


Slide 69

Estructura do-while

Ejemplo:

int a=5, b=7, c=3;


do { c = c *2; a = a + 1; } while (a<b);

EISC
Universidad del Valle

Slide 70

Estructura do-while

Ejemplo:

int a=5, b=7, c=3;


do { c = c *2; a = a + 1; } while (a<b);
Nmero Iteracin 0 1
Valor variable a 5 6 Valor variable c 3 6

2
Se interrumpe
EISC
Universidad del Valle

12

Slide 71

Estructura do-while

Observe que la primera vez se ejecutan las instrucciones aunque la condicin del ciclo no sea vlida. Por ejemplo:

int a=9, b=7, c=3; do { c = c *2; a = a + 1; } while (a < b);

EISC
Universidad del Valle

Slide 72

Estructura do-while

Observe que la primera vez se ejecutan las instrucciones aunque la condicin del ciclo no sea vlida. Por ejemplo:

int a=9, b=7, c=3; do { c = c *2; a = a + 1; } while (a < b);

Nmero Iteracin 0 1 Se interrumpe

Valor variable a 9 10

Valor variable c 3 6

EISC
Universidad del Valle

Slide 73

Ejercicio Estructura while

Ejercicio: El curso de Algoritmia se califica con dos parciales (el primero tiene un peso de 30% y el segundo 35%), una nota de laboratorios (25%) y una nota del trabajo final del curso (10%) Calcular la nota definitiva para un grupo de n estudiantes

EISC
Universidad del Valle

Slide 74

Ejercicio Estructura while

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 para n estudiantes. Inicialmente calculamos la nota para un estudiante, conocidas sus 4 calificaciones: real calculaDefinitiva (p1, p2, lab, tra : float ) { double def = 0; def = p1*0.3+p2*0.35+ la*0.25+ta*0.1; return def; } // Fin del mtodo calculaDefinitiva

EISC
Universidad del Valle

Slide 75

Ejercicio Estructura while

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 para n estudiantes. Prueba de escritorio del algoritmo:
real calculaDefinitiva (p1, p2, lab, tra: float ) { double def = 0; def = p1*0.3+p2*0.35+ la*0.25+ta*0.1; return def; } // Fin del mtodo calculaDefinitiva p1 p2 lab tra

3,2

2,4
def = 3,2

4,4

3,0

EISC
Universidad del Valle

Slide 76

Ejercicio Estructura while

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 para n estudiantes. Ahora trabajamos en el algoritmo principal:
Inicio nomb: String; par1, par2, lab, tar: float; nEst, j = 1: int; Leer (nEst); mientras (j <= nEst) haga Leer (nomb) leer(par1) leer(par2) leer(lab) leer(tar) Imprimir(par1 + par2 + lab + tar + calculaDefinitiva(par1, par2, lab, tar); j++; Fin mientras Fin

EISC
Universidad del Valle

Slide 77

Ejercicio Estructura while


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 para n estudiantes. Ahora elaboramos el programa principal a partir del algoritmo, en Java :

public static void main (String [ ] arg) { String nomb; float par1, par2, lab, tar; int nEst, j= 1; nEs=Double.parseDouble(JOptionPane.showInputDialog (Numero de Estudiantes:")); JOptionPane.showMessageDialog(null, "\nNomb \tParc1 \t+ Parc2\tLab\tTareas\tDefin"); while (j < = nEst) { nomb= JOptionPane.showInputDialog(Nombre"); par1= Double.parseDouble (JOptionPane.showInputDialog (Parcial 1")); par2, lab, tar =D.pD(JOP.sMD ()); JOptionPane.showMessageDialog(null, "\n"+nomb+\t+par1+"\t"+par2+"\t"+lab+"\t"+ tar+"\t"+calculaDefinitiva (par1, par2, lab, tar) ); j++; } }
EISC
Universidad del Valle

Inicio nomb: String; par1, par2, lab, tar: float; nEst, j = 1: 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

Slide 78

Ejercicio Estructura while

Ejercicio: Para ingresar al curso de Produccin Cinematogrfica se


realiz un prueba clasificatoria. Se tiene los resultados de dicho examen por aspirante (una nota comprendida entre 0.0 y 5.0) y se desea saber cuntos aspirantes aprobaron el examen, cuntos lo perdieron (nota menor que 3.0) y cul fue el promedio de todo el grupo de aspirantes. No sabemos cuntos aspirantes son, pero sabemos que cuando se quiera indicar que se finaliz el ingreso de notas se digitar un valor negativo.

EISC
Universidad del Valle

Slide 79

Ejercicio Estructura while


public static void determinarEstadisticasSegunNotas() Inicio
leer(nota);

Mientras nota>=0 Haga


Si (nota>=3){ numAprobados = numAprobados +1; } sino{ numReprobados = numReprobados + 1; } promedioCalificaciones = promedioCalificaciones + nota; leer(nota); Fin mientras promedioCalificaciones = promedioCalificaciones / (numAprobados + numReprobados ); mostrar(numAprobados); mostrar(numReprobados); mostrar(promedioCalificaciones);

Fin
EISC
Universidad del Valle

Slide 80

Ejercicio Estructura while


public class NotasAsignatura {
static int numAprobados,numReprobados; static double promedioCalificaciones; public static void determinarEstadisticasSegunNotas() { numAprobados =0; numReprobados =0; promedioCalificaciones=0.0;

double nota= Double.parseDouble(JOptionPane.showInputDialog(Digite la nota:"));


while (nota>=0.0){ if(nota>=3.0){ numAprobados = numAprobados +1; } else{ numReprobados = numReprobados +1; } promedioCalificaciones = promedioCalificaciones + nota; nota= Double.parseDouble(JOptionPane.showInputDialog(Digite la nota:")); } promedioCalificaciones = promedioCalificaciones / (numAprobados + numReprobados ); JOptionPane.showMessageDialog(null, Aspirantes aprobados :+ numAprobados ); JOptionPane.showMessageDialog(null, Aspirantes reprobados :+ numReprobados ); JOptionPane.showMessageDialog(null, Promedio notas :+ promedioCalificaciones );
}
EISC
Universidad del Valle

Slide 81

Ejercicio Estructura while


public static void main (String arg[]) { determinarEstadisticasSegunNotas(); System.exit(0);

}
}

EISC
Universidad del Valle

Slide 82

Ejercicio Estructura do-while

Ejercicio: Realice el ejercicio anterior (sobre el calculo de


estadsticas para el ingreso al curso de Produccin Cinematogrfica) utilizando el ciclo do-while.

EISC
Universidad del Valle

Slide 83

Ejercicio Estructura do-while


Ejercicio: Algoritmos del programa Curso Cinematografa.
public static void determinarEstadisticasSegunNotas()
Inicio
Haga leer(nota); Si (nota>=3){ numAprobados = numsAprobados +1; } Sino { numReprobados = numReprobados + 1; } promedioCalificaciones = promedioCalificaciones + nota; Mientras (nota>=0); promedioCalificaciones = promedioCalificaciones / (numAprobados + numReprobados ); mostrar(numAprobados); mostrar(numReprobados); mostrar(promedioCalificaciones);

Fin
EISC
Universidad del Valle

Slide 84

Ejercicio Estructura do-while


public static void determinarEstadisticasSegunNotas() {
numAprobados =0; double nota; 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 85

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 86

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 87

Ejercicios Estructuras while y do-while


1. Disee un algoritmo que reciba nmeros digitados por el usuario y los imprima en pantalla, el programa debe terminar cuando el usuario digite un nmero negativo. 2. Disee un algoritmo que reciba nmeros digitados por el usuario y al final imprima la suma de los nmeros digitados, el programa debe terminar cuando el usuario digite 0 (cero). 3. Cree un algoritmo que permita digitar palabras y al final imprima la concatenacin de las palabras digitadas, el programa debe terminar cuando el usuario digite la palabra terminar. NOTA: Para cada ejercicio realice su respectiva implementacin en Java, use la estructura que le parezca ms conveniente (while o do-while)
EISC
Universidad del Valle

Slide 88

Ejercicios Estructuras while y do-while


4. Suponga que el calculo de la pensin de una persona se realiza de la siguiente manera: por cada ao de servicio se paga $80 si el empleado ingres en o despus de 1995 y $100 si ingres antes, dicho valor (80 o 100) se multiplica por el nmero de cada ao ms la edad que tena en el ao (p.e. (100*1994+32)+(100*1995+33)+), el descuento de seguridad social salud es del 12%. El programa debe recibir el ao de ingreso y la edad del empleado en el ao de ingreso, devolver el sueldo o mesada bruta, la mesada neta y el valor del descuento por salud. Ejemplo: Para una persona que ingres en el 2009 y que tena 44 aos en dicho ao, su mesada o sueldo bruto para el 2011 es $482.535, el descuento por salud es $57.904 y por lo tanto su sueldo o mesada neta es $424.630. NOTA: Realice la respectiva implementacin en Java.
EISC
Universidad del Valle

Slide 89

Ejercicios Estructuras while y do-while


5. Suponga que el administrador de una tienda desea calcular el total de ventas del da, para ello debe registrar el nombre del producto, el valor del producto y la cantidad de unidades vendidas. Al final el sistema debe mostrar la lista de productos digitados, el total de ventas por cada producto, el total de ventas del da y el valor global cobrado por concepto del IVA. El administrador puede registrar productos hasta que l decida que ha terminado.

NOTA: Realice la respectiva implementacin en Java.

EISC
Universidad del Valle

Slide 90

Ejercicios Estructuras while y do-while


5. Cierta materia se califica con dos parciales ( el primero tiene un peso de 30% y el segundo 35%), una nota de laboratorios (25%) y una nota de tareas y quices (10%). Se pide calcular la nota definitiva. Ahora NO se conoce el nmero de estudiantes

EISC
Universidad del Valle

Slide 91

Ejercicio Estructura while


Ejercicio: El curso de Algoritmia se califica con dos parciales (el primero tiene un peso de 30% y el segundo 35%), una nota de laboratorios (25%) y una nota del trabajo final del curso (10%). Se pide calcular la nota definitiva, pero ahora NO se conoce el nmero de estudiantes

EISC
Universidad del Valle

Slide 92

Ejercicio Estructura while

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.

Inicialmente calculamos la nota para un estudiante, conocidas sus 4 calificaciones:


real calculaDefinitiva (p1, p2, lab, tra : float ) { double def = 0; def = p1*0.3+p2*0.35+ la*0.25+ta*0.1; return def; } // Fin del mtodo calculaDefinitiva

EISC
Universidad del Valle

Slide 93

Ejercicio Estructura while

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.
Prueba de escritorio del algoritmo:
real calculaDefinitiva (p1, p2, lab, tra: float ) { double def = 0; def = p1*0.3+p2*0.35+ la*0.25+ta*0.1; return def; } // Fin del mtodo calculaDefinitiva p1 p2 lab tra

3,2

2,4
def = 3,2

4,4

3,0

EISC
Universidad del Valle

Slide 94

Ejercicio Estructura while

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 trabajamos en el algoritmo principal:


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) leer(par1) leer(par2) leer(lab) leer(tar) mientras (nomb != Final ) ; Fin

EISC
Universidad del Valle

Slide 95

Ejercicio Estructura while


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) leer(par1) leer(par2) leer(lab) leer(tar)

public static void main (String [ ] arg) { String nomb; float par1, par2, lab, tar; DecimalFormat forma = new DecimalFormat ("0.00"); JTextArea miArea = new JTextArea(15,30); JScrollPane miScroll = new JScrollPane(miArea); miArea.append(\nNomb \tParc1 \t+ Parc2\tLab\tTareas\tDefin"); nomb= JOptionPane.showInputDialog(Nombre"); // Sigue instruccin do-while

haga Imprimir(par1 + par2 + lab + tar + calculaDefinitiva(par1, par2, lab, tar); Leer (nomb) leer(par1) leer(par2).. mientras (nomb != Final ) ; Fin

EISC
Universidad del Valle

Slide 96

Ejercicio Estructura while


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) leer(par1) leer(par2) leer(lab) leer(tar)

haga Imprimir(par1 + par2 + lab + tar + calculaDefinitiva(par1, par2, lab, tar); Leer (nomb) leer(par1) leer(par2).. mientras (nomb != Final ) ; Fin

EISC
Universidad del Valle

Slide 97

Ejercicio Estructura while


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

barra de desplazamiento miScroll


EISC
Universidad del Valle

JScrollPane

Slide 98

Uso del JTextArea


La instruccin JOptionPane.showMessageDialog sirve para mostrar el conjunto formado por el rea de texto y el scroll Scroll donde se insert el rea de texto (miArea)

JOptionPane.showMessageDialog(null, miScroll);

JOptionPane.showMessageDialog(null, miScroll,"Calculo de Nota Final del Curso ", JOptionPane.INFORMATION_MESSAGE); Ventana de dialogo con el ttulo "Calculo de Nota Final del Curso "
EISC
Universidad del Valle

Slide 99

Estructura de Iteracin (do-while)


Calcular el valor del cos (X) (coseno del ngulo x), usando la serie infinita:

Ejercicio:

Imprima el valor del cos (/2) con 8 dgitos de precisin

EISC
Universidad del Valle

Slide 100

Estructura de Iteracin (do-while)


1. Entender el Problema
Sea x = /2
Entonces la serie ser:

Si tomamos 10 trminos de la serie, tenemos:


cos( / 2 ) = 1 1,23370055013617 + 0,253669507901048 0,020863480763353 + 0,000919260274839426 0,0000252020423730606 + ... + -0,000000000000529440020073462

Para un valor final de la suma igual a 0.00


EISC
Universidad del Valle

Slide 101

Ejercicios Estructuras de Iteracin


a. Generar los nmeros enteros impares entre p y q utilizando un ciclo for b. Generar el valor de e x para los nmeros enteros x entre p y q utilizando un ciclo do-while

Utilice la metodologa de solucin de problemas Muestre los resultados en un JTextArea Utilice la clase DecimalFormat para mostrar los resultados reales con 8 decimales.

EISC
Universidad del Valle

Slide 102

Ejercicios Estructuras de Iteracin


Construya una aplicacin Java para los siguientes problemas:
x 2 x 4 x 6 x 8 x10 (1) m x 2 m cos( x) 1 ... 2! 4! 6! 8! 10! (2m)! x 3 x 5 x 7 x 9 x11 (1) m x 2 m 1 sen( x) x ... 3! 5! 7! 9! 11! (2m 1)!
x2 x4 x6 x8 x10 x 2m cosh( x ) 1 ... 2! 4! 6! 8! 10! ( 2m)!

( x 1) 2 ( x 1) 3 ( x 1) 4 ( x 1) 5 ln( x) ( x 1) ... 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)! x 2 x3 x 4 x5 ( 1) n X n x e 1 x ... 2! 3! 4! 5! n!

Utilice la metodologa de solucin de problemas


Slide 103

EISC
Universidad del Valle

You might also like