clase10 ejercicios estructurarepetitiva

15
Estructura repetitiva while Edisson Gutiérrez Jiménez Universidad de Antioquia Lógica y representación I

Upload: adrian-espinosa

Post on 11-Jan-2017

19 views

Category:

Education


0 download

TRANSCRIPT

Page 1: Clase10 ejercicios estructurarepetitiva

Estructura repetitiva while

Edisson Gutiérrez Jiménez

Universidad de Antioquia

Lógica y representación I

Page 2: Clase10 ejercicios estructurarepetitiva

Variable bandera o centinela

• Bandera o centinela: Variable utilizada en la

condición del ciclo while para decidir si se

itera o no. Es útil cuando no sabemos el

numero exacto de veces que se debe iterar.

• En esta clase de ciclo el usuario decide cuándo

terminar con el proceso repetitivo sin

importar cuantas iteraciones se hayan

efectuado; a diferencia de los ciclos

anteriores, en donde el número de iteraciones

está determinado desde el principio.

Page 3: Clase10 ejercicios estructurarepetitiva

Sintaxis de la estructura de repetición

while en java

while (expresión lógica) {

// Instrucciones del ciclo

}

Si la expresión lógica evalúa a verdadero se ejecutan lasinstrucciones que están entre { y }. Una vez ejecutadas lasinstrucciones se vuelve a evaluar la expresión lógica. Dentro lasinstrucciones debe existir una que eventualmente haga que laexpresión lógica evalúe a falso. Si la expresión lógica evalúa a falso,termina el while y se ejecutan las instrucciones que se encuentrendespués de }.

Page 4: Clase10 ejercicios estructurarepetitiva

Ejemplo

1. Caja registradora: Se requiere una aplicaciónque permita calcular el valor total de lascompras realizadas por un cliente.

• Análisis:

• Datos de entrada

– precio: Variable tipo numérico que almacenará elprecio de cada producto comprado.

– comprar: variable tipo alfanumérico quefuncionará como controlador del ciclo while.

Page 5: Clase10 ejercicios estructurarepetitiva

Procedimiento

• Se declaran las variables donde se almacenarán el pago total, el precio decada producto y el valor de la variable controladora del ciclo.

• Se evalúa la condición de la sentencia while, es decir, si el valor contenido en lavariable comprar es igual al carácter “s”; de esta forma mientras el valor de lavariable comprar sea “s” el ciclo se repetirá, cuando su valor cambie, el ciclodejará de ejecutarse y continuará ejecutándose la línea siguiente a la llaveque cierra la sentencia while.

• Se ejecuta la función para mostrar al usuario el mensaje “favor ingresar el valor delproducto”. Seguidamente se invoca la función para obtener el valor del precio delproducto comprado.

• El precio del producto se le suma al valor contenido en la variable pagoTotal.Podríamos decir que pagoTotal actúa como un acumulador.

• Se invoca la función para mostrar al usuario el mensaje “digite “s” para continuaringresando el precio de otro producto”. Luego se utiliza la función para capturar eldato ingresado por el usuario. Cuando el usuario ingresa un valor diferente de “s”finaliza el ciclo y se ejecuta la instrucción siguiente al ciclo while; en este casose imprime el mensaje “la compra total fue" pagoTotal.

Page 6: Clase10 ejercicios estructurarepetitiva

import java.util.Scanner;

public class compras {

public static void main(String[] args) {

double pagoTotal=0, precio;

char comprar='s';

Scanner sc = new Scanner(System.in);

while (comprar == 's')

{

System.out.println("Ingrese el valor del producto: ");

precio = sc.nextDouble();

pagoTotal += precio;

System.out.println("Ingrese s para continuar o n para terminar ");

comprar = sc.next().charAt(0);

}

System.out.println("La compra total fue de: $" + pagoTotal);

}

}

Page 7: Clase10 ejercicios estructurarepetitiva

Ejemplo

2. Una empresa desea conocer cuántos de susempleados devengan un salario mensualmayor a $800000 y cuántos devengan menosde $500000.

• Análisis:

• Datos de entrada

– salario: Variable de tipo numérico que almacenaráel salario correspondiente a cada empleadoingresado.

Page 8: Clase10 ejercicios estructurarepetitiva

Otros datos

• contSalMayor: Variable de tipo numéricoque cuenta cuántas personas devenganmás de 800000.

• contSalMenor: Variable de tipo numéricoque cuenta cuántas personas devenganmenos de 500000.

• masEmpleados: Variable de tipoalfanumérico que se utilizará para controlarla condición en el ciclo while.

Page 9: Clase10 ejercicios estructurarepetitiva

Procedimiento

• Se declaran las variables necesarias.

• Se inicializan en cero (0) las variables que se utilizarán paracontar las personas según el salario devengado. Es importantesiempre inicializar las variables que nos servirán comoacumuladores o contadores.

• Se inicializa en “s” la variable masEmpleados, controladora delciclo para que ingrese la primera vez al ciclo.

