12 octubre, 2018

Estructuras de Secuencia en Java


Un programa permite resolver muchos tipos de problemas, desde tareas relativamente sencillas a solucionar grandes problemas organizacionales y necesidades de las personas, sin embargo, debemos de empezar por lo básico creando programas que permitan resolver problemas que involucren instrucciones secuenciales.

Así, en el tema de hoy crearemos algoritmos en pseudocódigo y en Java que permitan resolver problemas que involucren instrucciones secuenciales.


Estos posts te servirán tanto si estás empezando de cero en el mundo de la programación, si eres estudiante de primer año y necesitas reforzar algunos temas, o si eres un curioso que le entró la duda y las ganas de aprender a programar. Sea el motivo que fuese por lo que estás aquí, te invito a seguir esta serie de publicaciones que estaré realizando, en donde aprenderás con los temas que te vaya enseñando lo básico de la programación para que puedas realizar tú mismo tus propios programas.

¡Bienvenido!

¿Qué e suna estructura de secuencia?


Una estructura de secuencia como su mismo nombre lo indica, es una secuencia ordenada y finita de pasos que deben de seguir ciertas instrucciones y al mismo tiempo dicha secuencia de instrucciones debe ser única como podemos apreciar en la siguiente imagen.

El ella se puede ver claramente 3 instrucciones que van de arriba hacia abajo y que se van a efectuar una a continuación de la otra siguiendo una secuencia única. Es decir, primero se ejecutará la acción "accion1", después la acción "accion2" y por último la acción "accion3".

Diagrama de flujo de la estructura de secuencia

A continuación, veremos algunos ejemplos para aplicar este concepto.

Vamos a resolver algunos problemas tanto en algoritmo empleando pseudocódigo y luego lo pasaremos a Java en donde crearemos una pequeña interfaz gráfica de usuario utilizando applets. Lo podríamos hacer sin applets y mostrar el resultado por consola, sin embargo, he decido utilizar applets para que podamos tener una interacción más amigable con el programa, ya que este es un curso de introducción a la algoritmia y a la programación en Java para los que recién están comenzando. Si tienes un poco más de experiencia, puedes imprimir el resultado por la consola de tu IDE favorita.

¿Qué herramientas necesito para programar en Java?


Básicamente necesitamos el JDK que es un programa que contiene las librerías de programación y el compilar de Java; y una IDE que es el entorno de desarrollo integrado para editar, compilar y ejecutar nuestros programas escritos en java. Este tema lo puedes ver a detalle dando clic al siguiente enlace.

Herramientas para desarrollar un programa en Java

Problemas


Problema 1

El cálculo del pago mensual de un empleado de una empresa se efectúa de la siguiente manera: el sueldo básico se calcula en base al número total de horas trabajadas basado en una tarifa horaria; al sueldo básico, se le aplica una bonificación del 20% obteniéndose el sueldo bruto; al sueldo bruto, se le aplica un descuento del 10% obteniéndose el sueldo neto. Escriba un programa que calcule e imprima el sueldo básico, el sueldo bruto y el sueldo neto de un trabajador.

Algoritmo

Inicio
   // Declaración de variables
   real horasTrab, tarifaHor
   real sueldoBas, montoBoni, sueldoBru, montoDesc, sueldoNet
   // Entrada de datos
   Leer horasTrab, tarifaHor
   // Proceso de cálculo
   sueldoBas = horasTrab*tarifaHor
   montoBoni = 0.20*sueldoBas
   sueldoBru = sueldoBas+montoBoni
   montoDesc = 0.10*sueldoBru
   sueldoNet = sueldoBru-montoDesc
   // Salida de resultados
   Imprimir sueldoBas, montoBoni, sueldoBru, montoDesc, sueldoNet
Fin


Programa


Código Fuente

import java.awt.event.*;
import java.awt.*;
import javax.swing.*;

public class Programa1 extends JApplet implements ActionListener{

