Sie sind auf Seite 1von 100

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 mostrar los nmeros del 1 a


100 en ventanas separadas en una aplicacin Java.

EISC
Universidad del Valle
Slide 3
Estructuras de Repeticin
Ejercicio: Suponga que debe mostrar los nmeros del 1 a 100 en
ventanas separadas 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 muestre 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 muestre 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 muestre 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 muestre 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

EISC
Universidad del Valle
Slide 9
Estructuras de Repeticin
Problema: Desarrollar una aplicacin Java que solicite un
nmero y muestre 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 muestre 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 muestre 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 muestre 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 muestre los nmeros desde el 1 hasta el nmero
solicitado.

3. Codificar el algoritmo usando algn lenguaje de programacin

pseudocdigo Java

Estructura
Desde i = 1; Mientras i <= n; incrementar i en 1 De
Imprimir (i) Repeticin
Fin_desde for

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

for (inicio; prueba; actualizacin) {

//Instrucciones a Repetir

}
EISC
Universidad del Valle
Slide 16
Estructura For

Pseudocdigo Java
Desde inicio mientras condicin for ( inicio; condicin; incre/decremento)
incrementando en incremento {
Haga instruccin 1;
instruccin 1 instruccin 2;
instruccin 2
. }
Fin desde

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 for( inicio; condicin; incre/decremento)
incrementando en incremento {
Haga instruccin 1;
instruccin 1 instruccin 2;
instruccin 2
. }
Fin desde

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

EISC
Universidad del Valle
Slide 18
Estructura for

Pseudocdigo Java
Desde inicio mientras condicin for ( inicio; condicin; incre/decremento)
incrementando en incremento {
Haga instruccin 1;
instruccin 1 instruccin 2;
instruccin 2
. }
Fin desde

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, k , j en cada caso ser la


i=1 k=m j=(y*8)
variable de control del ciclo.

EISC
Universidad del Valle
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 condiciona la cantidad de veces que se va a realizar el
ciclo, para determinar cuando se termina su ejecucin.
i, k , j en cada caso ser la
Ejemplos: variable de control del ciclo.
i<=5 k>total 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:
public static void listarNumeros(){
for (int i =1 ; i<=5; i++) {
JOptionPane.showMessageDialog (null, Nmero: + i );
}
}

EISC
Universidad del Valle
Slide 23
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


1 1 Nmero 1
2 2 Nmero 2
3 3 Nmero 3
4 4 Nmero 4
5 5 Nmero 5
6 Se interrumpe

EISC
Universidad del Valle
Slide 24
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 El nmero de iteraciones indica la


1 1 Nmero 1 cantidad de veces que se repite
2 2 Nmero 2 la(s) instruccin(es) que estn en
el cuerpo del ciclo.
3 3 Nmero 3
4 4 Nmero 4 En el ejemplo, la instruccin:
JOptionPane.showMessageDialog()
5 5 Nmero 5
se ejecuta 5 veces.
6 Se interrumpe

EISC
Universidad del Valle
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:
public void listarNumeros(){
for(int k =18 ; k>10; k = k - 2) {
JOptionPane.showMessageDialog (null, Nmero: + k );
}
}

Valor de i Nmero Iteracin Salida


18 1 Nmero 18
La instruccin:
16 2 Nmero 16 JOptionPane.showMessageDialog ()
14 3 Nmero 14 se ejecuta 4 veces
12 4 Nmero 12
10 Se interrumpe

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 Nro Iteracin Salida


3 1 El valor de I es 3
4,5,6,7,8,9,10, 2,3,4,5,6,7,8,9, El valor de I es 13
La instruccin:
11,12,13 10,11
JOptionPane.showMessageDialog ()
14,15,16,17,18, 12,13,14,15,16, El valor de I es 23 se ejecuta 3 veces
19,20,21,22,23 17,18,19,20,21
24,25,26,27,28, 22,23,24,25,26, Se interrumpe
29,30 27,28
EISC
Universidad del Valle
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

Desde x=1 mientras x<=numeroEstudiantes


incrementando en x = x +1 Haga
numeroEstudiantes leer(nombreEstudiante) listadoEstudiantes
nombreEstudiantes listadoEstudiantes = listadoEstudiantes +
nombreEstudiante
Fin Desde

