métodos y funciones - java - algoritmia

48
Algoritmia y Programación FUNCIONES O MÉTODOS

Upload: daniel-gomez

Post on 25-Jun-2015

760 views

Category:

Education


1 download

DESCRIPTION

Universidad del Valle, 2013. Algoritmia y Programación.

TRANSCRIPT

Page 1: Métodos y Funciones - Java - Algoritmia

Algoritmia y Programación

FUNCIONES O MÉTODOS

Page 2: Métodos y Funciones - Java - Algoritmia

Slide 2

Algoritmia y programación Universidad del Valle

CONTENIDO Funciones/métodos

Definición

Partes de una función

Ejemplos

Ámbito de variables

Variables Locales

Variables Globales

Page 3: Métodos y Funciones - Java - Algoritmia

Slide 3

Algoritmia y programación Universidad del Valle

DEFINICIÓN

Una función ó método es una porción de código (sub-algoritmo) que forma parte de un algoritmo principal, el cual se encarga de resolver una tarea específica.

Page 4: Métodos y Funciones - Java - Algoritmia

Slide 4

Algoritmia y programación Universidad del Valle

DEFINICIÓN

Una función ó método es una porción de código (sub-algoritmo) que forma parte de un algoritmo principal, el cual se encarga de resolver una tarea específica.

Divide y vencerás: Es una estrategia para resolver problemas grandes, dividiéndolo en problemas más pequeños

Page 5: Métodos y Funciones - Java - Algoritmia

Slide 5

Algoritmia y programación Universidad del Valle

Los métodos reciben datos del programa principal, realizan operaciones y le devuelven los resultados.

Es como una oficina: El programa principal es el jefe, que da instrucciones a sus subordinados (métodos), ellos realizan una tarea, y cuando terminan le devuelven el resultado y control al jefe.

DEFINICIÓN

Page 6: Métodos y Funciones - Java - Algoritmia

Slide 6

Algoritmia y programación Universidad del Valle

VENTAJAS DE USAR MÉTODOS

Los problemas pequeños son más fáciles de entender, de desarrollar y de mantener (localizar errores).

Se evita código innecesario, pues los métodos se escriben una sola vez, y pueden ser utilizados (llamados) desde diferentes partes del programa, las veces que sea necesario

Page 7: Métodos y Funciones - Java - Algoritmia

Slide 7

Algoritmia y programación Universidad del Valle

PROBLEMA Desarrolle un programa que lea los datos de 2 catetos (a,b)

y determine cual de los 2 es mayor y muestre su hipotenusa.

Page 8: Métodos y Funciones - Java - Algoritmia

Slide 8

Algoritmia y programación Universidad del Valle

PROBLEMA Desarrolle un programa que lea los datos de 2 catetos (a,b)

y determine cual de los 2 es mayor y muestre su hipotenusa.

1. Análisis del problema

Entrada: a, b

Page 9: Métodos y Funciones - Java - Algoritmia

Slide 9

Algoritmia y programación Universidad del Valle

PROBLEMA Desarrolle un programa que lea los datos de 2 catetos (a,b)

y determine cual de los 2 es mayor y muestre su hipotenusa.

1. Análisis del problema

Entrada: a, b

Salidas : hipotenusa, mayor

Proceso: ??

Page 10: Métodos y Funciones - Java - Algoritmia

Slide 10

Algoritmia y programación Universidad del Valle

PROBLEMA Desarrolle un programa que lea los datos de 2 catetos (a,b)

y determine cual de los 2 es mayor y muestre su hipotenusa.

1. Análisis del problema

Entrada: a, b

Salidas : hipotenusa, mayor

Proceso: determinar mayor de 2 números

calcular hipotenusa

Page 11: Métodos y Funciones - Java - Algoritmia

Slide 11

Algoritmia y programación Universidad del Valle

PROBLEMA Desarrolle un programa que lea los datos de 2 catetos (a,b)

y determine cual de los 2 es mayor y muestre su hipotenusa.

1. Análisis del problema

Entrada: a, b

Salidas : hipotenusa, mayor

