UNIVERSIDAD NACIONAL TECNOLÓGICA DEL CONO SUR DE LIMA ESCUELA PROFESIONAL DE INGENIERIA DE SISTEMAS LENGUAJE DE PROGRAMACION I Docente: Ing. Díaz Leyva Teodoro Tema: Estructuras de Control Condicionales Semana N°03 INTRODUCCIÓN Estructura de Selección Simple If En la tabla que sigue se muestra el código y el pseudocódigo de la estructura de selección simple if. Note que en el caso de bloques de acciones, estas deben estar encerradas entre llaves de bloque { }. Página 1 de 19 . Página 2 de 19 .Else En la tabla que sigue se muestra el código y el pseudocódigo de la estructura de selección simple if. efectúa la acción correspondiente a dicha condición y abandona el resto de la estructura. Note que en el caso de bloques de acciones.. pasando de una condición a otra siempre que la condición anterior sea falsa. y en el momento que encuentre una condición verdadera..else. La estructura tiene una acción por defecto que se efectúa en el caso que todas las condiciones sean falsas.. estas deben estar encerradas entre llaves de bloque { La estructura de selección doble encadenada if-else-if La estructura de selección doble encadenada if.UNIVERSIDAD NACIONAL TECNOLÓGICA DEL CONO SUR DE LIMA ESCUELA PROFESIONAL DE INGENIERIA DE SISTEMAS Estructura de Selección Doble If .if evalúa un conjunto de condiciones en orden descendente. . estas deben estar encerradas entre llaves de bloque { }. si es que existe. se efectúa la acción por defecto.. La estructura de selección múltiple switch La estructura de selección múltiple switch permite seleccionar una ruta de entre varias rutas posibles en base al valor de una variable selector que se compara con una lista de constantes enteras o de carácter c1. cn. c2. Si el selector no coincide con ninguna constante. .. c3. Página 3 de 19 . Cuando se encuentra una correspondencia entre el valor de la variable selector y una constante.UNIVERSIDAD NACIONAL TECNOLÓGICA DEL CONO SUR DE LIMA ESCUELA PROFESIONAL DE INGENIERIA DE SISTEMAS En el caso de acciones compuestas. se ejecuta la acción o el grupo de acciones asociadas a dicha constante. En el caso de acciones compuestas no es necesario colocarlas entre llaves de bloque. Página 4 de 19 . se proseguirá con la ejecución de la acción o las acciones de los case que siguen hasta encontrar un break o hasta llegar al final de la estructura switch. lo que ocurra primero. El caso por defecto default no tiene que ser el último de todos sino que puede ser el primero u ocupar una posición intermedia. • Luego de efectuarse la acción o las acciones de un case o del default.UNIVERSIDAD NACIONAL TECNOLÓGICA DEL CONO SUR DE LIMA ESCUELA PROFESIONAL DE INGENIERIA DE SISTEMAS Consideraciones: • • Las sentencias break y el caso por defecto default son opcionales. Las acciones pueden ser acciones simples o acciones compuestas. • • Es un error de sintaxis tener casos duplicados. sólo le descuenta el 5%. } Página 5 de 19 . Una tienda vende un producto a precios unitarios que dependen de la cantidad de unidades adquiridas de acuerdo a la siguiente tabla: Adicionalmente. //constructor public Producto() { } public int getUnidades() { return unidades. public class Producto { //variable private int unidades. si el cliente adquiere más de 50 unidades la tienda le descuenta el 15% del importe de la compra. el importe del descuento y el importe a pagar por la compra de cierta cantidad de unidades del producto. en caso contrario. } public void setUnidades(int punidades) { unidades = punidades.ejemplo1 y las clases Producto y Principal package pack_semna3. Para resolver el problema cree la clase producto con el atributo cantidad (int) e implemente los métodos para obtener el importe de la compra.ejemplo1.UNIVERSIDAD NACIONAL TECNOLÓGICA DEL CONO SUR DE LIMA ESCUELA PROFESIONAL DE INGENIERIA DE SISTEMAS Problemas resueltos 1. Creamos el proyecto :LPI_semana3 y luego un paquete pack_semana3. //objeto lbluniades tipo JLabel JLabel lbluniades= new JLabel("Uniades"). final JLabel lblimporteapagar=new JLabel(). } } public class Principal extends JFrame{ //constructor public Principal(){ /*JDesktopPane sirve como contenedor de * los diferentes formularios hijos dentro del JFrame padre */ //-----------------------------------------------------------------------------------------------------------------------------JDesktopPane escritorio=new JDesktopPane(). //objeto txtuniades tipo JTextField final JTextField txtuniades=new JTextField(). //objeto txtucliente tipo JTextField JTextField txtcliente=new JTextField().5. if( unidades > 50 ) impdes = 0. if( unidades >= 76) impcom = unidades*27. return impcom. return impdes. if( unidades >= 51 && unidades <= 75 ) impcom = unidades*27. } public double obtnerImporteDescuento(){ double impdes=0.5. Página 6 de 19 . if( unidades >= 1 && unidades <= 25 ) impcom = unidades*27. if( unidades <= 50 ) impdes = 0. if( unidades >= 26 && unidades <= 50 ) impcom = unidades*25. //objeto lbldescripcion tipo JLabel JLabel lbldescripcion= new JLabel("Descripcion"). final JLabel lblimportedescuento=new JLabel(). //objeto lblcliente tipo JLabel JLabel lblcliente= new JLabel("Cliente").UNIVERSIDAD NACIONAL TECNOLÓGICA DEL CONO SUR DE LIMA ESCUELA PROFESIONAL DE INGENIERIA DE SISTEMAS public double obtenerImporteCompra(){ double impcom=0. //--------------------------------------------------------------------------//mostraremos los resultados en etiquetas(JLabel final JLabel lblimportecompra=new JLabel(). } public double obtenerImporteaPagar(){ return obtenerImporteCompra()-obtnerImporteDescuento().05*obtenerImporteCompra().15*obtenerImporteCompra(). //objeto txtdescripciont ipo JTextField JTextField txtdescripcion=new JTextField(). //objeto btnprocesar= tipo JButton JButton btnprocesar=new JButton("Procesar").5.5. escritorio. } Página 7 de 19 . txtuniades. //--------------------------------------------------------------------------//agregamos al contenedor escritorio. 180.add(btnprocesar).add(lblimporteapagar). 30).UNIVERSIDAD NACIONAL TECNOLÓGICA DEL CONO SUR DE LIMA ESCUELA PROFESIONAL DE INGENIERIA DE SISTEMAS //--------------------------------------------------------------------------//posicion de los objetos en el escritorio lbluniades. lblimporteapagar.add(lblimportedescuento).add(txtcliente).setBounds(110.setBounds(290.add(escritorio). escritorio. lblimportedescuento.setBounds(20. 60.tamanño.setText("Importe de descuento: "+(double)ObjProd. 150. 200.setText("Importe de descuento: "+(double)ObjProd. 30).obtenerImporteaPagar()). 100.add(lbldescripcion). 30).add(lblimportecompra). setLocationRelativeTo(null). 30). 60. //mostramos resultados lblimportecompra. lblimporteapagar. 20. 30).setBounds(20. escritorio.add(lbluniades). 90. 90.add(txtuniades). 200. //--------------------------------------------------------------------------//----EVENTO EN EL BOTON btnprocesar btnprocesar. 30). btnprocesar.getText())). txtcliente.localizacion y visibilidad del Frame setTitle("Venta de Articulos"). 20. 30). escritorio.setBounds(20. 90. 300). lblimportecompra.setBounds(20. 100.setBounds(20. lbldescripcion. //asignar valor al atributo unidades ObjProd.setText("Importe de compra: "+(double)ObjProd. 210. escritorio. //-------------------------------------------------------------------------//titulo.obtnerImporteDescuento()). 90.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { //instanciamos la clase producto Producto ObjProd= new Producto(). } }). 90. escritorio. lblcliente. 160.obtenerImporteCompra()). 30).setUnidades(Integer. //--------------------------------------------------------------------------//agregamos el escritorio al Frame getContentPane(). escritorio. 100. 200. escritorio.add(txtdescripcion). txtdescripcion. 30).setBounds(110. lblimportedescuento. 30).setBounds(20.setBounds(110. 90.parseInt(txtuniades.add(lblcliente). setVisible(true). escritorio. setSize(600. } } //----------Ejecución de la aplicación--------------- Página 8 de 19 .UNIVERSIDAD NACIONAL TECNOLÓGICA DEL CONO SUR DE LIMA ESCUELA PROFESIONAL DE INGENIERIA DE SISTEMAS //----------------------------------------------------------------------------public static void main(String[]args){ Principal p=new Principal(). Crear el paquete pack_semana3. mediante un botón y de uno en uno. } Página 9 de 19 . 301 a 500. números enteros mayores o iguales que 100 y pero menores o iguales que 900 y determine: Cuántos números pertenecen a cada uno de los siguientes intervalos: 100 a 300. c4=0.numero = numero. } public void setNumero(int numero) { this. int c1=0. c3=0. El mayor y el menor número ingresados.UNIVERSIDAD NACIONAL TECNOLÓGICA DEL CONO SUR DE LIMA ESCUELA PROFESIONAL DE INGENIERIA DE SISTEMAS 2. menor=901. 501 a 700 y 701 a 900. //-----------------------------------------------------------------------//constructor public Ejemplo2() { } //-----------------------------------------------------------------------public int getNumero() { return numero. c2=0. Diseñe un programa que permita ingresar.mayor=99.ejemplo2 con las clases Ejemplo2 y Principal public class Ejemplo2 { private int numero. .. else if( numero <= 500 ) c2++........ } //reporte de resultados public String mostrarReporte(){ String imprimir..... } } Página 10 de 19 .....: " + menor+"\n"+ "Número mayor..... } // ----------------------------------------------------------------------// Determina el mayor número ingresado public void determinarMayor(){ if( numero > mayor ) mayor = numero.: " + mayor. imprimir="Cantidad de números de 100 a 300 : " + c1+"\n"+ "Cantidad de números de 301 a 500 : " + c2+"\n"+ "Cantidad de números de 501 a 700 : " + c3+"\n"+ "Cantidad de números de 701 a 900 : " + c4+"\n"+ "Número menor.....UNIVERSIDAD NACIONAL TECNOLÓGICA DEL CONO SUR DE LIMA ESCUELA PROFESIONAL DE INGENIERIA DE SISTEMAS //---------------------------------------------------------------------------// Cuenta el número ingresado public void contarNumero(){ if( numero <= 300 ) c1++..... else c4++.. } // ----------------------------------------------------------------------// Determina el menor número ingresado public void determinarMenor(){ if( numero < menor ) menor = numero.. else if( numero <= 700 ) c3++.......... return imprimir. add(btnborrar). 90.UNIVERSIDAD NACIONAL TECNOLÓGICA DEL CONO SUR DE LIMA ESCUELA PROFESIONAL DE INGENIERIA DE SISTEMAS public class Principal extends JFrame{ // Declaración de variables globales para la GUI final JTextField txtnumero .setBounds(390. //-------------------------------------------------------------------------//titulo. JButton btnborrar=new JButton("Borrar").setBounds(290. 90. JTextArea txtarea. //objeto btnprocesar= tipo JButton JButton btningresar=new JButton("Ingresar"). 90.setBounds(20.1). txtnumero. 90. //--------------------------------------------------------------------------//mostraremos los resultados en etiquetas(JLabel final JLabel lblc1=new JLabel(). 90. 20. 20. btnborrar. //objeto txtuniades tipo JTextField txtnumero=new JTextField(). 160).add(btningresar). 300). final JLabel lblc2=new JLabel().tamanño.add(lblnumero). escritorio. //--------------------------------------------------------------------------//agregamos al contenedor escritorio.add(sp). //--------------------------------------------------------------------------//posicion de los objetos en el escritorio lblnumero. final JLabel lblc4=new JLabel(). setSize(600.localizacion y visibilidad del Frame setTitle("Numeros").setBounds(20.add(txtnumero). 400. //para la barras de desplazamiento JScrollPane sp=new JScrollPane(txtarea). escritorio. btningresar. escritorio. //--------------------------------------------------------------------------//agregamos el escritorio al Frame getContentPane(). Ejemplo2 e.setBounds(110. 30). 20. 20. //objeto lbluniades tipo JLabel JLabel lblnumero= new JLabel("Numero"). 30). escritorio. //-----------------------------------------------------------------------//constructor public Principal(){ //---------------------------------------------------------------------/*JDesktopPane sirve como contenedor de * los diferentes formularios hijos dentro del JFrame padre */ JDesktopPane escritorio=new JDesktopPane(). //-------------------------------------------------------------------------//area de texto txtarea=new JTextArea(10. 30). sp.add(escritorio). 30). Página 11 de 19 . final JLabel lblc3=new JLabel(). }//fin del constructor //------------------------------------------------------------------------public void procesar(){ e.mostrarReporte()). txtarea. e. } } //---------------------------------------------------------------------------public static void main(String[]args){ Principal p=new Principal(). //-------------------------------------------------------------------------//evento btningresar.parseInt(txtnumero. //------------------------------------------------------------------------//instancia de la clase Ejemplo2. txtnumero.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { procesar(). e."Ingrese un número de 100 a 900").UNIVERSIDAD NACIONAL TECNOLÓGICA DEL CONO SUR DE LIMA ESCUELA PROFESIONAL DE INGENIERIA DE SISTEMAS setLocationRelativeTo(null). } } Página 12 de 19 .setText(""). e.determinarMayor().setText(e. if ((e.getNumero()>=100) && (e.showMessageDialog(this.getNumero()<=900)){ e.requestFocus(). btnborrar. la creación de este objeto "e" no se realiza en //el método procesar ya que cada vez que se llamaría en el botón btnprocesar se crearía de //nuevo el objeto y las variables de nuevo se iniciarían en cero e=new Ejemplo2(). }else{ JOptionPane.getText())).contarNumero(). } }).setNumero(Integer.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { txtnumero. setVisible(true).mostrarReporte().determinarMenor(). } }). las variables globales tienen alcance de programa. cosa que si sucede con las variables globales. El tiempo de vida de una variable local es el tiempo que dure la ejecución del método que lo declara. el tiempo de vida de una variable global es el tiempo que dura la ejecución del programa. en cambio. en cambio. Página 13 de 19 . Las variables locales no se inicializan automáticamente.UNIVERSIDAD NACIONAL TECNOLÓGICA DEL CONO SUR DE LIMA ESCUELA PROFESIONAL DE INGENIERIA DE SISTEMAS //================ejecución del aplicativo=================================== Para recordar…!! Las variables locales tienen alcance de método. Luego.La cantidad máxima de bolsas retiradas y depositadas. Interfaz grafica de la aplicación Página 14 de 19 .La cantidad total de bolsas depositadas y retiradas. mostrando en todo momento: .El stock actual del almacén. .La capacidad libre del almacén. Diseñe un programa para simular el movimiento de un almacén de bolsas de cemento.UNIVERSIDAD NACIONAL TECNOLÓGICA DEL CONO SUR DE LIMA ESCUELA PROFESIONAL DE INGENIERIA DE SISTEMAS Problemas Propuestos 3.El número de depósitos y de retiros efectuados. Al comenzar la ejecución del programa. inicializar el stock de bolsas de cemento en 2000 bolsas y la capacidad del almacén en 3500 bolsas. . . el programa permitirá efectuar operaciones de depósito y de retiro.La cantidad mínima de bolsas retiradas y depositadas. . . El número de ventas efectuadas de cada tipo de licencia. Una empresa desarrolladora de software ha puesto a la venta licencias de su programa de edición de video Video Edit 2.UNIVERSIDAD NACIONAL TECNOLÓGICA DEL CONO SUR DE LIMA ESCUELA PROFESIONAL DE INGENIERIA DE SISTEMAS 4.0 a los siguientes costos unitarios: Diseñe un programa que permita ingresar por cada venta el tipo de licencia y el número de licencias y muestre luego de cada venta: El importe a pagar para la venta efectuada. Interfaz grafica de la aplicación Página 15 de 19 . El importe total recaudado de cada tipo de licencia. El número de licencias vendidas de cada tipo de licencia. case 2 : return 3100*numero. imprimir(" Por licencias Bronze.: " + nven4). case 1 : return 1500*numero... imprimir(" Por licencias Bronze. imprimir(""). imprimir("Número de ventas efectuadas"). imprimi2(" Por licencias Gold. nlic1 += numero. nven1++.: " + imptot4).: " + imptot1). imprimir("Número de licencias vendidas"). nlic3 += numero.: " + nlic2)... nven2++.. nven3++. case 1: imptot2 += imppag. nlic4 += numero.: " + nlic1).: " + nven1)..: " + nven2).... nlic2 += numero. imprimir(" Por licencias Silver..: " + nlic4)..: " + nven3)....... imprimir(" Por licencias Cobre. imprimir(""). double imppag){ switch(tipo){ case 0: imptot1 += imppag. int numero. } } //----------------------------------------------------------------// Actualiza los datos históricos public void actualizarDatosHistoricos(int tipo.: " + nlic3). break. int numero){ switch(tipo){ case 0 : return 510*numero..: " + imptot2). break. imprimir(" Por licencias Gold... nven4++... imprimir(" Por licencias Gold. case 2: imptot3 += imppag.. } } // ----------------------------este método esta en pseudocogio-----------------------------------------------// Muestra el reporte de los datos histórico public void reportarDatosHistoricos(){ imprimir("Importe total recaudado").. imprimir(" Por licencias Silver....: " + imptot3). imprimir(" Por licencias Bronze..UNIVERSIDAD NACIONAL TECNOLÓGICA DEL CONO SUR DE LIMA ESCUELA PROFESIONAL DE INGENIERIA DE SISTEMAS Presentamos algunos métodos que podrían ayudarle a desarrollar el problema: //----------------------------------------------------------------------- // Calcula y retorna el importe a pagar public double calcularImportePagar(int tipo.. imprimir(" Por licencias Silver. default: imptot4 += imppag. imprimir(" Por licencias Cobre... break.. default: return 4500*numero.. } Página 16 de 19 . imprimir(" Por licencias Cobre. 170. Los elementos del JComboBox se asigna de la siguiente manera: JComboBox cboTipo = new JComboBox(). Diseñe un programa para encuestar a un grupo de personas sobre sus preferencias en bebidas gaseosas entre: Pepsi Cola. Cuántas mujeres prefieren cada tipo de gaseosa. cuyos costos por día se dan en la tabla adjunta. 6. el importe del descuento y el importe a pagar por parte de un cliente. cboTipo. cboTipo.getSelectedIndex().UNIVERSIDAD NACIONAL TECNOLÓGICA DEL CONO SUR DE LIMA ESCUELA PROFESIONAL DE INGENIERIA DE SISTEMAS Nota: Usted tiene la libertar de cambiar. Cuántos varones prefieren cada tipo de gaseosa. agregar los métodos necesarios para desarrollar la aplicación. prefieren cada tipo de gaseosa. Como oferta. cboTipo.setBounds(155. 15.addItem("Bronze").addItem("Cobre").addItem("Gold"). add(cboTipo). cboTipo.addItem("Silver"). el hotel ofrece un descuento del 15% del importe bruto para más de 5 días de hospedaje y 10% en caso contrario. 23). Declare como globales a las variables absolutamente necesarias. Página 17 de 19 . Un hotel turístico tiene tres tipos de habitaciones. La empresa encuestadora desea saber lo siguiente: Cuántas personas. se obtiene con el método 5. El índice de los elementos del JComboBox getSelectedIndex(): cboTipo. Además. cboTipo. Coca Cola y Fanta. entre varones y mujeres. Diseñe un programa que determine el importe bruto. el programa debe mostrar información actualizada sobre el número de clientes por tipo de habitación y el importe total pagado para los clientes ingresados hasta el momento. modificar. los alumnos se categorizan de acuerdo a su promedio ponderado del ciclo anterior de la siguiente forma: Diseñe un programa que permita ingresar el promedio ponderado de un alumno por vez y obtener luego de cada ingreso la siguiente información: Número de alumnos ingresados. 7. El menor promedio ponderado. Página 18 de 19 . Declare como globales a las variables absolutamente necesarias. En una universidad Privada. El mayor promedio ponderado. Número de alumnos por categoría.UNIVERSIDAD NACIONAL TECNOLÓGICA DEL CONO SUR DE LIMA ESCUELA PROFESIONAL DE INGENIERIA DE SISTEMAS . B. 8. La cantidad total de unidades adquiridas de cada tipo de producto. Página 19 de 19 . Diseñe un programa que permita ingresar. Por cada registro.UNIVERSIDAD NACIONAL TECNOLÓGICA DEL CONO SUR DE LIMA ESCUELA PROFESIONAL DE INGENIERIA DE SISTEMAS El reporte quedaría así: Declare como globales a las variables absolutamente necesarias. El precio unitario promedio de cada tipo de producto. los registros con que cuenta la persona y muestre luego de cada ingreso: El número de registros de cada tipo de producto. Declare como globales a las variables absolutamente necesarias. el precio unitario del producto y la cantidad de unidades adquiridas. mediante un botón y de uno en uno. tiene anotado el tipo del producto adquirido. Una persona tiene registrado en un papel las compras que efectuó sobre los productos A. C y D a lo largo de todo un año.