• Se evalúa la condición del ciclo while, es decir que el valor dela variable masEmpleados sea igual a “s”, sí la condición esverdadera el ciclo while seguirá ejecutándose, cuando su valorcambie, el ciclo dejará de ejecutarse.

• Se hace uso de la función para obtener el salario de cada empleado.

• Se hace uso de la estructura de decisión “if” para evaluar siel número a evaluar es mayor a 800000 (salario > 800000) ó esmenor a 500000 (salario < 500000)

• Se incrementa el contador de personas dependiendo de cuálcondición se haya cumplido.

• Se pregunta si hay mas empleados, haciendo uso de la función.

• Terminado el ciclo se muestran los resultados obtenidos.

Page 10: Clase10 ejercicios estructurarepetitiva

public class salarios {

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

double contSalMayor = 0, contSalMenor=0, salario;

char masEmpleados='s';

while (masEmpleados == 's' || masEmpleados == 'S')

{

System.out.println("Por favor ingrese el salario: ");

salario = sc.nextDouble();

if (salario > 800000)

contSalMayor++;

else

if (salario < 500000)

contSalMenor++;

System.out.println("Ingrese s para continuar o n para terminar ");

masEmpleados = sc.next().charAt(0);

}

System.out.println("El número de empleados que devenga más de $ 800000 es " + contSalMayor);

System.out.println("El número de empleados que devenga menos de $ 500000 es " + contSalMenor);

}

}

Page 11: Clase10 ejercicios estructurarepetitiva

Ejemplo

• En una elección realizada en Piedra Dura sepresentaron tres candidatos: Pedro, Pablo y Vilma. Porcada votante se tiene la siguiente información:

• Piedracédula: Número de la cédula del votante.

• Opción: Campo que indica el candidato escogido, si elvalor del campo es:– 1: votó por Pedro

– 2: votó por Pablo

– 3: votó por Vilma

– 4: votó en blanco

• Elaborar un algoritmo que muestre el número de votos depositados por cada candidato, el porcentaje que este representa y el total de votantes.

Page 12: Clase10 ejercicios estructurarepetitiva

• Análisis:

• Datos de entrada

– Piedracédula de cada votante

– Opción que indica el candidato elegido

• Otros datos:

– Número de votos por Pedro

– Número de votos por Pablo

– Número de votos por Vilma

– Número de votos en blanco

– Número total de votos

Page 13: Clase10 ejercicios estructurarepetitiva

Procedimiento

• Como no se conoce el total de votantes se debeimplementar un esquema cualitativo; el campoescogido dentro del registro será Piedracédula, el cualdentro de sus posibles valores no tiene uno que seacero o negativo. El ciclo de entrada de datos terminarácuando encuentre un valor de cero para el campoPiedracédula. El campo opción puede tomar unocualquiera de los valores entre 1 y 4, pero sólo uno deestos valores en cualquier momento. Si Fred votó porVilma y su cédula es 588 su registro sería:

588 3

Page 14: Clase10 ejercicios estructurarepetitiva

public class votos {

public static void main(String[] args) {

float votosPedro = 0, votosPablo = 0, votosVilma = 0, votosBlanco = 0, totalVotos = 0;

float porPedro, porPablo, porVilma, porBlanco;

int votante, voto;

Scanner sc = new Scanner(System.in);

System.out.println("Ingrese la cedula del primer votante, cuando desee terminar ingrese cero (0) ");

votante = sc.nextInt();

while (votante > 0)

{

System.out.println("Digite el número del candidato 1:Pedro, 2:Pablo, 3:Vilma, 4: Blanco ");

voto = sc.nextInt();

switch (voto)

{

case 1:

votosPedro++;

break;

case 2:

votosPablo++;

break;

case 3:

votosVilma++;

break;

case 4:

votosBlanco++;

break;

default:

System.out.println("Ingrese una opción valida ");

totalVotos--;

break;

}

Page 15: Clase10 ejercicios estructurarepetitiva

totalVotos++;

System.out.println("Ingrese la cedula del votante, cuando desee terminar ingrese cero (0) ");

votante = sc.nextInt();

}

porPedro = (float)((votosPedro/totalVotos) * 100);

porPablo = (float)((votosPablo/totalVotos) * 100);

porVilma = (float)((votosVilma/totalVotos) * 100);

porBlanco = (float)((votosBlanco/totalVotos) * 100);

System.out.println("Los votos de Pedro son: " + votosPedro);

System.out.println("Los votos de Pablo son: " + votosPablo);

System.out.println("Los votos de Vilma son: " + votosVilma);

System.out.println("Los votos en blanco son: " + votosBlanco);

System.out.println("El % de votos de Pedro es: " + porPedro);

System.out.println("El % de votos de Pablo es: " + porPablo);

System.out.println("El % de votos de Vilma es: " + porVilma);

System.out.println("El % de votos en blanco es: " + porBlanco);

System.out.println("El total de votos es: " + totalVotos);

}

}