 // Declaración de variables
 JButton btnProcesar;
 JTextArea txtS;
 JLabel lblHoras;
 JLabel lblTarifa;
 JTextField txtHoras;
 JTextField txtTarifa;
 JScrollPane scpScroll;

 // Crea la interfaz gráfica de usuario GUI
 public void init() {
  
  getContentPane().setLayout(null);
  
  lblHoras = new JLabel("Horas");
  lblHoras.setBounds(15, 15, 42, 23);
  getContentPane().add(lblHoras);
  
  lblTarifa = new JLabel("Tarifa");
  lblTarifa.setBounds(15, 39, 42, 23);
  getContentPane().add(lblTarifa);
  
  txtHoras = new JTextField();
  txtHoras.setBounds(61, 15, 107, 23);
  getContentPane().add(txtHoras);
  
  txtTarifa = new JTextField();
  txtTarifa.setBounds(61, 39, 107, 23);
  getContentPane().add(txtTarifa);
  
  btnProcesar = new JButton("Procesar");
  btnProcesar.setBounds(305, 15, 101, 23);
  btnProcesar.addActionListener(this);
  getContentPane().add(btnProcesar);
  
  txtS = new JTextArea();
  txtS.setFont(new Font("monospaced", 0, 12));
  
  scpScroll = new JScrollPane(txtS);
  scpScroll.setBounds(15, 75, 394, 130);
  getContentPane().add(scpScroll);
  
 }
 
 // Procesa eventos de tipo ActionEvent
 public void actionPerformed( ActionEvent e ){
  
  // Declaración de variables
  double horasTrab, tarifaHor;
  double sueldoBas, montoBoni, sueldoBru, montoDesc, sueldoNet;
  
  // Entrada de datos
  horasTrab = Double.parseDouble(txtHoras.getText());
  tarifaHor = Double.parseDouble(txtTarifa.getText());
  
  // Cálculo de montos
  sueldoBas = horasTrab*tarifaHor;
  montoBoni = 0.20*sueldoBas;
  sueldoBru = sueldoBas+montoBoni;
  montoDesc = 0.10*sueldoBru;
  sueldoNet = sueldoBru-montoDesc;
  
  // Salida de resultados
  txtS.setText("Sueldo básico : S/. " + sueldoBas + "\n");
  txtS.append ("Bonificación : S/. " + montoBoni + "\n");
  txtS.append ("Sueldo bruto : S/. " + sueldoBru + "\n");
  txtS.append ("Descuentos : S/. " + montoDesc + "\n");
  txtS.append ("Sueldo neto : S/. " + sueldoNet);
  
 }
 
}


Problema 2

Diseñe un programa que permita convertir una cantidad dada en metros a sus equivalentes en centímetros, pulgadas, pies y yardas. Considere la siguiente información:

1 metro = 100 centímetros
1 pie = 12 pulgadas
1 yarda = 3 pies
1 pulgada = 2.54 centímetros

Algoritmo

Inicio
   // Declaración de variables
   real xmetros, xpies, xpulgadas, xyardas, xcentimetros
   // Entrada de datos
   Leer xmetros
   // Proceso de conversión
   xcentimetros = xmetros*100
   xpulgadas = xcentimetros/2.54
   xpies = xpulgadas/12
   xyardas = xpies/3
   // Salida de resultados
   Imprimir xcentimetros, xpulgadas, xpies, xyardas
Fin


Programa


Código Fuente

import java.awt.event.*;
import java.awt.*;
import javax.swing.*;

public class Problema02 extends JApplet implements ActionListener {

 /**
  * 
  */
 private static final long serialVersionUID = 5564728598678681863L;
 
 // Declaración de variables
 JLabel lblMetros;
 JTextField txtMetros;
 JButton btnProcesar;
 JTextArea txtArea;
 JScrollPane scpScroll;

