Do-while
La instrucción "do-while", es otra estructura de control repetitiva que se
caracteriza porque ejecuta un conjunto de instrucciones sin realizar previamente la
evaluación de la expresión relacional y/o lógica. Esto significa utilizando "do-
while" la secuencia de acciones se realizará por lo menos una vez, pese a obtener
un valor falso.
PSEUDOCÓDIGO
haga
secuencia_de_acciones
mientras (expresión_lógica)
Se lee de la siguiente forma: Haga la secuencia de acciones mientras la expresión
lógica sea verdadera. Esto significa que la primera vez la secuencia de acciones se
realiza sin haber verificado la expresión lógica. Si luego de realizar UNA VEZ la
secuencia de acciones, se obtiene un resultado verdadero (true) se repite la
secuencia de acciones, y si se obtiene un falso, continúa con las instrucciones fuera
de la estructura repetitiva. Gráficamente se vería así:
DIAGRAMA DE FLUJO DE DATOS
LENGUAJE DE PROGRAMACIÓN JAVA
do
secuencia de acciones;
} while (expresión lógica);
Se debe observar que ésta es la única instrucción que finaliza con ";" luego de una
llave (}) e indica el fin de la instrucción do-while.
EJEMPLO
Realice un programa que permita obtener el factorial de un número dado por el
usuario, utilizando la instrucción do-while.
ANÁLISIS (Exactamente el mismo proceso que en la estructura while)
Lectura 1: Comprender. El factorial de un entero positivo n, se define como
el producto de todos los números enteros positivos desde 1 hasta n.
Matemáticamente 5! = 5*4*3*2*1 ó a la inversa: 5! = 1*2*3*4*5
Una vez conocido el proceso matemático, es conveniente hacer una
representación gráfica de todas las variables que intervienen.
Así en la gráfica puede observarse es necesario ir incrementando el valor en 1
(valor constante - CONTADOR) para llegar hasta el 5 (número dado por el
usuario); es decir, 1*2 = 2, este resultado se multiplica por 3 (2*3 = 6), el 6 se
multiplica por 4 (6*4=24) y, 24 se multiplica por 5 que es el número del cual se
quiere obtener el factorial (24 * 5 = 120)por lo que es posible observar como los
resultados de las multiplicaciones se acumulan hasta obtener el factorial.
Lectura 2: Qué datos necesito para solucionar el problema?
Entradas:
int num
Lectura 3: Qué resultados se quieren obtener?
Salidas:
int fact
DISEÑO
Proceso Factorial
Escribir 'Ingresar número'
Leer num //Dato ingresado por el usuario
cont<-0 //Inicializa el contador, se realiza una SOLA VEZ, va fuera del ciclo
fact<-1 //Inicializa el acumulador, se realiza una SOLA VEZ, va fuera del ciclo
Haga
fact<-fact*num //Instrucción de acumulador, se realiza VARIAS VECES, va
dentro del ciclo
cont<-cont+1 //Incremento constante del contador, se realiza VARIAS VECES,
va dentro del ciclo
Mientras (cont<=5)
Escribir fact
FinProceso
DFD
Como en PseInt no existe la Sentencia Do While se ha realizado con la
instrucción Repeat, cuyo cambio está en la condición, ya que repite - hasta
que se cumpla la condición.
El diseño toma la mayoría de datos de la fase de análisis, para incorporarlo a un
proceso secuencial. Al distinguir cuáles son las acciones que se realizan una sola
vez y las que se realizan varias veces, éstas últimas son aquellas que van dentro
de las instrucciones repetitivas.
IMPLEMENTACIÓN
public static void main(String[] args) {
import java.util.Scanner; // se importa la clase Scanner
Scanner entrada=new Scanner(System.in);// se declara e inicializa una instancia
de la clase Scanner.
int fact, num, cont;
System.out.print("Ingrese un numero: "); // Imprime un mensaje
num = Integer.parseInt(entrada.next()); //Leer num
fact=1; //Inicializa acumulador
cont=1; //Inicializa contador
do {
fact = fact * cont; //Instrucción de acumulación
cont = cont + 1; //Instrucción de contador
}while (cont <= 5);
System.out.println("Factorial: "+ String.valueOf(fact));
}