Está en la página 1de 121

Algoritmia y Programación

Oscar Bedoya
oscarbed@eisc.univalle.edu.co
Problema: Desarrollar una aplicación Java que solicite la
edad de una persona e indique si es mayor de edad o no
Problema: Desarrollar una aplicación Java que solicite la
edad de una persona e indique si es mayor de edad o no

int edad;
edad = Integer.parseInt(JOptionPane.showInputDialog(“Digite su edad”));
Instrucción if – else
Instrucción if - else
Si la edad que el usuario digitó es menor que 18
Instrucción if - else
Si la edad que el usuario digitó es menor que 18
muestre el mensaje “Es menor de edad”
Instrucción if - else
Si la edad que el usuario digitó es menor que 18
muestre el mensaje “Es menor de edad”
Sino
muestre el mensaje “Es mayor de edad”
Instrucción if - else
Si ( edad<18 )
muestre un mensaje indicando “Es menor de edad”
Sino
muestre un mensaje indicando “Es mayor de edad”

Las condiciones en
Java se colocan entre
paréntesis
Instrucción if - else
Si ( edad<18 )
JOptionPane.showMessageDialog(null,“Es menor de edad”);
Sino
JOptionPane.showMessageDialog(null,“Es mayor de edad”);
Instrucción if - else
if ( edad<18 ){
JOptionPane.showMessageDialog(null,“Es menor de edad”);
}
sino{
JOptionPane.showMessageDialog(null,“Es mayor de edad”);
}
Instrucción if - else
if ( edad<18 ){
JOptionPane.showMessageDialog(null,“Es menor de edad”);
}
else{
JOptionPane.showMessageDialog(null,“Es mayor de edad”);
}
Instrucción if - else
if (condición) {
conjunto de instrucciones que se deben realizar si se
cumple la condición
}
else{
conjunto de instrucciones que se deben realizar si no
se cumple la condición
}
import javax.swing.*;

public class Ejemplo{


public static void main(String a[]){

int edad;
edad = Integer.parseInt(JOptionPane.showInputDialog("Digite su edad "));

if (edad<18){
JOptionPane.showMessageDialog(null,"Usted es menor de edad");
}
else{
JOptionPane.showMessageDialog(null,"Usted es mayor de edad");
}
System.exit(0);
}
}
Instrucción if - else
Problema: Desarrollar una aplicación Java que solicite un número
entero y determine si es positivo
import javax.swing.*;