 // --------------------------------------------------------------------------
 // Crea la interfaz gráfica de usuario
 public void init() {

  // Le decimos que nosotros configuramos las dimensiones de los componentes
  getContentPane().setLayout(null);

  // Inicialización de componentes para la creación de la GUI
  lblMetros = new JLabel("Metros: ");
  lblMetros.setBounds(15, 15, 100, 25);
  getContentPane().add(lblMetros);

  txtMetros = new JTextField();
  txtMetros.setBounds(100, 15, 100, 25);
  getContentPane().add(txtMetros);

  btnProcesar = new JButton("Procesar");
  btnProcesar.setBounds(320, 15, 100, 25);
  btnProcesar.addActionListener(this);// Asociamos un escuchador al boton para que cada vez que se llame al control
           // con un click se ejecute una acción y se invoque al método actionPerformed
  getContentPane().add(btnProcesar); 

  txtArea = new JTextArea();
  txtArea.setFont(new Font("Dialog", Font.PLAIN, 14));

  scpScroll = new JScrollPane(txtArea);
  scpScroll.setBounds(15, 50, 405, 150);
  getContentPane().add(scpScroll);

 }

 // --------------------------------------------------------------------------
 // Procesa eventos de tipo ActionEvent
 public void actionPerformed(ActionEvent e) {

  // Al dar click al control que tiene asociado una acción de evento
  // se ejecutará lo especificado acontinuación

  // Declaración de Variables
  double metros, centimetros, pulgadas, pies, yardas;

  // Entrada de Datos
  metros = Double.parseDouble(txtMetros.getText());

  // Cálculo de la operación
  centimetros = metros * 100;
  pulgadas = centimetros / 2.54;
  pies = pulgadas / 12;
  yardas = pies / 3;

  // Imprimir Resultados
  txtArea.setText("Resultado" + "\n");
  txtArea.append("En centimentros: " + centimetros + " cm" + "\n");
  txtArea.append("En pulgadas: " + pulgadas + " in" + "\n");
  txtArea.append("En pies: " + pies + " ft" + "\n");
  txtArea.append("En yardas: " + yardas + " yd" + "\n");
 }
}

Problema 3

Escriba un programa que calcule el área total y el volumen de un cilindro. Considere las siguientes fórmulas: A = 2πr(r+h) y V = πr2h; siendo A el área, V el volumen, r el radio y h la altura.

Algoritmo

Inicio
   // Declaración de variables
   real r, h, area, volumen
   // Entrada de datos
   Leer r, h
   // Proceso de cálculo
   area = 2*3.1416*r*(r+h)
   volumen = 2*3.1416*r*r*h
   // Salida de resultados
   Imprimir area, volumen
Fin


Programa


Código Fuente

import java.awt.event.*;
import java.awt.*;
import javax.swing.*;

public class Problema03 extends JApplet implements ActionListener {

 /**
  * 
  */
 private static final long serialVersionUID = 766293635189425596L;

 // Declaración de variables
 JLabel lblRadio, lblAltura;
 JTextField txtRadio, txtAltura;
 JButton btnProcesar;
 JTextArea txtArea;
 JScrollPane scpScroll;

 // --------------------------------------------------------------------------
 // Crea la interfaz gráfica de usuario
 public void init() {

  // Nosotros creamos la interfaz grafica de usuario
  getContentPane().setLayout(null);

  // Inicialización de componentes
  lblRadio = new JLabel("Radio: ");
  lblRadio.setBounds(15, 15, 100, 25);// setBounds(pos x, pos y, ancho, alto)
  getContentPane().add(lblRadio); // Añadimos el componente al panel de contenido

  lblAltura = new JLabel("Altura");
  lblAltura.setBounds(15, 45, 100, 25);
  getContentPane().add(lblAltura);

  txtRadio = new JTextField();
  txtRadio.setBounds(100, 15, 100, 25);
  getContentPane().add(txtRadio);

  txtAltura = new JTextField();
  txtAltura.setBounds(100, 45, 100, 25);
  getContentPane().add(txtAltura);

  btnProcesar = new JButton("Procesar");
  btnProcesar.setBounds(320, 15, 100, 25);
  btnProcesar.addActionListener(this); // Al seleccionar el control ejecutaremos una acción (ActionEvent) y
           // se invocara al método actionPerformed (ActionEvent e)
  getContentPane().add(btnProcesar);

  txtArea = new JTextArea();
  txtArea.setFont(new Font("Monospaced", Font.BOLD | Font.ITALIC, 14));

  scpScroll = new JScrollPane(txtArea);
  scpScroll.setBounds(15, 80, 405, 135);
  getContentPane().add(scpScroll);

 }

