Está en la página 1de 25

ALGORITMIA Y PROGRAMACIN

CLASE NO. 6
Ciclos While y do while

Estructuras de Repeticin
Ciclo 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 se cumpla).
Algoritmo

Java

Mientras condicin Haga

while( condicion)
{ instruccin 1;

instruccin 1
instruccin 2
.

Fin mientras

instruccin 2;

EISC
Universidad del Valle

Slide 2

Instrucciones de control de flujo:


Ciclo

while

La forma general de esta sentencia es:

while (condiccin) {
sentencias;
}
A diferencia de un for, un while solo tiene una
expresin que representa el hasta cuando?

EISC
Universidad del Valle

Slide 3

Ciclos - While
Mientras que el dato
sea menor a cero

int dato=-1;
while(dato<0){
String aux=JOptionPane.showInputDialog(digite un numero:);
dato = Integer.parseInt(aux);

EISC
Universidad del Valle

Slide 4

Ciclos - While
int suma=0;
int i, n;
i=1;
n=100;
while(i<n)
{
suma=suma+i;
i++;
}

El ciclo contina mientras que esta


condicin sea verdadera

EISC
Universidad del Valle

Slide 5

Ciclos - While
int suma=0;
int i, n;
i=1;
n=100;
while(i<n)
{
suma=suma+i;
i++;
}

Desde 1
Hasta n
De uno en uno

EISC
Universidad del Valle

Slide 6

Estructuras de Repeticin
Ciclo while

Ejemplo:

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


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

Nmero
Iteracin

Valor variable
a

Valor variable
c

12

Se interrumpe
EISC
Universidad del Valle

Slide 7

Estructuras de Repeticin
Ciclo while

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

Nmero
Iteracin
0

Valor variable
a

Valor variable
c

Se interrumpe

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


se ejecuta ninguna instruccin.

EISC
Universidad del Valle

Slide 8

Estructuras de Repeticin
Ciclo 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
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 9

Estructuras de Repeticin
Ciclo while - Ejercicio

Diagrama de Clases
Asignatura
UsaAsignatura
Usa
main()

numAprobados
numReprobados
promedioCalificaciones
determinarEstadisticas()

Usa

Usa

System

JOptionPane

exit()

showInputDialog()
showMessageDialog()

EISC
Universidad del Valle

Slide 10

Estructuras de Repeticin
Ciclo while Ejercicio: Algoritmos de la clase Asignatura.
public void determinarEstadisticas()
Inicio
leer(nota);
Mientras nota>0 Haga

Si (nota>3){
numAprobados = numAprobados +1;
}
Si no{
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 11

Estructuras de Repeticin
Ciclo while - Ejercicio
public class Asignatura {
int numAprobados;

int numReprobados;

public void determinarEstadisticas() {


numAprobados =0;
numReprobados =0;

double promedioCalificaciones;
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 probados :+ numAprobados );
JOptionPane.showMessageDialog(null, Aspirantes re probados :+ numReprobados
);
JOptionPane.showMessageDialog(null, Promedio notas :+ promedioCalificaciones );
}

EISC

Universidad del Valle

Slide 12

Estructuras de Repeticin
Ciclo while - Ejercicio
public class UsaAsignatura {
public static void main (String arg[]) {
Asignatura apreciacionCine = new

Asignatura();
apreciacionCine.determinarEstadisticas();
System.exit(0);
}
}

EISC
Universidad del Valle

Slide 13

Estructuras de Repeticin
Ciclo 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.
Algoritmo

Java

Haga

do
{ instruccin 1;

instruccin 1
instruccin 2
.

Mientras condicin

instruccin 2;

} while(condicion);

EISC
Universidad del Valle

Slide 14

Estructuras de Repeticin
Ciclo do-while

Ejemplo:

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


do
{

c = c *2;
a = a + 1;
} while (a<c);
Nmero
Iteracin

Valor variable
a

Valor variable
c

12

Se interrumpe
EISC
Universidad del Valle

Slide 15

Estructuras de Repeticin
Ciclo 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<c);

Nmero
Iteracin

Valor variable
a

Valor variable
c

10

Se interrumpe

EISC
Universidad del Valle

Slide 16

Instrucciones de control de flujo:


Ciclo do - while
La forma general de esta sentencia es:

do {
sentencias;
} while (expresin);
Tambin tiene solo una expresin que representa el hasta
cuando?
La diferencia con el while consiste en que las sentencias
dentro de la estructura al menos se ejecutan una vez.
EISC
Universidad del Valle

Slide 17

Ciclos - Do -While
int dato;
do{
String aux=JOptionPane.showInputDialog( digite un
numero:);

dato = Integer.parseInt(aux);

} while(dato<0);

Hasta que el dato


NO sea menor a cero

EISC
Universidad del Valle

Slide 18

Ciclos - Do -While
Desde 1

int suma=0;
int i=1;
int n=100;
do {
suma=suma+i;
i++;
} while(i<n);

Hasta n

De uno en uno

EISC
Universidad del Valle

Slide 19

Estructuras de Repeticin
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 20

Estructuras de Repeticin
Estructura do-while Ejercicio: Algoritmos de la clase Asignatura.
public void determinarEstadisticas()
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 21

Estructuras de Repeticin
Estructura do- while Ejercicio:
public void determinarEstadisticas() {
numAprobados =0;

numReprobados =0;

promedioCalificaciones=0.0;

do{

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


if(nota>3.0){
numAprobados = numAprobados +1;
} else {
numReprobados = numReprobados +1;
}
promedioCalificaciones = promedioCalificaciones + nota;

}while (nota>0.0);
promedioCalificaciones = promedioCalificaciones / (numAprobados + numReprobados );

JOptionPane.showMessageDialog(null, Aspirantes probados :+ numAprobados );


JOptionPane.showMessageDialog(null, Aspirantes re probados :+ numReprobados );
JOptionPane.showMessageDialog(null, Promedio notas :+ promedioCalificaciones );
}
EISC
Universidad del Valle

Slide 22

Mtodos constructores
El mtodo

llamado exactamente igual a la


clase se llama un mtodo constructor. Este
mtodo se ejecuta cuando se crea un
objeto de esta clase

Es til

para asignarle valores iniciales a sus


atributos

EISC
Universidad del Valle

Slide 23

Mtodos constructores
import javax.swing.*;

public class UsaRectangulo{


public static void main(String a[]){

En la creacin del
objeto, se emplea el
mtodo constructor

Rectangulo unRectangulo=new Rectangulo();

unRectangulo.alto=
Integer.parseInt(JOptionPane.showInputDialog(Alto?"));
unRectangulo.ancho=Integer.parseInt(JOptionPane.showInputDialo
g(Ancho?"));
unRectangulo.obtenerArea();
JOptionPane.showMessageDialog(null,"El area es "+
unRectangulo.area);
System.exit(0);
}
}

Mtodos constructores
public class Rectangulo{
public int alto;
public int ancho;
public int area;
public Rectangulo(){
alto=0;
ancho=0;
}
public void calcularArea(){
area=alto*ancho;
}
}//fin clase

EISC
Universidad del Valle

Slide 25

También podría gustarte