You are on page 1of 46

17/09/2012

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

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

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

Desde i = 1; Mientras i < n; incrementar i en 1


Imprimir (i)

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

Desde i = 1; Mientras i < n; incrementar i en 1


Imprimir (i)

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

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

17/09/2012

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 (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

(o prueba)

EISC
Universidad del Valle

Slide 18

17/09/2012

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

j=(y*8)/9

i, k , j en cada caso ser la


variable de control del ciclo.

EISC
Universidad del Valle

Slide 20

10

17/09/2012

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

j!=(z%7)

i, k , j en cada caso ser la


variable de control del ciclo.

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

11

17/09/2012

Estructura for

Ejemplo:

public static void listarNumeros(){


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

Nmero Iteracin

Salida
Nmero 1

Nmero 2

Nmero 3

Nmero 4

En el ejemplo, la instruccin:

Nmero 5

se ejecuta 5 veces.

Se interrumpe

El nmero de iteraciones indica la


cantidad de veces que se repite
la(s) instruccin(es) que estn en
el cuerpo del ciclo.
JOptionPane.showMessageDialog()

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:

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

EISC
Universidad del Valle

Slide 24

12

17/09/2012

Estructura for

Ejemplo:

public void listarNumeros(){


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

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

Cuantas veces se ejecutar

la instruccin:

JOptionPane.showMessageDialog(null ,El valor de I es " + i);

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

Que debo completar en el mensaje

J NO es ... ?

JOptionPane.showMessageDialog(null ,+ j+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:

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 32

16

17/09/2012

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

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 35

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 n i .
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 36

18

17/09/2012

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 37

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 38

19

17/09/2012

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 39

Estructura for Ciclos Anidados

public static void main (String arg[]) {


leerN ();
calcularFactorial();
System.exit(0);
}
}

EISC
Universidad del Valle

Slide 40

20

17/09/2012

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 41

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 42

21

17/09/2012

Estructura for Ciclos Anidados

Ejercicio 2:

EISC
Universidad del Valle

Slide 43

Estructura For Ciclos Anidados

Ejercicio 2:

EISC
Universidad del Valle

Slide 44

22

17/09/2012

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 45

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

Estructura for - Contadores

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

Estructura for - Contadores

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

Estructura for - Contadores

Ejemplo:

public static void contarMultiplosDeTres() {

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

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 50

25

17/09/2012

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

Universidad del Valle

Slide 51

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 52

26

17/09/2012

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 53

Ejercicios Estructura for


5. Escribir una aplicacin que permita: generar los nmeros
enteros impares entre a y b
6. 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
NOTA: Realice la respectiva implementacin en Java.
EISC
Universidad del Valle

Slide 54

27

17/09/2012

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;

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

Valor variable Valor variable


a
c

12

Se interrumpe
EISC
Universidad del Valle

Slide 57

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

Se interrumpe

Si la primera vez la condicin del ciclo while no se cumple, no


se ejecuta ninguna instruccin.

EISC
Universidad del Valle

Slide 58

29

17/09/2012

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

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

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

Valor variable
a

Valor variable
c

10

Nmero
Iteracin

Se interrumpe

EISC
Universidad del Valle

Slide 62

31

17/09/2012

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 63

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 64

32

17/09/2012

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

4,4

3,0

def = 3,2
EISC
Universidad del Valle

Slide 65

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 = 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 66

33

17/09/2012

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= 0;
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++;
}
}

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

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 68

34

17/09/2012

Ejercicio Estructura while


public static void determinarEstadisticasSegunNotas()
Inicio
leer(nota);
Mientras nota>0 Haga
Si (nota>=3){
numAprobados = numAprobados +1;
}
De Lo Contrario {
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 69

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 70

35

17/09/2012

Ejercicio Estructura while


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

EISC
Universidad del Valle

Slide 71

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 72

36

17/09/2012

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 73

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

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 77

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 78

39

17/09/2012

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 79

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 80

40

17/09/2012

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 81

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 82

41

17/09/2012

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

4,4

3,0

def = 3,2
EISC
Universidad del Valle

Slide 83

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

EISC
Universidad del Valle

Slide 84

42

17/09/2012

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 :

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

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 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, 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 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

JScrollPane

barra de
desplazamiento
miScroll
EISC
Universidad del Valle

Slide 87

Uso del JTextArea


La instruccin JOptionPane.showMessageDialog sirve para
mostrar el conjunto formado por el rea de texto y el scroll

JOptionPane.showMessageDialog(null, miScroll);

Scroll donde
se insert el
rea de
texto
(miArea)

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 88

44

17/09/2012

Estructura de Iteracin (do-while)


Ejercicio:

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

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


precisin

EISC
Universidad del Valle

Slide 89

Estructura de Iteracin (do-while)


1. Entender el Problema
Sea x = /2
Entonces la serie ser:
2 4 6 8 10
m
2m
x
x
x
x
x (

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

Para un valor final de la suma igual a 0.00


EISC
Universidad del Valle

Slide 90

45

17/09/2012

Ejercicios Estructuras de Iteracin


a. Generar los nmeros enteros impares entre p y q utilizando un ciclo for
b. Generar el inverso de cada nmero entero par entre p y q utilizando
un ciclo while (Resultado debe ser Real)
c. Generar el valor de e x para los nmeros enteros x entre p y q
utilizando un ciclo do-while
2 3 4 5 6
x
x
xxxx
x
e
=
1
+
+
+
+
+
+
+
...
1
!2
!3
!4
!5
!6
!

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 91

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


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

Utilice la metodologa de solucin de problemas

EISC
Universidad del Valle

Slide 92

46