 // --------------------------------------------------------------------------
 // Procesa eventos de tipo ActionEvent
 public void actionPerformed(ActionEvent e) {

  // Al invocar este método se ejecutará lo que tengamos defino aquí

  // Paso (1) - Declaración de variables
  double radio, altura, area, volumen;

  // Paso (2) - Entrada de datos
  radio = Double.parseDouble(txtRadio.getText());
  altura = Double.parseDouble(txtAltura.getText());

  // Paso (3) - Cálcular área y volumen del cilindro
  area = 2 * Math.PI * radio * (radio + altura);
  volumen = 2 * Math.PI * radio * radio * altura;

  // Paso (4) - Salida de Resultados
  // Limpiamos el area de texto cada vez que seleccionemos el control Procesar
  txtArea.setText("");
  // Anexamos los resultados al area de texto
  txtArea.append("Resultado" + "\n");
  txtArea.append("Area del Cilindro: " + area + "\n");
  txtArea.append("Volumen del Cilindro: " + volumen);
 }
}


Problema 4

Débora, Raquel y Séfora aportan cantidades de dinero para formar un capital. Diseñe un programa que determine el capital formado y el porcentaje de dicho capital que aporta cada uno.

Algoritmo

Inicio
   // Declaración de variables
   real dineDeb, dineRaq, dineSef, capital, porcDeb, porcRaq, porcSef
   // Entrada de datos
   Leer dineDeb, dineRaq, dineSef
   // Halla el capital formado
   capital = dineDeb + dineRaq + dineSef
   // Determine los porcentajes de cada capital respecto del total
   porcDeb = dineDeb*100/capital
   porcRaq = dineRaq*100/capital
   porcSef = dineSef*100/capital
   // Salida de resultados
   Imprimir capital, porcDeb, porRaq, porcSef
Fin


Programa


Código Fuente

import java.awt.event.*;
import java.awt.*;
import javax.swing.*;

public class Problema04 extends JApplet implements ActionListener {
 
 /**
  * 
  */
 private static final long serialVersionUID = 7787644423584641837L;
 
 // Declaración de variables
 JLabel lblDineroRaquel, lblDineroDebora, lblDineroSefora;
 JTextField txtDineroRaquel, txtDineroDebora, txtDineroSefora;
 JButton btnProcesar;
 JTextArea txtArea;
 JScrollPane scpScroll;
 
 //--------------------------------------------------------------------------
 // Crea la interfaz gráfica de usuario 
 public void init() {
  
  // Indicamos que queremos un posicionamiento absoluto
  // Esto significa que nosostros trabajaremos todo el código
  // para la creación de nuestra GUI
  getContentPane().setLayout(null);
  
  // Inicialización de componentes
  lblDineroRaquel = new JLabel("Dinero de Raquel: ");
  lblDineroRaquel.setBounds(15,15,110,25);
  getContentPane().add(lblDineroRaquel);
  
  lblDineroDebora = new JLabel("Dinero de Débora");
  lblDineroDebora.setBounds(15,45,100,25);
  getContentPane().add(lblDineroDebora);
  
  lblDineroSefora = new JLabel("Dinero de Séfora");
  lblDineroSefora.setBounds(15,75,100,25);
  getContentPane().add(lblDineroSefora);
  
  txtDineroRaquel = new JTextField();
  txtDineroRaquel.setBounds(130,15,100,25);
  getContentPane().add(txtDineroRaquel);
  
  txtDineroDebora = new JTextField();
  txtDineroDebora.setBounds(130,45,100,25);
  getContentPane().add(txtDineroDebora);
  
  txtDineroSefora = new JTextField();
  txtDineroSefora.setBounds(130,75,100,25);
  getContentPane().add(txtDineroSefora);
  
  btnProcesar = new JButton("Procesar");
  btnProcesar.setBounds(320,15,100,25);
  // Importante: No olvidar asociar el control el evento de acción
  // para invocar al método actionPerformed
  btnProcesar.addActionListener(this);
  getContentPane().add(btnProcesar);
  
  txtArea = new JTextArea();
  txtArea.setFont(new Font("DialogInput", Font.BOLD + Font.ITALIC, 10));
  
  scpScroll = new JScrollPane(txtArea);
  scpScroll.setBounds(15,105,405,110);
  getContentPane().add(scpScroll); 
  
 }
 