Proceso: entero determinarMayor(a, b :entero) {

a y b son datos necesarios para calcular el mayor de los dos números

Page 12: Métodos y Funciones - Java - Algoritmia

Slide 12

Algoritmia y programación Universidad del Valle

PROBLEMA Desarrolle un programa que lea los datos de 2 catetos (a,b)

y determine cual de los 2 es mayor y muestre su hipotenusa.

1. Análisis del problema

Entrada: a, b

Salidas : hipotenusa, mayor

Proceso: entero determinarMayor(a, b :entero) {

m: entero

SI a>b

m= a

SINO

m=b

retornar m

}

Page 13: Métodos y Funciones - Java - Algoritmia

Slide 13

Algoritmia y programación Universidad del Valle

PROBLEMA Desarrolle un programa que lea los datos de 2 catetos (a,b)

y determine cual de los 2 es mayor y muestre su hipotenusa.

1. Análisis del problema

Entrada: a, b

Salidas : hipotenusa, mayor

Proceso: real calcularHipotenusa(a, b :entero)

Page 14: Métodos y Funciones - Java - Algoritmia

Slide 14

Algoritmia y programación Universidad del Valle

PROBLEMA Desarrolle un programa que lea los datos de 2 catetos (a,b)

y determine cual de los 2 es mayor y muestre su hipotenusa.

1. Análisis del problema

Entrada: a, b

Salidas : hipotenusa, mayor

Proceso: real calcularHipotenusa(a, b :entero)

a y b son datos necesarios para calcular la hipotenusa

Page 15: Métodos y Funciones - Java - Algoritmia

Slide 15

Algoritmia y programación Universidad del Valle

PROBLEMA Desarrolle un programa que lea los datos de 2 catetos (a,b)

y determine cual de los 2 es mayor y muestre su hipotenusa.

1. Análisis del problema

Entrada: a, b

Salidas : hipotenusa, mayor

Proceso: real calcularHipotenusa(a, b :entero) {

h: real

h=√( a2+b2)

retornar h

}

Page 16: Métodos y Funciones - Java - Algoritmia

Slide 16

Algoritmia y programación Universidad del Valle

PROBLEMA Desarrolle un programa que lea los datos de 2 catetos (a,b)

y determine cual de los 2 es mayor y muestre su hipotenusa.

1. Análisis del problema

Entrada: a, b

Salidas : hipotenusa, mayor

Proceso: real calcularHipotenusa(a, b :entero) {

h: real

h= √( a2+b2)

retornar h

}

¿Cómo se escribe un método en Java?

Page 17: Métodos y Funciones - Java - Algoritmia

Slide 17

Algoritmia y programación Universidad del Valle

Tiene un nombre,

Recibe unos parámetros o argumentos (opcionalmente),

Contiene sentencias o instrucciones para realizar algo, y

Devuelve un valor de algún Tipo de dato conocido (opcionalmente).

Tiene un modificador de acceso

PARTES DE UN MÉTODO

Modificador_de_acceso Tipo_de_retorno nombre(parámetros,…)

{

declaración_variables_locales

cuerpo_del_método

valor_de_retorno

}

Sintaxis global es:

Page 18: Métodos y Funciones - Java - Algoritmia

Slide 18

Algoritmia y programación Universidad del Valle

public double calcularHipotenusa(int a, int b)

{

double h;

h= Math.sqrt((a*a)+(b*b));

return h;

}

PARTES DE UN MÉTODO

Page 19: Métodos y Funciones - Java - Algoritmia

Slide 19

Algoritmia y programación Universidad del Valle

public double calcularHipotenusa(int a, int b)

{

double h;

h= Math.sqrt((a*a+(b*b));

return h;

}

Modificador de acceso:

public – cualquiera puede acceder usar e invocar al método private – Sólo puede acceder ó invocarse el método desde otro método de la clase. protected - proporciona acceso público para las clases derivadas y acceso privado (prohibido) para el resto de clases.

PARTES DE UN MÉTODO

Page 20: Métodos y Funciones - Java - Algoritmia

Slide 20

Algoritmia y programación Universidad del Valle

public double calcularHipotenusa(int a, int b)

{

double h;

h= Math.sqrt((a*a+(b*b));

return h;

}

Tipo de Retorno Corresponde al tipo de dato del valor que el método debe retornar, que puede ser: •int, float, double, char, String. etc •void – Indica que el método no retorna ningún valor

PARTES DE UN MÉTODO

Page 21: Métodos y Funciones - Java - Algoritmia

Slide 21

Algoritmia y programación Universidad del Valle

public double calcularHipotenusa(int a, int b)

{

double h;

h= Math.sqrt((a*a+(b*b));

return h;

}

Tipo de dato del valor que devuelve

Valor que devuelve

PARTES DE UN MÉTODO

Page 22: Métodos y Funciones - Java - Algoritmia

Slide 22

Algoritmia y programación Universidad del Valle

public double calcularHipotenusa(int a, int b)

{

double h;

h= Math.sqrt((a*a+(b*b));

return h;

}

Nombre Es el nombre con el que se hará referencia al método dentro del programa. El cual debe estar relacionado con las operaciones que va a realizar

PARTES DE UN MÉTODO

Page 23: Métodos y Funciones - Java - Algoritmia

Slide 23

Algoritmia y programación Universidad del Valle

public double calcularHipotenusa(int a, int b)

{

double h;

h= Math.sqrt((a*a+(b*b));

return h;

}

Parámetros / argumentos Hay métodos que reciben algunos valores para poder hacer operaciones con ellos. Si son varios se separan con comas ,

PARTES DE UN MÉTODO

Page 24: Métodos y Funciones - Java - Algoritmia

Slide 24

Algoritmia y programación Universidad del Valle

public double calcularHipotenusa(int a, int b)

{

double h;

h= Math.sqrt((a*a+(b*b));

return h;

}

PARTES DE UN MÉTODO

Este método recibe 2 argumentos de tipo entero

Page 25: Métodos y Funciones - Java - Algoritmia

Slide 25

Algoritmia y programación Universidad del Valle

public double calcularHipotenusa(int a, int b)

{

double h;

h= Math.sqrt((a*a+(b*b));

return h;

}

PARTES DE UN MÉTODO

¿Cómo llamar a un método desde el programa principal?

Page 26: Métodos y Funciones - Java - Algoritmia

Slide 26

Algoritmia y programación Universidad del Valle

Desarrolle un programa que lea los datos de 2 catetos (a,b) y determine cual de los 2 es mayor y muestre su hipotenusa

2. Diseñar el algoritmo y escribirlo en pseudocódigo

Inicio a,b,mayor : entero hipotenusa : real leer (a) leer (b)

hipotenusa = calcularHipotenusa(a,b) mayor = determinarMayor(a,b) imprimir(hipotenusa, mayor) Fin

La variable hipotenusa va a tomar el valor que le devuelva el método calcularHipotenusa(a,b)

LLAMADO DE MÉTODOS

Page 27: Métodos y Funciones - Java - Algoritmia

Slide 27

Algoritmia y programación Universidad del Valle

LLAMADO DE MÉTODOS

import javax.swing.JOptionPane;

public class Hipotenusa{

public static double calcularHipotenusa(int a, int b){

double h;

h= Math.sqrt((a*a)+(b*b));

return h;

}

public static int determinarMayor(int a,int b){

int m;

if(a>b){

m=a;}

else{

m=b;}

return m;

}

Page 28: Métodos y Funciones - Java - Algoritmia

Slide 28

Algoritmia y programación Universidad del Valle

LLAMADO DE MÉTODOS

public static void main (String args[]){

int a, b, mayor;

double hipotenusa;

a=Integer.parseInt(JOptionPane.showInputDialog(

“Digite el valor de a: “));

b=Integer.parseInt(JOptionPane.showInputDialog(

“Digite el valor de b: “));

hipotenusa = calcularHipotenusa(a,b);

mayor= determinarMayor(a,b);

JOptionPane.showMessageDialog(null,”Hipotenusa: ”+ hipotenusa +

”\n Mayor: “+ mayor );

}

}

Inicio a,b,mayor : entero hipotenusa : real leer (a) leer (b)

hipotenusa = calcularHipotenusa(a,b) mayor = determinarMayor(a,b) imprimir(hipotenusa, mayor) Fin

Page 29: Métodos y Funciones - Java - Algoritmia

Slide 29

Algoritmia y programación Universidad del Valle

PROBLEMA Se desea reforestar un bosque que mide un número n de hectáreas. Si la superficie del terreno excede a 1’000.000m2, entonces se siembra así:

Si la superficie del terreno es menor o igual a 1’000.000m2 entonces se siembra así:

Se desea saber el número de pinos, oyameles y cedros que se deben sembrar, si se sabe que en 10m2 caben 8 pinos; en 15m2 caben 15 oyameles, y en 18m2 caben 10 cedros.

% superficie Tipo de árbol

70% Pino

20% Oyamel

10% Cedro

% superficie Tipo de árbol

50% Pino

30% Oyamel

20% Cedro

Page 30: Métodos y Funciones - Java - Algoritmia

Slide 30

Algoritmia y programación Universidad del Valle

1. Análisis del problema

Entrada: n

Salidas : cant_pinos, cant_oyamel, cant_cedro

Proceso: hallarCantidades

EJEMPLO

Page 31: Métodos y Funciones - Java - Algoritmia

Slide 31

Algoritmia y programación Universidad del Valle

1. Diseñar el algoritmo y escribirlo en pseudocódigo

Inicio

n: entero

leer(n)

hallarCantidades( n)

Fin

EJEMPLO

Page 32: Métodos y Funciones - Java - Algoritmia

Slide 32

Algoritmia y programación Universidad del Valle

1. Diseñar el algoritmo y escribirlo en pseudocódigo

hallarCantidades(n: entero){

cant_pino,cant_oyamel,cant_cedro, hectarea=10000 : entero

SI (n*hectarea) > 1000000

cant_pino= (((n*hectarea) *0.7)/10)*8

cant_oyamel = (((n*hectarea) *0.2)/15)*15

cant_cedro= (((n*hectarea) *0.1)/18)*10

SINO

cant_pino= (((n*hectarea) *0.5)/10)*8

cant_oyamel = (((n*hectarea) *0.3)/15)*15

cant_cedro= (((n*hectarea) *0.2)/18)*10

Imprimir (cant_pino, cant_oyamel, cant_cedro);

}

EJEMPLO

Page 33: Métodos y Funciones - Java - Algoritmia

Slide 33

Algoritmia y programación Universidad del Valle

EJEMPLO public class Reforestacion{

public static void hallarCantidades(int n){

int cant_pino, cant_oyamel, cant_cedro;

final int hectarea=10000;

if ( (n*hectarea) > 1000000){

cant_pino= (((n*hectarea) *0.7)/10)*8;

cant_oyamel = (((n*hectarea) *0.2)/15)*15;

cant_cedro= (((n*hectarea) *0.1)/18)*10;

}

else{

cant_pino= (((n*hectarea) *0.5)/10)*8;

cant_oyamel = (((n*hectarea) *0.3)/15)*15;

cant_cedro= (((n*hectarea) *0.2)/18)*10;

}

JOptionPane.showMessageDialog(null, “cantidad de pinos”+ cant_pino+ “\n cantidad de pinos”+

cant_oyamel+“\n cantidad de pinos”+ cant_cedro);

}

hallarCantidades(n: entero){

cant_pino,cant_oyamel,cant_cedro: entero

SI (n*hectarea) > 1000000

cant_pino= (((n*hectarea) *0.7)/10)*8

cant_oyamel = (((n*hectarea) *0.2)/15)*15

cant_cedro= (((n*hectarea) *0.1)/18)*10

SINO

cant_pino= (((n*hectarea) *0.5)/10)*8

cant_oyamel = (((n*hectarea) *0.3)/15)*15

cant_cedro= (((n*hectarea) *0.2)/18)*10

Imprimir (cant_pino, cant_oyamel, cant_cedro);

}

Page 34: Métodos y Funciones - Java - Algoritmia

Slide 34

Algoritmia y programación Universidad del Valle

EJEMPLO public class Reforestacion{

public static void hallarCantidades(int n){

int cant_pino, cant_oyamel, cant_cedro;

final int hectarea=10000;

if ( (n*hectarea) > 1000000){

cant_pino= (((n*hectarea) *0.7)/10)*8;

cant_oyamel = (((n*hectarea) *0.2)/15)*15;

cant_cedro= (((n*hectarea) *0.1)/18)*10;

}

else{

cant_pino= (((n*hectarea) *0.5)/10)*8;

cant_oyamel = (((n*hectarea) *0.3)/15)*15;

cant_cedro= (((n*hectarea) *0.2)/18)*10;

}

JOptionPane.showMessageDialog(null, “cantidad de pinos”+ cant_pino+ “\n cantidad de pinos”+

cant_oyamel+“\n cantidad de pinos”+ cant_cedro);

}

void especifica que el método no va a devolver ningún valor a quién lo llamó, sino que va a realizar alguna operación e imprimir su resultado dentro del mismo método.

Page 35: Métodos y Funciones - Java - Algoritmia

Slide 35

Algoritmia y programación Universidad del Valle

EJEMPLO

public static void main(String args[])

{

int n;

n=Integer.parseInt(JOptionPane.showInputDialog(“Ingrese el número de hectáreas:”));

hallarCantidades(n);

}

}

Inicio

n: entero

leer(n)

hallarCantidades( n)

Fin

Page 36: Métodos y Funciones - Java - Algoritmia

Slide 36

Algoritmia y programación Universidad del Valle

ÁMBITO DE VARIABLES

El ámbito de una variable es el contexto (espacio)

dentro del programa en donde ella puede ser

utilizada y reconocida.

Page 37: Métodos y Funciones - Java - Algoritmia

Slide 37

Algoritmia y programación Universidad del Valle

VARIABLES GLOBALES Y LOCALES

Las variables se clasifican en 2 tipos:

Variables Locales

Variables Globales

Variables Locales: Son aquellas variables que se crean dentro de un método. Estas variables solamente son reconocidas dentro de ese método donde fueron creadas, y su valor se pierde al finalizar la ejecución del mismo.

Page 38: Métodos y Funciones - Java - Algoritmia

Slide 38

Algoritmia y programación Universidad del Valle

Variables Globales: Son aquellas variables que se crean en el programa principal, por fuera de cualquier método. Éstas son reconocidas en todo lugar del programa.

VARIABLES GLOBALES Y LOCALES

Page 39: Métodos y Funciones - Java - Algoritmia

Slide 39

Algoritmia y programación Universidad del Valle

VARIABLES GLOBALES Y LOCALES

x,y : entero

Ambito de x,y

c : entero

w,p : real

Ámbito de c

Ámbito de w,p

Page 40: Métodos y Funciones - Java - Algoritmia

Slide 40

Algoritmia y programación Universidad del Valle

Variable Local del método calcularHipotenusa

public static double calcularHipotenusa(int a, int b)

{

double h;

h= Math.sqrt((a*a)+(b*b));

return h;

}

VARIABLES GLOBALES Y LOCALES

Page 41: Métodos y Funciones - Java - Algoritmia

Slide 41

Algoritmia y programación Universidad del Valle

EJEMPLO

Desarrollemos el ejemplo de la reforestación, usando variables globales y métodos que no reciben parámetros

Page 42: Métodos y Funciones - Java - Algoritmia

Slide 42

Algoritmia y programación Universidad del Valle

EJEMPLO public class Reforestacion{

static int n;

public static void hallarCantidades(){

int cant_pino, cant_oyamel, cant_cedro;

final int hectarea=10000;

if ( (n*hectarea) > 1000000){

cant_pino= (((n* hectarea) *0.7)/10)*8;

cant_oyamel = (((n* hectarea) *0.2)/15)*15;

cant_cedro= (((n* hectarea) *0.1)/18)*10;

}

else{

cant_pino= (((n* hectarea) *0.5)/10)*8;

cant_oyamel = (((n* hectarea) *0.3)/15)*15;

cant_cedro= (((n* hectarea) *0.2)/18)*10;

}

JOptionPane.showMessageDialog(null, “cantidad de pinos”+ cant_pino+ “\n cantidad de

pinos”+ cant_oyamel+“\n cantidad de pinos”+ cant_cedro);

}

n: Variable Global

Page 43: Métodos y Funciones - Java - Algoritmia

Slide 43

Algoritmia y programación Universidad del Valle

EJEMPLO public class Reforestacion{

static int n;

public static void hallarCantidades(){

int cant_pino, cant_oyamel, cant_cedro;

final int hectarea=10000;

if ( (n*hectarea) > 1000000){

cant_pino= (((n* hectarea) *0.7)/10)*8;

cant_oyamel = (((n* hectarea) *0.2)/15)*15;

cant_cedro= (((n* hectarea) *0.1)/18)*10;

}

else{

cant_pino= (((n* hectarea) *0.5)/10)*8;

cant_oyamel = (((n* hectarea) *0.3)/15)*15;

cant_cedro= (((n* hectarea) *0.2)/18)*10;

}

JOptionPane.showMessageDialog(null, “cantidad de pinos”+ cant_pino+ “\n cantidad de

pinos”+ cant_oyamel+“\n cantidad de pinos”+ cant_cedro);

}

n: Variable Global

Método hallarCantidades no recibe parámetros

Page 44: Métodos y Funciones - Java - Algoritmia

Slide 44

Algoritmia y programación Universidad del Valle

EJEMPLO public class Reforestacion{

static int n;

public static void hallarCantidades(){

int cant_pino, cant_oyamel, cant_cedro;

final int hectarea=10000;

if ( (n*hectarea) > 1000000){

cant_pino= (((n* hectarea) *0.7)/10)*8;

cant_oyamel = (((n* hectarea) *0.2)/15)*15;

cant_cedro= (((n* hectarea) *0.1)/18)*10;

}

else{

cant_pino= (((n* hectarea) *0.5)/10)*8;

cant_oyamel = (((n* hectarea) *0.3)/15)*15;

cant_cedro= (((n* hectarea) *0.2)/18)*10;

}

JOptionPane.showMessageDialog(null, “cantidad de pinos”+ cant_pino+ “\n cantidad de

pinos”+ cant_oyamel+“\n cantidad de pinos”+ cant_cedro);

}

n: Variable Global

Método hallarCantidades no recibe parámetros

Como n es global es reconocida dentro del método hallarCantidades sin haber sido pasada como parámetro

Page 45: Métodos y Funciones - Java - Algoritmia

Slide 45

Algoritmia y programación Universidad del Valle

EJEMPLO

public static void main(String args[])

{

n=Integer.parseInt(JOptionPane.showInputDialog(“Ingrese el número de

hectáreas :”));

hallarCantidades();

}

}

Inicio

leer(n)

hallarCantidades()

Fin

Page 46: Métodos y Funciones - Java - Algoritmia

Slide 46

Algoritmia y programación Universidad del Valle

EJERCICIOS Usando métodos, desarrollar un programa que dado el peso, la altura

y el sexo de un estudiante. Determine la cantidad de vitaminas que debe

consumir, con base en los siguientes criterios:

Si es hombre, y su estatura es mayor a 1.60, y su peso es mayor o igual a 75 kilos,

su dosis, será: 20% de la estatura y 80% de su peso, si la estatura es menor o

igual a 1.60, la dosis será la siguiente: 30% de la estatura y 70% de su peso.

Si es mujer, y su estatura es mayor o igual a 1.55 y su peso es mayor o igual a

65 kilos, su dosis será: 25% de la estatura y 75% de su peso. Si el peso es menor

a 65 kilos, será: 35% de la estatura y 65% de su peso.

Page 47: Métodos y Funciones - Java - Algoritmia

Slide 47

Algoritmia y programación Universidad del Valle

EJERCICIOS Un comerciante se dedica a la venta de sillas. Vende tres tipos de sillas:

Por cada cinco sillas compradas se obtiene un descuento, de acuerdo a la tabla

El resto de sillas se cobran a precio normal. Diseñe un programa que lea el tipo de

silla y la cantidad a comprar e imprima la cantidad, el precio unitario, el descuento

y el precio total, de lo que debe cancelar el cliente por la compra.

Nota: El almacén sólo vende UN tipo de silla a cada cliente.

Tipo Precio

1 $5.000

2 $7.000

3 $10.000

Tipo Descuento

1 3%

2 5%

3 10%

Page 48: Métodos y Funciones - Java - Algoritmia

Slide 48

Algoritmia y programación Universidad del Valle

CLASE DECIMALFORMAT

import java.text.DecimalFormat;

DecimalFormat formateador = new DecimalFormat("####.####");

double numero= 3.43242383;

// Esto sale en pantalla con cuatro decimales, es decir, 3,4324

System.out.println (formateador.format (numero));

Se debe importar la clase DecimalFormat

Se debe declarar una variable que contenga el formato que se le quiera aplicar al número

En el momento de imprimir, se coloca la variable a la que se le quiere dar el formato dentro del método format