Académique Documents
Professionnel Documents
Culture Documents
vez su bloque repetitivo, a diferencia del while o del for que podan no ejecutar
el
bloque.
Esta estructura repetitiva se utiliza cuando conocemos de antemano que por lo
menos
una
vez
se
ejecutar
el
bloque
repetitivo.
La condicin de la estructura est abajo del bloque a repetir, a diferencia del
while o del for que est en la parte superior.
Representacin grfica:
Problema 1:
Escribir un programa que solicite la carga de un nmero entre 0 y 999, y nos
muestre un mensaje de cuntos dgitos tiene el mismo. Finalizar el programa
cuando se cargue el valor 0.
Diagrama de flujo:
No hay que confundir los rombos de las estructuras condicionales con los de
las
estructuras
repetitivas
do
while.
En este problema por lo menos se carga un valor. Si se carga un valor mayor o
igual a 100 se trata de un nmero de tres cifras, si es mayor o igual a 10 se
trata de un valor de dos dgitos, en caso contrario se trata de un valor de un
dgito. Este bloque se repite hasta que se ingresa en la variable valor el nmero
0 con lo que la condicin de la estructura do while retorna falso y sale del
bloque repetitivo finalizando el programa.
Programa:
importjava.util.Scanner;
publicclassEstructuraRepetitivaDoWhile1{
publicstaticvoidmain(String[]ar){
Scannerteclado=newScanner(System.in);
intvalor;
do{
System.out.print("Ingreseunvalor
entre0y999(0finaliza):");
valor=teclado.nextInt();
if(valor>=100){
System.out.println("Tiene3
dgitos.");
}else{
if(valor>=10){
System.out.println("Tiene2
dgitos.");
}else{
System.out.println("Tiene1
dgito.");
}
}
}while(valor!=0);
}
}
Problema 2:
Escribir un programa que solicite la carga de nmeros por teclado, obtener su
promedio. Finalizar la carga de valores cuando se cargue el valor 0.
Cuando la finalizacin depende de algn valor ingresado por el operador
conviene el empleo de la estructura do while, por lo menos se cargar un valor
(en el caso ms extremo se carga 0, que indica la finalizacin de la carga de
valores)
Diagrama de flujo:
Es
importante
analizar
este
diagrama
de
flujo.
Definimos un contador cant que cuenta la cantidad de valores ingresados por el
operador
(no
lo
incrementa
si
ingresamos
0)
El valor 0 no es parte de la serie de valores que se deben sumar.
Definimos el acumulador suma que almacena todos los valores ingresados por
teclado.
La estructura repetitiva do while se repite hasta que ingresamos el valor 0. Con
dicho valor la condicin del ciclo retorna falso y contina con el flujo del
diagrama.
Disponemos por ltimo una estructura condicional para el caso que el operador
cargue nicamente un 0 y por lo tanto no podemos calcular el promedio ya que
no
existe
la
divisin
por
0.
En caso que el contador cant tenga un valor distinto a 0 el promedio se obtiene
dividiendo el acumulador suma por el contador cant que tiene la cantidad de
valores ingresados antes de introducir el 0.
Programa:
importjava.util.Scanner;
publicclassEstructuraRepetitivaDoWhile2{
publicstaticvoidmain(String[]ar){
Scannerteclado=newScanner(System.in);
intsuma,cant,valor,promedio;
suma=0;
cant=0;
do{
System.out.print("Ingreseunvalor
(0parafinalizar):");
valor=teclado.nextInt();
if(valor!=0){
suma=suma+valor;
cant++;
}
}while(valor!=0);
if(cant!=0){
promedio=suma/cant;
System.out.print("Elpromediode
losvaloresingresadoses:");
System.out.print(promedio);
}else{
System.out.print("Noseingresaron
valores.");
}
}
}
El contador cant DEBE inicializarse antes del ciclo, lo mismo que el acumulador
suma. El promedio se calcula siempre y cuando el contador cant sea distinto a
0.
Problema 3:
Realizar un programa que permita ingresar el peso (en kilogramos) de piezas.
El proceso termina cuando ingresamos el valor 0. Se debe informar:
a) Cuntas piezas tienen un peso entre 9.8 Kg. y 10.2 Kg.?, cuntas con ms
de
10.2
Kg.?
y
cuntas
con
menos
de
9.8
Kg.?
b) La cantidad total de piezas procesadas.
Diagrama de flujo:
importjava.util.Scanner;
publicclassEstructuraRepetitivaDoWhile3{
publicstaticvoidmain(String[]ar){
Scannerteclado=newScanner(System.in);
intcant1,cant2,cant3,suma;
floatpeso;
cant1=0;
cant2=0;
cant3=0;
do{
System.out.print("Ingreseelpeso
delapieza(0perafinalizar):");
peso=teclado.nextFloat();
if(peso>10.2){
cant1++;
}else{
if(peso>=9.8){
cant2++;
}else{
if(peso>0){
cant3++;
}
}
}
}while(peso!=0);
suma=cant1+cant2+cant3;
System.out.print("Piezasaptas:");
System.out.println(cant2);
System.out.print("Piezasconunpeso
superiora10.2:");
System.out.println(cant1);
System.out.print("Piezasconunpeso
inferiora9.8:");
System.out.println(cant3);
}
}
Problemas propuestos
}
}
}
importjava.util.Scanner;
publicclassEstructuraRepetitivaDoWhile5{
publicstaticvoidmain(String[]ar){
Scannerteclado=newScanner(System.in);
intcuenta;
floatsaldo,suma;
suma=0;
do{
System.out.print("Ingresenmerode
cuenta:");
cuenta=teclado.nextInt();
if(cuenta>=0){
System.out.print("Ingresesaldo:");
saldo=teclado.nextFloat();
if(saldo>0){
System.out.println("Saldo
Acreedor.");
suma=suma+saldo;
}else{
if(saldo<0){
System.out.println("Saldo
Deudor.");
}else{
System.out.println("Saldo
Nulo.");
}
}
}
}while(cuenta>=0);
System.out.print("TotaldesaldosAcreedores:");
System.out.print(suma);
}
}
Ejercicio 1
Crear un programa que permita un valor n positivo ingresado por el usuario . Luego,
calcule la suma de los n primeros nmeros naturales, los pares, los impares y los
cuadrados. Finalmente mostrar resultados en pantalla.
Solucin
Crear la siguiente interfaz.
Sintaxis
do{
acciones a realizar;
}while(condicion);
Ejercicio 2. Creando tu minijuego 21
Crear una aplicacin con la lgica del juego 21. En este juego, se deben sacar cartas
mientras la suma sea menor o igual a 21, si la suma de los valores sobrepasa 21 entonces
mostrar un mensaje que muestre Perdio. Si se detiene la aplicacin y, con la siguiente carta
que iba a ser puesta en juego, no se llega a sobrepasar 21, tambin mostrar Perdio. Los
valores de las cartas seran del 1 al 13.
Solucin
Antes que nada algunas notas previas.
Para generar un nmero entre 1 y 13 haremos un llamado a la clase Math.random() de la
siguiente manera:
int numero; //para el numero al azar
numero=Int(Math.random()*13)+1; // El int es para convertirlo a entero
//se suma +1 para que genere valores desde 1 hasta 13 y no de 0 a 12;
Crear la siguiente interfaz:
El JButton btnReiniciar solo servira para limpiar el JTextArea (txaSalida) y devolver los
valores a su estado inicial (Incluyendo tambin poner activo el JButton btnJugar)
Doble clik al JButton (btnReiniciar) para programar su accion:
private void btnJugarActionPerformed(java.awt.event.ActionEvent evt) {
int numero,resp;
int suma=0;
do{
numero = ((int)(Math.random()*13))+1;
suma=suma+numero;
txaSalida.append("Numero generado: "+numero+"\t"+"Acumulado: "+suma+"\n");
if(suma<=21){
resp=JOptionPane.showConfirmDialog(null, "Desea
Continuar?","",JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE);
if(resp==JOptionPane.NO_OPTION){
numero = ((int)(Math.random()*13))+1;
suma=suma+numero;
txaSalida.append("El numero generado hubiera sido: "+numero +" y el
acumulado: "+suma);
if(suma<=21){
JOptionPane.showMessageDialog(null, "Perdiste!!!");
}
else{
JOptionPane.showMessageDialog(null, "Ganaste!!!");
}
}
}
else{
JOptionPane.showMessageDialog(null, "Perdiste...! Vuelve a intentarlo!!");
resp=JOptionPane.NO_OPTION;
}
}while(resp==JOptionPane.YES_OPTION);
btnJugar.setEnabled(false);
}
Usamos los JOptionPane para controlar las respuestas del usuario si desea seguir jugando o
no.
Hasta ahora, tal vez sta sea la aplicacin mas complicada. Pero esto es slo el principio.
Java nos ofrece muchas posibilidades, entre las cuales est crear juegos de este tipo mucho
ms vistosos.
3. Sentencia for. Permite crear estructuras ligeramente sencillas (En realidad es la estructura
repetitiva mas sencilla de usar). Su sintaxis es:
Ejercicio 4
Crear un programa que calcule los divisores de un nmero natural cualquier. Tambin
mostrar si el nmero ingresado es primo. Un nmero primo es aquel que solo sea divisible
por 1 y por el mismo nmero.
Solucin
La lgica de este programa es sencilla. Luego de leer el nmero, se debe dividir al mismo por
cada nmero natural, desde 1 hasta el mismo nmero. Cada vez que el residuo sea 0, se
debe mostrar el nmero. Finalmente, con una condicional, mostrar el respectivo mensaje
(Primo o no).
Crear la siguiente interfaz:
x = x + 1;
}
}
3.Desarrollar un programa que permita la carga de 10 valores por teclado y nos
muestre posteriormente la suma de los valores ingresados y su promedio.
return 0;
}
num = Console.ReadLine()
If num > 0 Then
resultado = "positivo"
Else
resultado = "cero"
If num < 0 Then
resultado = "negativo"
Else : resultado = "es cero"
End If
End If
Console.WriteLine("el numero ingresado es:" & resultado)
Console.ReadLine()
End Sub
End Module
Sub main()
'modulo35
Dim h, m, m1, resul, tiempo As Integer
Console.WriteLine("ingrese el tiempo en horas: ")
h = Console.ReadLine()
Console.WriteLine("ingrese cntidad en minutos: ")
m = Console.ReadLine()
If m > 0 And m < 60 Then
m1 = 2.5
Else
m=0
Console.WriteLine("ingrese minutos entre 1 y 60 ")
If m > 0 And m < 60 Then
m1 = 2.5
End If
End If
resul = (h * 2.5) + m1
Console.WriteLine("el pago a realizar es: " & " s/. " & resul & "
nuevos soles ")
Console.ReadLine()
Console.Clear()
main()
End Sub
End Module
End Select
Loop
End Sub
1.
#include <iostream>
2.
3.
int main(){
4.
int i,n;
5.
double suma=0.0,div=0.0;
6.
cout<<"Ingresa Numero"<<endl;
7.
cin>>n;
8.
for(i=1;i<(n+1);i++){
9.
div=(1/(double)((2*i)-1));
10.
if(i%2==0){
11.
suma=suma-div;
12.
}else{
13.
suma=suma+div;
14.
15.
}
}
16.
17.
cout<<suma;
return 0;
18. }
Publicado por George Tacuri en 21:23