 //--------------------------------------------------------------------------
 // Procesa eventos de tipo ActionEvent
 public void actionPerformed( ActionEvent e ){
  
  // Al invocar a este método se ejecutará toda la acción realizada a continuación
  
  // Paso (1) - Declaración de Variabled
  double dRaquel, dDebora, dSefora;
  double total, pRaquel, pDebora, pSefora;
  
  // Paso (2) - Entrada de datos
  dRaquel = Double.parseDouble(txtDineroRaquel.getText());
  dDebora = Double.parseDouble(txtDineroDebora.getText());
  dSefora = Double.parseDouble(txtDineroSefora.getText());
  
  // Paso (3) - Proceso de cálculo
  total = dRaquel + dDebora + dSefora;
  pRaquel = (dRaquel * 100) / total;
  pDebora = (dDebora * 100) / total;
  pSefora = (dSefora * 100) / total;
  
  // Paso (4) - Salida de Resultados
  txtArea.setText("Resultado" + "\n");
  txtArea.append("Capital: " + total + "\n");
  txtArea.append("Porcentaje de Raquel: " + pRaquel + "\n");
  txtArea.append("Porcentaje de Débora: " + pDebora + "\n");
  txtArea.append("Porcentaje de Séfora:" + pSefora);

 }
}


Problema 5

Diseñe un algoritmo que lea un número entero de cinco cifras y determine la cifra central del número. Así, si el número ingresado fuera 45781, la cifra central a mostrar es 7.

Algoritmo

Inicio
   // Declaración de variables
   entero numero, centro
   // Entrada de datos
   Leer numero
   // Determina la cifra central
   centro = (numero%1000)/100
   // Salida de resultados
   Imprimir centro
Fin


Programa


Código Fuente

import java.awt.event.*;
import java.awt.*;
import javax.swing.*;

public class Problema05 extends JApplet implements ActionListener {
 
 /**
  * 
  */
 private static final long serialVersionUID = -6780664428476123189L;
 
 // Declaración de variables
 JLabel lblNumero;
 JTextField txtNumero;
 JButton btnProcesar;
 JTextArea txtArea;
 JScrollPane scpScroll; 
 
 //--------------------------------------------------------------------------
 // Crea la interfaz gráfica de usuario 
 public void init() {
  
  // Definiremos un posicionamineto absoluto
  // En otras palabras trabajeremos todo el código y difiniremos
  // la psoicón y el tamaño de nuestro elemento gráficos
  getContentPane().setLayout(null);
  
  // Incialización de componentes
  lblNumero = new JLabel("Número: ");
  lblNumero.setBounds(15,15,100,25);
  getContentPane().add(lblNumero);
    
  txtNumero = new JTextField();
  txtNumero.setBounds(100,15,100,25);
  getContentPane().add(txtNumero);
  
  btnProcesar = new JButton("Procesar");
  btnProcesar.setBounds(320,15,100,25);
  // Para que este control pueda ejecutar una acción tenemos que 
  // asociarle un listener o detector de eventos, puesto que implementamos 
  // la interfaz ActionListener
  btnProcesar.addActionListener(this);
  getContentPane().add(btnProcesar);
  
  txtArea = new JTextArea();
  txtArea.setFont(new Font("Serif", Font.PLAIN, 12));
  
  scpScroll = new JScrollPane(txtArea);
  scpScroll.setBounds(15,60,405,150);
  getContentPane().add(scpScroll);

 }
 