EISC
Universidad del Valle
Slide 36
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 37
Estructura for
Ejercicio 1:
Inicio
numeroEstudiantes: entero
listadoEstudiantes: texto
nombreEstudiante: texto

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 38
Estructura for
Ejercicio 1:
public class Asignatura {

public static void main (String arg[]) {


int numEstudiantes;
String listadoEstudiantes= ;
String nombreEstudiante;

numEstudiantes= Integer.parseInt(JOptionPane.showInputDialog("Ingrese el
nmero de Estudiantes:"));

for (int x = 1; x <= numEstudiantes; x++){


nombreEstudiante = JOptionPane.showInputDialog(Nombre No: +x);
listadoEstudiantes = listadoEstudiantes + "\nEstudiante No: "+ x + " : "+
nombreEstudiante;
}
JOptionPane.showMessageDialog(null, listadoEstudiantes );
}
}
EISC
Universidad del Valle
Slide 39
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 40
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 41
Estructura for Ciclos Anidados
Inicio
factorial, n: entero
respuesta: texto
leer(n)
SI n <= 20 Entonces
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)
SINO
imprima(Ha digitado un numero superior a 20)
Fin
EISC
Universidad del Valle
Slide 42
Estructura for Ciclos Anidados
Inicio El ciclo principal, basado en la variable
factorial,n: entero de control i, contiene un ciclo anidado
respuesta: texto basado en la variable de control j.
leer(n)
SI n<= 20
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)
SINO
imprima(Ha digitado un numero superior a 20)
Fin
EISC
Universidad del Valle
Slide 43
Estructura for Ciclos Anidados
public class Factorial {

public static void main(String arg[]){


int n, factorial;
String respuesta = "";
n = Integer.parseInt(JOptionPane.showInputDialog("Ingrese n:"));

if(n<=20){
for (int i = 1; i <= n; i++){
factorial=1;
for (int j = 1; j <= i; j++){
factorial=factorial*j;
}
respuesta = 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 44
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 45
Estructura for Ciclos Anidados
Ejercicio 2:

crearFigura(numeroFilas : entero)
Inicio
triangulo = : texto
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
imprimir(triangulo)
Fin

EISC
Universidad del Valle
Slide 46
Estructura for Ciclos Anidados
Ejercicio 2:

EISC
Universidad del Valle
Slide 47
Estructura For Ciclos Anidados
Ejercicio 2:

EISC
Universidad del Valle
Slide 48
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 49
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 50
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
imprimir(contador);
Fin
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.
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
imprimir(contador)
Fin
EISC
Universidad del Valle
Slide 52
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 53
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 54
Estructura for - Contadores
Ejemplo:
public static void main (String arg[]) { La variable contador se
int contador=0; incrementa en 1 cada vez que el
mtodo esMultiploDeTres
leerN ();
retorna true (cierto) para el
for (int i = 1; i <= n; i++){ nmero 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 55
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 56
Estructura For - Acumuladores

public static void calcularFactorial(int n) { La variable factorial va
int factorial = 1; acumulando el valor de la
String respuesta="";
if (n >= 0) {
multiplicacin y la variable
if (n<=20){ respuesta va acumulando las
for (int i = 1; i <= n; i++){ cadenas usadas como
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 57
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 58
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 (ej. (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 59
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 60
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 Java
Mientras condicin while( condicion)
Haga {
instruccin 1 instruccin 1;
instruccin 2 instruccin 2;
.
Fin mientras }

EISC
Universidad del Valle
Slide 61
Estructura while
Debe existir una variable La variable de control se
de control del ciclo inicializa antes del ciclo

Iniciar condiciones;

La variable de control se
while (condiciones){ compara contra el valor final

// Instrucciones a repetir
La variable debe
actualizarse dentro de
cada ciclo
}
EISC
Universidad del Valle
Slide 62
Estructura while
Ejemplo:
int a=5, b=7, c=3;
while (a < b){
c = c *2;
a = a + 1;
}

EISC
Universidad del Valle
Slide 63
Estructura while
Ejemplo:
int a=5, b=7, c=3;
while (a < b){
c = c *2;
a = a + 1;
}

Nmero Valor variable Valor variable


Iteracin a c
0 5 3
1 6 6
2 7 12
Se interrumpe

EISC
Universidad del Valle
Slide 64
Estructura while

Ejemplo:

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


Nmero Valor variable Valor variable
while (a < b){ Iteracin a c
c = c *2; 0 9 3
a = a + 1; Se interrumpe
}

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


se ejecuta ninguna instruccin.

EISC
Universidad del Valle
Slide 65
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 instruccin 2;
.
Mientras condicin } while(condicion);
EISC
Universidad del Valle
Slide 66
Estructura do-while
La variable de control se
Debe existir una variable inicializa antes del ciclo
de control del ciclo

Iniciar condiciones;
La variable de control
debe actualizarse
do{ dentro de cada ciclo

//Instrucciones a repetir

La variable de control
} while (condiciones) se compara contra el
valor final

EISC
Universidad del Valle
Slide 67
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 68
Estructura do-while
Ejemplo:

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


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

Nmero Valor variable Valor variable


Iteracin a c
0 5 3
1 6 6
2 7 12
Se interrumpe

EISC
Universidad del Valle
Slide 69
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 70
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; Valor variable Valor variable


Nmero
Iteracin a c
do
0 9 3
{ c = c *2;
1 10 6
a = a + 1;
} while (a < b); Se interrumpe

EISC
Universidad del Valle
Slide 71
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 72
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 : real) {
real def = 0
def = p1*0.3+p2*0.35+ la*0.25+ta*0.1
retornar def
} // Fin del mtodo calculaDefinitiva

EISC
Universidad del Valle
Slide 73
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: real)
{
real def = 0
def = p1*0.3+p2*0.35+ la*0.25+ta*0.1;
retornar 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 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.
Ahora trabajamos en el algoritmo principal:
Inicio
nomb: texto
par1, par2, lab, tar: real
nEst, j = 1: entero
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 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.
Ahora elaboramos el programa principal a partir del algoritmo, en Java :
public static void main (String [ ] arg) {
String nomb;
double par1, par2, lab, tar;
int nEst, j= 1; Inicio
nomb: texto
nEs=Integer.parseInt(JOptionPane.showInputDialog par1, par2, lab, tar: real
(Numero de Estudiantes:")); nEst, j = 1: entero
while (j < = nEst) { Leer (nEst)
nomb= JOptionPane.showInputDialog(Nombre"); mientras (j <= nEst) haga
par1= Double.parseDouble Leer (nomb) leer(par1) leer(par2) leer(lab)
(JOptionPane.showInputDialog (Parcial 1")); leer(tar);
par2, lab, tar =D.pD(JOP.sMD ()); Imprimir(par1 + par2 + lab + tar +
JOptionPane.showMessageDialog(null, calculaDefinitiva(par1, par2, lab, tar)
"\n"+nomb+\t+par1+"\t"+par2+"\t"+lab+"\t"+ j++
tar+"\t"+calculaDefinitiva (par1, par2, lab, tar) ); Fin mientras
Fin
j++;
}
}

EISC
Universidad del Valle
Slide 76
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 77
Ejercicio Estructura while
void determinarEstadisticasSegunNotas()
Inicio
nota, promedioCalificaiones: real numAprobados, numReprobados : entero
leer(nota)
Mientras nota>=0 Haga
Si (nota<=5 ){
Si (nota>=3 ){
numAprobados = numAprobados +1
}
sino{
numReprobados = numReprobados + 1
}
promedioCalificaciones = promedioCalificaciones + nota
}
leer(nota)
Fin mientras
promedioCalificaciones = promedioCalificaciones / (numAprobados + numReprobados)
imprimir(numAprobados, numReprobados, promedioCalificaciones)
Fin
EISC
Universidad del Valle
Slide 78
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<=5){
if(nota>=3){
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 +
\n Aspirantes reprobados :+ numReprobados + \n Promedio notas :+
promedioCalificaciones );
EISC }
Universidad del Valle
Slide 79
Ejercicio Estructura while

public static void main (String arg[]) {

determinarEstadisticasSegunNotas();
System.exit(0);
}
}

EISC
Universidad del Valle
Slide 80
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 81
Ejercicio Estructura do-while
Ejercicio: Algoritmos del programa Curso Cinematografa.
void determinarEstadisticasSegunNotas()
Inicio
numAprobados, numReprobados : entero nota, promedioCalificaciones : real
Haga
leer(nota)
Si (nota>=0 && nota <=5){
Si (nota>=3) {
numAprobados = numsAprobados +1
}
Sino {
numReprobados = numReprobados + 1
}
promedioCalificaciones = promedioCalificaciones + nota
}
Mientras (nota>=0);
promedioCalificaciones = promedioCalificaciones / (numAprobados + numReprobados )
imprimir(numAprobados, numReprobados, promedioCalificaciones)
Fin
EISC
Universidad del Valle
Slide 82
Ejercicio Estructura do-while
public static void determinarEstadisticasSegunNotas() {
numAprobados =0; numReprobados =0; promedioCalificaciones=0.0;
double nota;
do{
nota= Double.parseDouble(JOptionPane.showInputDialog(Digite la nota:"));
if(nota>=0.0 && nota <=5){
if(nota>=3.0){
numAprobados = numAprobados +1;
} else {
numReprobados = numReprobados +1;
}
promedioCalificaciones = promedioCalificaciones + nota;
}
} while (nota>=0.0);


EISC
Universidad del Valle
Slide 83
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 84
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 85
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 86
Ejercicios Estructuras while y do-while
4. Suponga que el clculo 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 (ej (100*1994+32)+(100*1995+33)+),
el descuento de seguridad social en 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 87
Ejercicios Estructuras while y do-while
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 para lo cual digita un dato negativo.

NOTA: Realice la respectiva implementacin en Java.

EISC
Universidad del Valle
Slide 88
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 89
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 : real) {
real def = 0
def = p1*0.3+p2*0.35+ la*0.25+ta*0.1
retornar def
} // Fin del mtodo calculaDefinitiva

EISC
Universidad del Valle
Slide 90
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: real)
{
real def = 0
def = p1*0.3+p2*0.35+ la*0.25+ta*0.1
retornar 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 91
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: texto
par1, par2, lab, tar: real
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) leer(lab) leer(tar)
mientras (nomb != Final )
Fin

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.
Ahora elaboramos el programa principal a partir del algoritmo, en Java :
public static void main (String [ ] arg) { Inicio
String nomb; nomb: String;
float par1, par2, lab, tar; par1, par2, lab, tar: float;
DecimalFormat forma = new DecimalFormat ("0.00"); Leer (nomb) leer(par1) leer(par2)
JTextArea miArea = new JTextArea(15,30); leer(lab) leer(tar)
JScrollPane miScroll = new JScrollPane(miArea);
miArea.append(\nNomb \tParc1 \t+
haga
Parc2\tLab\tTareas\tDefin");
Imprimir(par1 + par2 + lab + tar +
nomb= JOptionPane.showInputDialog(Nombre"); calculaDefinitiva(par1, par2, lab, tar);
// Sigue instruccin do-while Leer (nomb) leer(par1) leer(par2)..
mientras (nomb != Final ) ;
Fin

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.
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 ()); Inicio
miArea.append ("\n"+nomb+\t+forma.format(par1)+ nomb: String;
"\t"+forma.format(par2)+"\t"+ par1, par2, lab, tar: float;
forma.format(lab)+"\t"+ forma.format(tar)+"\t"+ Leer (nomb) leer(par1) leer(par2)
forma.format(calculaDefinitiva leer(lab) leer(tar)
(par1, par2, lab, tar) ) );
nomb= JOptionPane.showInputDialog(Nombre");
} while (!nomb.equals("Final")); } haga
// Se realiza la impresin del rea de texto Imprimir(par1 + par2 + lab + tar +
JOptionPane.showMessageDialog(null, miScroll, calculaDefinitiva(par1, par2, lab, tar);
"Calculo de la Nota Final del Curso ", Leer (nomb) leer(par1) leer(par2)..
JOptionPane.INFORMATION_MESSAGE); mientras (nomb != Final ) ;
System.exit(0); Fin
} // fin del mtodo main

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.
Probemos el programa:

JTextArea
Area de Texto
miArea

JScrollPane
barra de
desplazamiento
miScroll

EISC
Universidad del Valle
Slide 95
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
JOptionPane.showMessageDialog(null, miScroll); (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 96
Estructura de Iteracin (do-while)

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

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


precisin

EISC
Universidad del Valle
Slide 97
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 98
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 99
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 x 2 x3 x 4 x5 ( 1) n X n
e 1 x ...
2! 3! 4! 5! n!
Utilice la metodologa de solucin de problemas
EISC
Universidad del Valle
Slide 100

Das könnte Ihnen auch gefallen