public class Ejemplo42{


public static void main(String a[]){

int numero;
numero = Integer.parseInt(JOptionPane.showInputDialog("Digite un número") );

if (numero>0){
JOptionPane.showMessageDialog(null, numero + “ es positivo");
}

System.exit(0);
}
}
import javax.swing.*;

public class Ejemplo42{


public static void main(String a[]){

int numero;
numero = Integer.parseInt(JOptionPane.showInputDialog("Digite un número") );

if (numero>0){
JOptionPane.showMessageDialog(null, numero + “ es positivo");
}
No en todos los
System.exit(0); casos se coloca else
}
}
Instrucción if - else
Problema: Desarrollar una aplicación Java que solicite un número
entero y determine si es igual, o no, a 1000
Instrucción if - else

Operador Significado
== Igualdad
!= Diferente
> Mayor que
< Menor que
>= Mayor o igual que
<= Menor o igual que
Instrucción if - else
Problema: Desarrollar una aplicación Java que lea un número real y
determine si pertenece, o no, al rango [10.24-200.21]
Instrucción if - else

Operador Significado
|| o
&& y
Instrucción if - else
Problema: Desarrollar una aplicación Java que solicite la edad de un
usuario y muestre un mensaje indicando si es menor de edad, adulto o
pertenece a la tercera edad

Menor de edad [1-18)


Adulto [18-60)
Tercera edad [60-100)
Instrucción if - else
Problema: Desarrollar una aplicación Java que dado un número entero
indique el mes correspondiente.
Si es un número de mes no válido, se le debe indicar al usuario
Instrucción if - else
Problema: Desarrollar una aplicación Java que lea dos números reales
(A y B) y que determine si:
A es mayor que B
A es igual a B
A es menor que B
Instrucción if - else
Problema: Desarrollar una aplicación Java que lea dos números reales
(A y B) y que determine si:
A es mayor que B
A es igual a B
A es menor que B
Metodología para resolver problemas

1. Entender el problema
2. Identificar los objetos del dominio del problema
3. Crear el diagrama de clases
4. Desarrollar los algoritmos para cada uno de los
métodos de las clases
5. Programar cada clase en Java
6. Editar y compilar las clases desarrolladas
7. Ejecutar la clase principal
Metodología para resolver problemas
Problema: Encontrar el área y el perímetro de un
rectángulo de dimensiones alto X ancho

alto

ancho
Metodología para resolver problemas
1. Entender el problema
• El perímetro de un rectángulo es la suma de sus lados
• El área de un rectángulo es alto X ancho

Entender el problema depende de los conocimientos que usted


tenga sobre el tema, suponga que le plantean el siguiente
problema:

Encontrar la longitud de onda L, para una velocidad relativa


de onda Vr, donde se presente el efecto Doppler
Metodología para resolver problemas
2. Identificar los objetos del dominio del problema

El objeto del dominio del problema es un rectángulo de


dimensiones especificadas por el usuario
Rectángulo

alto
ancho
Rectángulo

int alto;
int ancho;
int area;
int perimetro;
Rectángulo

int alto;
int ancho;
miRectángulo1 miRectángulo2

4 3
2 9
Rectángulo

alto
ancho
Rectángulo

alto
ancho Qué operaciones
debe tener la clase
Rectángulo para
resolver el
problema
Rectángulo

int alto;
int ancho;
int area;
int perimetro;
obtenerArea()
obtenerPerimetro()
Clase Rectángulo
miRectángulo1 miRectángulo2

4 3
2 9
8 27
Rectángulo
12 24
obtenerArea() obtenerArea()
int alto; obtenerPerimetro() obtenerPerimetro()

int ancho;
int area;
int perimetro;
obtenerArea()
obtenerPerimetro()
Clase Rectángulo
miRectángulo1 miRectángulo2

4 3
2 9
8 27
Rectángulo
12 24
obtenerArea() obtenerArea()
int alto; obtenerPerimetro() obtenerPerimetro()

int ancho;
int area; A partir de la clase Rectangulo
se pueden crear objetos
int perimetro;
obtenerArea()
obtenerPerimetro()
Clase Rectángulo
miRectángulo1 miRectángulo2

4 3
2 9
8 27
Rectángulo
12 24
obtenerArea() obtenerArea()
int alto; obtenerPerimetro() obtenerPerimetro()

int ancho;
int area; A partir de la clase Rectangulo
se pueden crear objetos
int perimetro;
¿Quién creará los objetos?
obtenerArea()
obtenerPerimetro()
Clase Rectángulo
Calculadora
double numeroA;
double numeroB;
sumar()
restar()
multiplicar()
dividir()
calcularRaiz()
calcularSeno()
calcularCoseno()
Calculadora
double numeroA; UsoCalculadora
double numeroB;
usa
sumar()
restar()
multiplicar()
dividir()
calcularRaiz()
calcularSeno()
calcularCoseno()
Calculadora
double numeroA; UsoCalculadora
double numeroB;
usa
sumar()
restar()
multiplicar() main()
dividir()
calcularRaiz()
calcularSeno()
calcularCoseno()
miRectángulo1 miRectángulo2

4 3
2 9
8 27
Rectángulo
12 24
obtenerArea() obtenerArea()
int alto; obtenerPerimetro() obtenerPerimetro()

int ancho;
int area; Además de la clase Rectángulo, se
necesita una clase con un método
int perimetro; main, que cree los objetos de la
obtenerArea() clase Rectángulo

obtenerPerimetro()
Clase Rectángulo
Metodología para resolver problemas
3. Crear el diagrama de clases

Rectángulo
UsoRectangulo
int alto;
usa
int ancho;
int area;
int perimetro; main()
obtenerArea()
obtenerPerimetro()
Metodología para resolver problemas

Calculadora
double numeroA; UsoCalculadora
double numeroB;
usa
sumar()
restar()
multiplicar() main()
dividir()
calcularRaiz()
calcularSeno()
calcularCoseno()
Rectángulo
UsoRectangulo
int alto;
usa
int ancho;
int area;
int perimetro; main()

obtenerArea()
obtenerPerimetro() Clase Principal
Clase Base
Rectángulo

int alto;
int ancho;
usa
int area; UsoRectangulo
int perimetro;
obtenerArea();
obtenerPerimetro() main()
usa
JOptionPane
usa

showMessageDialog() System

showInputDialog()
exit();
Metodología para resolver problemas
4. Desarrollar los algoritmos para cada uno de los métodos de las clases

obtenerArea()
Inicio
Multiplicar la base y la altura
Mostrar ese valor
Fin
Metodología para resolver problemas
4. Desarrollar los algoritmos para cada uno de los métodos de las clases

obtenerPerimetro()
Inicio
Sumar: 2 veces la base y 2 veces la altura
Mostrar ese valor
Fin
Metodología para resolver problemas

5. Programar cada clase en Java


6. Editar y compilar las clases desarrolladas
7. Ejecutar la clase principal
Problema: Encontrar el
área y el perímetro de
un rectángulo de
dimensiones dadas
Problema: Encontrar el
área y el perímetro de
un rectángulo de
dimensiones dadas

El área es 8
El perímetro es 12
Problema: Encontrar el
área y el perímetro de
un rectángulo de
dimensiones dadas

2 ¿A qué clase pertenece


este objeto?
4

El área es 8
El perímetro es 12
Problema: Encontrar el
área y el perímetro de
un rectángulo de
dimensiones dadas
Rectángulo
int alto;
int ancho;
int area;
2
int perimetro;
4
obtenerArea()
obtenerPerimetro()
El área es 8
El perímetro es 12
Problema: Encontrar el
área y el perímetro de
un rectángulo de
dimensiones dadas

2 ¿Cuáles son los atributos de la clase


Rectangulo?
4

El área es 8
El perímetro es 12
Problema: Encontrar el
área y el perímetro de
un rectángulo de
dimensiones dadas

2 ¿Cuáles son los métodos


(operaciones) que debe tener la clase
4 Rectangulo para solucionar el
problema?

El área es 8
El perímetro es 12
Rectángulo

int alto; UsoRectangulo


int ancho; usa
int area;
int perimetro;
obtenerArea() main()

obtenerPerimetro()
Clase Principal
Clase Base
Rectángulo
int alto;
int ancho;
int area;
int perimetro;
obtenerArea()
obtenerPerimetro()
public class Rectangulo{

}
Rectángulo
int alto;
int ancho;
int area;
int perimetro;
obtenerArea()
obtenerPerimetro()
public class Rectangulo{
int alto, ancho, area, perimetro;

}
Rectángulo
int alto;
int ancho;
int area;
int perimetro;
obtenerArea()
obtenerPerimetro()
public class Rectangulo{
int alto, ancho, area, perimetro;

}
public class Rectangulo{
int alto, ancho, area, perimetro;

public void obtenerArea(){


//Acá se coloca lo que debe realizar el método
}

}
Metodología para resolver problemas

obtenerArea()
Inicio
Multiplicar la base y la altura
Mostrar ese valor
Fin
public class Rectangulo{
int alto, ancho, area, perimetro;

public void obtenerArea(){


? ? ?
}

}
public class Rectangulo{
int alto, ancho, area, perimetro;

public void obtenerArea(){


area = alto*ancho;
JOptionPane.showMessageDialog(null,“Area:” + area);
}

}
Rectángulo
int alto;
int ancho;
int area;
int perimetro;
obtenerArea()
obtenerPerimetro()
import javax.swing.*;

public class Rectangulo{


int alto, ancho, area, perimetro;

public void obtenerArea(){


area = alto*ancho;
JOptionPane.showMessageDialog(null,“Area:” + area);
}
public void obtenerPerimetro(){

}
}
import javax.swing.*;

public class Rectangulo{


int alto, ancho, area, perimetro;

public void obtenerArea(){


area = alto*ancho;
JOptionPane.showMessageDialog(null,“Area:” + area);
}
public void obtenerPerimetro(){
perimetro = 2*alto + 2*ancho;
JOptionPane.showMessageDialog(null, “Per.:” + perimetro);
}
}
import javax.swing.*; La clase base se
compila pero no se
public class Rectangulo{
ejecuta
int alto, ancho, area, perimetro;

public void obtenerArea(){


area = alto*ancho;
JOptionPane.showMessageDialog(null,“Area:” + area);
}
public void obtenerPerimetro(){
perimetro = 2*alto + 2*ancho;
JOptionPane.showMessageDialog(null, “Per.:” + perimetro);
}
}
public void obtenerArea(){
area = alto*ancho;
JOptionPane.showMessageDialog(null, “Area:” + area);
}

El método obtenerArea() se declara como public, esto indica que el


método podrá ser utilizado por una clase diferente a la clase
Rectangulo

La palabra void indica que el método no devuelve ningún valor


Rectángulo

int alto; UsoRectangulo


int ancho; usa
int area;
int perimetro;
obtenerArea() main()

obtenerPerimetro()
Clase Principal
Clase Base
Problema: Calcular el área de un círculo de radio
especificado por el usuario

1.2 0.8
2.7
Problema: Calcular el área de un círculo de radio
especificado por el usuario

1.2 0.8
2.7

• Cuál es la clase base en este caso


• Cuáles son los atributos y métodos de la clase base
Problema: Calcular el área de un círculo de radio
especificado por el usuario

1.2 0.8
2.7

Circulo UsoCirculo
usa
double radio;
double area;
obtenerArea() main()

Clase Base Clase Principal


Rectángulo

int alto; UsoRectangulo


int ancho; usa
int area;
int perimetro;
obtenerArea() main()

obtenerPerimetro()
Clase Principal
Clase Base
Rectángulo

int alto; UsoRectangulo


int ancho; usa
int area;
int perimetro;
obtenerArea() main()

obtenerPerimetro()
Clase Principal
Clase Base 1. Crear un objeto de la
clase Rectángulo
2. Colocarle valores
específicos al alto y al
ancho
3. Utilizar los métodos
para calcular y mostrar el
área y el perímetro
import javax.swing.*;

public class UsoRectangulo{


public static void main(String a[ ]){

//1. Crear el objeto


//2. Asignar valores al objeto
//3. Utilizar los métodos

System.exit(0);
}
}
Rectángulo
int alto;
int ancho;
int area;
int perimetro;
obtenerArea()
obtenerPerimetro()
Clase Rectángulo
Rectángulo
miRectángulo
int alto;
int ancho;
int area;
1. Crear un objeto
int perimetro; obtenerArea()
obtenerArea() obtenerPerimetro()

obtenerPerimetro()
Clase Rectángulo
Rectángulo
miRectángulo
int alto;
int ancho;
int area;
1. Crear un objeto
int perimetro; obtenerArea()
obtenerArea() Especifico el nombre obtenerPerimetro()
del objeto
obtenerPerimetro()
Clase Rectángulo
public class UsoRectangulo{
public static void main(String a[ ]){

Rectangulo miRectangulo=new Rectangulo();

}
Nombre Nombre Nombre
}
clase objeto clase( )
Rectángulo
miRectángulo
int alto;
?
int ancho; ?
int area; ?
1. Crear un objeto ?
int perimetro;
obtenerArea() obtenerArea()
obtenerPerimetro() obtenerPerimetro()

Clase Rectángulo Cuando se crea un


objeto, NO se sabe
cuáles son los valores de
los atributos
miRectángulo
?
?
?
?
obtenerArea();
obtenerPerimetro()
miRectángulo miRectángulo
? ?
? ?
? ?
? ?
obtenerArea(); obtenerArea();
obtenerPerimetro() obtenerPerimetro()

2. Asignar valores al objeto


Qué valor colocar al
alto y al ancho

miRectángulo miRectángulo
? ?
? ?
? ?
? ?
obtenerArea(); obtenerArea();
obtenerPerimetro() obtenerPerimetro()

2. Asignar valores al objeto


miRectángulo
miRectángulo
4
?
2
?
?
?
?
? obtenerArea();
obtenerArea(); obtenerPerimetro()
obtenerPerimetro()

2. Asignar valores al objeto


public class UsoRectangulo{
public static void main(String a[ ]){

Rectangulo miRectangulo=new Rectangulo();


miRectangulo.alto=Integer.parseInt(JOptionPane.showInputDialog(“Digite el alto”

}
}
public class UsoRectangulo{
public static void main(String a[ ]){

Rectangulo miRectangulo=new Rectangulo();


miRectangulo.alto=Integer.parseInt(JOptionPane.showInputDialog(“Digite el alto”

Nombre Atributo
} objeto al cual se
} le va a dar
un valor
miRectángulo miRectángulo
? 4
? ?
? ?
? ?
obtenerArea(); obtenerArea();
obtenerPerimetro() obtenerPerimetro()

miRectangulo.alto=Integer.parseInt(JOptionPane.showInputDialog(“Digite el alto”));
public class UsoRectangulo{
public static void main(String a[ ]){

Rectangulo miRectangulo=new Rectangulo();


miRectangulo.alto=Integer.parseInt(JOptionPane.showInputDialog(“Digite el alto”
miRectangulo.ancho=Integer.parseInt(JOptionPane.showInputDialog(“Digite el anc
//3. Utilizar los métodos
}
}
miRectángulo
4
2
?
?
obtenerArea();
obtenerPerimetro()

Si el objeto ahora tiene


valores específicos
¿Qué falta hacer?
miRectángulo
4
2
?
?
obtenerArea();
obtenerPerimetro()

Si el objeto ahora tiene


valores específicos
¿Qué falta hacer?
Falta calcular y mostrar
el área y el perímetro
miRectángulo miRectángulo
4 4
2 2
? ?
? ?
obtenerArea() 3. Utilizar los métodos para obtenerArea()
obtenerPerimetro() calcular y mostrar el área y obtenerPerimetro()
el perímetro
miRectángulo miRectángulo
4 4
2 2
? 8
? 12
obtenerArea() 3. Utilizar los métodos para obtenerArea()
obtenerPerimetro() calcular y mostrar el área y obtenerPerimetro()
el perímetro
miRectángulo miRectángulo
4 4
2 2
? 8
? 12
obtenerArea() 3. Utilizar los métodos para obtenerArea()
obtenerPerimetro() calcular y mostrar el área y obtenerPerimetro()
el perímetro
public class UsoRectangulo{
public static void main(String a[ ]){

Rectangulo miRectangulo=new Rectangulo();


miRectangulo.alto=Integer.parseInt(JOptionPane.showInputDialog(“Digite el alto”
miRectangulo.ancho=Integer.parseInt(JOptionPane.showInputDialog(“Digite el anc
miRectangulo.obtenerArea();
}
}
public class UsoRectangulo{
public static void main(String a[ ]){

Rectangulo miRectangulo=new Rectangulo();


miRectangulo.alto=Integer.parseInt(JOptionPane.showInputDialog(“Digite el alto”
miRectangulo.ancho=Integer.parseInt(JOptionPane.showInputDialog(“Digite el anc
miRectangulo.obtenerArea();
}
}
Nombre Método que se
objeto va a utilizar
miRectángulo
4
2
?
?
obtenerArea()
obtenerPerimetro()
miRectángulo
4
2
?
?
obtenerArea()
obtenerPerimetro()

public void obtenerArea(){


area = alto*ancho;
JOptionPane.showMessageDialog(null,“Area:” + area);
}
miRectángulo
4
2
area=4*2;
?
?
obtenerArea()
obtenerPerimetro()

public void obtenerArea(){


area = alto*ancho;
JOptionPane.showMessageDialog(null,“Area:” + area);
}
miRectángulo
4
2
8 area=4*2;

?
obtenerArea()
obtenerPerimetro()

public void obtenerArea(){


area = alto*ancho;
JOptionPane.showMessageDialog(null,“Area:” + area);
}
import javax.swing.*;

public class UsoRectangulo{


public static void main(String a[ ]){
Rectangulo miRectangulo=new Rectangulo();
miRectangulo.alto=Integer.parseInt(JOptionPane.showInputDialog(“Digite el alto”
miRectangulo.ancho=Integer.parseInt(JOptionPane.showInputDialog(“Digite el anc
miRectangulo.obtenerArea();
miRectangulo.obtenerPerimetro();
System.exit(0);
}
}
Instrucción if - else
Problema: Desarrollar un método para la clase Rectángulo que
muestra un mensaje indicando si el rectángulo es también un
cuadrado. Utilice el método en la clase UsoRectangulo
Rectángulo
UsoRectangulo
int alto;
int ancho; usa

int area;
int perimetro;
main()
obtenerArea()
obtenerPerimetro()
Rectángulo
UsoRectangulo
int alto;
int ancho; usa

int area;
int perimetro;
main()
obtenerArea()
obtenerPerimetro()
esCuadrado()
Instrucción if - else
Problema: Desarrollar un método para la clase Rectángulo que
muestra un mensaje indicando si el rectángulo es también un
cuadrado unitario
Rectángulo
UsoRectangulo
int alto;
int ancho; usa

int area;
int perimetro;
main()
obtenerArea()
obtenerPerimetro()
esCuadrado()
Rectángulo
UsoRectangulo
int alto;
int ancho; usa

int area;
int perimetro;
main()
obtenerArea()
obtenerPerimetro()
esCuadrado()
esCuadradoUnitario()
Instrucción if - else
Problema: Desarrollar un método para la clase Rectángulo que
muestra un mensaje indicando si el rectángulo cumple la propiedad de
que el alto es el doble del ancho
Rectángulo
UsoRectangulo
int alto;
int ancho; usa

int area;
int perimetro;
main()
obtenerArea()
obtenerPerimetro()
esCuadrado()
esCuadradoUnitario()
Rectángulo
UsoRectangulo
int alto;
int ancho; usa

int area;
int perimetro;
main()
obtenerArea()
obtenerPerimetro()
esCuadrado()
esCuadradoUnitario()
cumplePropiedad()
Socio
???

???
Socio
int totalAportado, categoria, antigüedad;
double montoMaximo;
Socio
int totalAportado, categoria, antigüedad;
double montoMaximo;
calcularMontoMaximo()
Socio UsoSocio
int totalAportado, categoria;
usa
int antigüedad;
double montoMaximo;
calcularMontoMaximo()
main()
Prestamo
???

???
Prestamo
int valorSolicitado, tiempoPrestamo;
double valorInteres, valorCuota;

calcularValorCuota()
UsoPrestamo
Prestamo
int valorSolicitado, usa
tiempoPrestamo;
double valorInteres,
valorCuota; main()
calcularValorCuota()

También podría gustarte