 //--------------------------------------------------------------------------
 // Procesa eventos de tipo ActionEvent
 public void actionPerformed( ActionEvent e ){

  // Una vez hecho click en el control Procesar ejecutamos una acción
  // y se invoca al método actionPerformed que contiene la acción realizada
  
  // Paso (1) - Declaración de Variabled
  int numero, ccentral;
  
  // Paso (2) - Entrada de datos
  numero = Integer.parseInt(txtNumero.getText());
  
  // Paso (3) Cálculo de la cifra central del númerp
  ccentral = numero % 1000 / 100;
  
  // Paos (4) - Salida de Resultados
  txtArea.setText("Resultado" + "\n");
  txtArea.append("La cifra del medio es: " + ccentral);
  
 }
}


Problema 6

Diseñe un algoritmo para repartir una cantidad de dinero a tres personas en forma proporcional a sus edades. El monto que le corresponde a cada persona se calcula con la siguiente fórmula: monto de la persona = edad de la persona x monto a repatir / suma total de dades

Algoritmo

Inicio
   // Declaración de variables
   real montoP1, montoP2, montoP3, montoRepartir
   entero edadP1, edadP2, edadP3, sumaEdades
   // Entrada de datos
   Leer montoRepartir, edadP1, edadP2, edadP3
   // Calcula la suma total de edades
   sumaEdades = edadP1 + edadP2 + edadP3
   // Calcula la cantidad de dinero de cada persona
   montoP1 = (edadP1 * montoRepartir) / sumaEdades
   montoP2 = (edadP2 * montoRepartir) / sumaEdades
   montoP3 = (edadP3 * montoRepartir) / sumaEdades
   // Salida de resultados
   Imprimir montoP1, montoP2, montoP3
Fin


Programa


Código Fuente

import java.awt.event.*;
import java.awt.*;
import javax.swing.*;

public class Problema06 extends JApplet implements ActionListener {
 
 /**
  * 
  */
 private static final long serialVersionUID = -144922557423776548L;
 
 // Declaración de variables
 JLabel lblMonto, lblEdad1, lblEdad2, lblEdad3;
 JTextField txtMonto, txtEdad1, txtEdad2, txtEdad3;
 JButton btnProcesar;
 JTextArea txtArea;
 JScrollPane scpScroll;
 
 //--------------------------------------------------------------------------
 // Crea la interfaz gráfica de usuario 
 public void init() {

  // Definiremos un posicionamineto absoluto, donde trabajaremos
  // todo el código, es decir definiremos la posición y el tamaño 
  // de los elementos gráficos.
  getContentPane().setLayout(null);
  
  // Incialización de componentes sgráficos
  lblMonto = new JLabel("Monto: ");
  lblMonto.setBounds(15,15,100,25);
  getContentPane();add(lblMonto);
  
  lblEdad1 = new JLabel("Edad 1: ");
  lblEdad1.setBounds(15,45,100,25);
  getContentPane().add(lblEdad1);
  
  lblEdad2 = new JLabel("Edad 2: ");
  lblEdad2.setBounds(15,75,100,25);
  getContentPane().add(lblEdad2);
  
  lblEdad3 = new JLabel("Edad 3: ");
  lblEdad3.setBounds(15,105,100,25);
  getContentPane().add(lblEdad3);
  
  txtMonto = new JTextField();
  txtMonto.setBounds(100,15,100,25);
  getContentPane().add(txtMonto);
  
  txtEdad1 = new JTextField();
  txtEdad1.setBounds(100,45,100,25);
  getContentPane().add(txtEdad1);
  
  txtEdad2 = new JTextField();
  txtEdad2.setBounds(100,75,100,25);
  getContentPane().add(txtEdad2);
  
  txtEdad3 = new JTextField();
  txtEdad3.setBounds(100,105,100,25);
  getContentPane().add(txtEdad3);
  
  btnProcesar = new JButton("Procesar");
  btnProcesar.setBounds(320,15,100,25);
  // Para que este control pueda ejjecutar una acción
  // tenemos que asociarle un escuchador o detector de eventos
  // puesto que implementamos la interfaz ActionListener
  btnProcesar.addActionListener(this);
  getContentPane().add(btnProcesar);
  
  txtArea = new JTextArea();
  txtArea.setFont(new Font("Sanserif", Font.ITALIC, 10));
  
  scpScroll = new JScrollPane(txtArea);
  scpScroll.setBounds(15,140,405,150);
  getContentPane().add(scpScroll);
  
 }
 //--------------------------------------------------------------------------
 // Procesa eventos de tipo ActionEvent
 public void actionPerformed( ActionEvent e ){
  
  // Si hice click en el control Procesar
  /**/
  
  // Paso (1) - Declaración de Variables
  double monto, mp1, mp2, mp3;
  int e1, e2, e3, sumaEdad;
  
  // Paso (2) - Entrada de datos
  monto = Double.parseDouble(txtMonto.getText());
  e1 = Integer.parseInt(txtEdad1.getText());
  e2 = Integer.parseInt(txtEdad2.getText());
  e3 = Integer.parseInt(txtEdad3.getText());
  
  // Paso (3) - Cáclcular monto por persona
  sumaEdad = e1 + e2 + e3;
  mp1 = e1 * monto / sumaEdad;
  mp2 = e2 * monto / sumaEdad;
  mp3 = e3 * monto / sumaEdad;
  
  // Paso (4) - Salida de resultados
  txtArea.setText("Resultado" + "\n");
  txtArea.append("Suma de edades: " + sumaEdad + "\n");
  txtArea.append("Monto persona 1: " + mp1 + "\n");
  txtArea.append("Monto persona 2: " + mp2 + "\n");
  txtArea.append("Monto persona 3: " + mp3 + "\n");
  txtArea.append("Moto Total: " + (mp1 + mp2 + mp3)); 

 }
}


Problema 7

Una tienda ha puesto en oferta la venta de un producto ofreciendo un 11% de descuento sobre el importe de la compra. Diseñe un algoritmo que determine el importe de la compra, el importe del descuento y el importe a pagar por la compra de cierta cantidad de unidades del producto.

Algoritmo

Inicio
   // Declaración de variables
   real precio, importecom, importedes, importepag
   entero unidades
   // Entrada de datos
   Leer precio, unidades
   // Cálculo de importes
   importecom = unidades*precio
   importedes = 0.11*importecom
   importepag = importecom – importedes
   // Salida de resultados
   Imprimir importecom, importedes, importepag
Fin


Programa


Código Fuente

import java.awt.event.*;
import java.awt.*;
import javax.swing.*;

public class Problema07 extends JApplet implements ActionListener {
 
 /**
  * 
  */
 private static final long serialVersionUID = 4922589495625150441L;
 
 // Declaración de variables
 JLabel lblPrecio, lblCantidad;
 JTextField txtPrecio, txtCantidad;
 JButton btnProcesar;
 JTextArea txtArea;
 JScrollPane scpScroll;
 
 //--------------------------------------------------------------------------
 // Crea la interfaz gráfica de usuario 
 public void init() {

  // Aquí definiremos un posicionamiento absoluto, es decir que
  // nosotros mismos definiremos la posición y el tamaño de los
  // elementos graficos declarados anteriormente.
  getContentPane().setLayout(null);
  
  // A continuación inicializaremos nuestros componentes
  lblPrecio = new JLabel("Precio: ");
  lblPrecio.setBounds(15,15,100,25); // setBounds(posición x,y | tamaño ancho y alto)
  getContentPane().add(lblPrecio); // Añadimo el elemento al panel de contenido.
  
  lblCantidad = new JLabel("Cantidad");
  lblCantidad.setBounds(15,45,100,25);
  getContentPane().add(lblCantidad);
  
  txtPrecio = new JTextField();
  txtPrecio.setBounds(100,15,100,25);
  getContentPane().add(txtPrecio);
  
  txtCantidad = new JTextField();
  txtCantidad.setBounds(100,45,100,25);
  getContentPane().add(txtCantidad);
  
  btnProcesar = new JButton("Procesar");
  btnProcesar.setBounds(320,15,100,25);
  // Para que este control puedad ejecutar una acción
  // tenemos que asociarle un escuchador o detector de eventos
  // puesto que implementamos la inetrfaz ActionListener
  btnProcesar.addActionListener(this); // Al dar click se invoca al método actionPerformed
  getContentPane().add(btnProcesar);
  
  txtArea = new JTextArea();
  txtArea.setFont(new Font("monospaced",0,14));
  
  scpScroll = new JScrollPane(txtArea);
  scpScroll.setBounds(15,80,405,130);
  getContentPane().add(scpScroll);

 }
 //--------------------------------------------------------------------------
 // Procesa eventos de tipo ActionEvent
 public void actionPerformed( ActionEvent e ){

  // Si hiciste click al control Procesar
  // Ejecutamos la acción siguiente
  
  // Un algoritmo que puede ser ejecutado por un computador se le denomina
  // algoritmos computacionales. Todo algoritmo computacional puede
  // dividirse en 4 etapas.
  
  // Paso (1) - Declaración de variabled
  // Aquí decladaremos las variables a utilizar en el programa
  int cantidad;
  double precio,icompra,idescuento,ipagar;
  
  // Paso (2) - Entrada de datos
  // Aquí debemos de obtener los valores de la caja de texto ingresados y
  // almacenarlo en las variables de entrada
  cantidad = Integer.parseInt(txtCantidad.getText());
  precio = Double.parseDouble(txtPrecio.getText());
  
  // Paso (3) - Proceso de cálculo
  // Realizar los cálculos del programa
  icompra = cantidad * precio;
  idescuento = 0.11 * icompra;
  ipagar = icompra - idescuento;
  
  // Paso (4) - Salida de resultados
  // Aquí imprimiremos los resultados en la pantalla
  // Pero antes limpiamos la pantalla, esto para no repetir el resultado
  // cada vez que presionemos el control Procesar
  txtArea.setText("");
  // Ahora si anezamos los resultados
  txtArea.append("Resultado" + "\n");
  txtArea.append("Importe de compra: " + icompra + "\n");
  txtArea.append("Importe de descuento: " + idescuento + "\n");
  txtArea.append("Importe a pagar: " + ipagar) ;
  // Recordar que "\n" es un salto de linea  

 }
}

Resumen


Las instrucciones secuenciales se efectúan una a continuación de la otra y siguiendo un orden único que va de arriba hacia abajo, por lo tanto, si una variable requiere del resultado de otras variables, estás deben ser declaradas, ingresadas y calculadas con anterioridad.

Descargar Ejercicios resueltos


 Descargar archivo

Puedes completar lo aprendido asistiendo el material en video.

   Clic aquí

¡Acabas de ver el tema Estructuras de Secuencia del curso de Introducción a la Algoritmia y a la programación en Java! ¡Fácil verdad! Ir al índice


Asimismo, si deseas saber más acerca de estos temas, recuerda que puedes comprar la guía completa con todos los temas, ejercicios, evaluaciones resueltas, proyectos y más; para ello, tienes que ingresar al siguiente enlace. Y si eres seguidor de la comunidad Aprendec puedes acceder a un descuento del -%32.

¡Quiero esto!
¡Qué pases un buen día!

No hay comentarios, ¡cuéntame algo!

Me gustaría saber tu opinión. ¡Saludos!