2. CONTENIDO
Funciones/métodos
Definición
Partes de una función
Ejemplos
Ámbito de variables
Variables Locales
Variables Globales
Algoritmia y programación
Universidad del Valle
Slide 2
3. 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.
Algoritmia y programación
Universidad del Valle
Slide 3
4. 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
Algoritmia y programación
Universidad del Valle
Slide 4
5. DEFINICIÓN
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.
Algoritmia y programación
Universidad del Valle
Slide 5
6. 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
Algoritmia y programación
Universidad del Valle
Slide 6
7. 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.
Algoritmia y programación
Universidad del Valle
Slide 7
8. 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
Algoritmia y programación
Universidad del Valle
Slide 8
9. 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:
??
Algoritmia y programación
Universidad del Valle
Slide 9
10. 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
Algoritmia y programación
Universidad del Valle
Slide 10
11. 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
Algoritmia y programación
Universidad del Valle
Slide 11
12. 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
}
Algoritmia y programación
Universidad del Valle
Slide 12
13. 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)
Algoritmia y programación
Universidad del Valle
Slide 13
14. 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
Algoritmia y programación
Universidad del Valle
Slide 14
15. 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
}
Algoritmia y programación
Universidad del Valle
Slide 15
16. 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
método en Java?
un
}
Algoritmia y programación
Universidad del Valle
Slide 16
17. PARTES DE UN MÉTODO
Sintaxis global es:
Modificador_de_acceso Tipo_de_retorno
{
declaración_variables_locales
nombre(parámetros,…)
cuerpo_del_método
valor_de_retorno
}
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
Algoritmia y programación
Universidad del Valle
Slide 17
18. PARTES DE UN MÉTODO
public double calcularHipotenusa(int a, int b)
{
double h;
h= Math.sqrt((a*a)+(b*b));
return h;
}
Algoritmia y programación
Universidad del Valle
Slide 18
19. PARTES DE UN MÉTODO
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.
Algoritmia y programación
Universidad del Valle
Slide 19
20. PARTES DE UN MÉTODO
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
Algoritmia y programación
Universidad del Valle
Slide 20
21. PARTES DE UN MÉTODO
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
Algoritmia y programación
Universidad del Valle
Slide 21
22. PARTES DE UN MÉTODO
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
Algoritmia y programación
Universidad del Valle
Slide 22
23. PARTES DE UN MÉTODO
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 ,
Algoritmia y programación
Universidad del Valle
Slide 23
24. PARTES DE UN MÉTODO
public double calcularHipotenusa(int
a, int b)
{
double h;
h= Math.sqrt((a*a+(b*b));
return h;
}
Este método recibe 2
argumentos de tipo
entero
Algoritmia y programación
Universidad del Valle
Slide 24
25. PARTES DE UN MÉTODO
public double calcularHipotenusa(int
a, int b)
{
double h;
h= Math.sqrt((a*a+(b*b));
return h;
}
¿Cómo llamar a un
método desde el
programa principal?
Algoritmia y programación
Universidad del Valle
Slide 25
26. LLAMADO DE MÉTODOS
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
La variable hipotenusa
va a tomar el valor que
le devuelva el método
calcularHipotenusa(a,b)
leer (a)
leer (b)
hipotenusa = calcularHipotenusa(a,b)
mayor = determinarMayor(a,b)
imprimir(hipotenusa, mayor)
Fin
Algoritmia y programación
Universidad del Valle
Slide 26
27. 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;
}
Algoritmia y programación
Universidad del Valle
Slide 27
28. LLAMADO DE MÉTODOS
public static void main (String args[]){
Inicio
a,b,mayor : entero
hipotenusa : real
leer (a)
leer (b)
int a, b, mayor;
double hipotenusa;
hipotenusa = calcularHipotenusa(a,b)
mayor = determinarMayor(a,b)
imprimir(hipotenusa, mayor)
Fin
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 );
}
}
Algoritmia y programación
Universidad del Valle
Slide 28
29. 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í:
% superficie
Tipo de árbol
70%
Pino
20%
Oyamel
10%
Cedro
Si la superficie del terreno es menor o igual a 1’000.000m2 entonces se
siembra así:
% superficie
Tipo de árbol
50%
Pino
30%
Oyamel
20%
Cedro
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.
Algoritmia y programación
Universidad del Valle
Slide 29
30. EJEMPLO
1. Análisis del problema
Entrada:
n
Salidas :
cant_pinos, cant_oyamel, cant_cedro
Proceso: hallarCantidades
Algoritmia y programación
Universidad del Valle
Slide 30
31. EJEMPLO
1. Diseñar el algoritmo y escribirlo en pseudocódigo
Inicio
n: entero
leer(n)
hallarCantidades( n)
Fin
Algoritmia y programación
Universidad del Valle
Slide 31
32. EJEMPLO
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);
}
Algoritmia y programación
Universidad del Valle
Slide 32
33. EJEMPLO
public class Reforestacion{
hallarCantidades(n: entero){
cant_pino,cant_oyamel,cant_cedro: entero
public static void hallarCantidades(int n){
int cant_pino, cant_oyamel, cant_cedro;
final int hectarea=10000;
SI (n*hectarea) > 1000000
cant_pino= (((n*hectarea) *0.7)/10)*8
cant_oyamel = (((n*hectarea) *0.2)/15)*15
if ( (n*hectarea) > 1000000){
cant_cedro= (((n*hectarea) *0.1)/18)*10
cant_pino= (((n*hectarea) *0.7)/10)*8;
SINO
cant_oyamel = (((n*hectarea) *0.2)/15)*15;
cant_pino= (((n*hectarea) *0.5)/10)*8
cant_cedro= (((n*hectarea) *0.1)/18)*10;
cant_oyamel = (((n*hectarea) *0.3)/15)*15
}
cant_cedro= (((n*hectarea) *0.2)/18)*10
else{
cant_pino= (((n*hectarea) *0.5)/10)*8;
cant_oyamel = (((n*hectarea) *0.3)/15)*15;
Imprimir (cant_pino, cant_oyamel, cant_cedro);
}
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);
}
Algoritmia y programación
Universidad del Valle
Slide 33
34. EJEMPLO
public class Reforestacion{
public static void hallarCantidades(int n){
int cant_pino, cant_oyamel, cant_cedro;
final int hectarea=10000;
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.
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);
}
Algoritmia y programación
Universidad del Valle
Slide 34
35. 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
Algoritmia y programación
Universidad del Valle
Slide 35
36. ÁMBITO DE VARIABLES
El ámbito de una variable es el contexto (espacio)
dentro del programa en donde ella puede ser
utilizada y reconocida.
Algoritmia y programación
Universidad del Valle
Slide 36
37. 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.
Algoritmia y programación
Universidad del Valle
Slide 37
38. VARIABLES GLOBALES Y LOCALES
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.
Algoritmia y programación
Universidad del Valle
Slide 38
39. VARIABLES GLOBALES Y LOCALES
x,y : entero
c : entero
Ámbito de c
w,p : real
Ámbito de w,p
Ambito de x,y
Algoritmia y programación
Universidad del Valle
Slide 39
40. VARIABLES GLOBALES Y LOCALES
public static double calcularHipotenusa(int a, int b)
{
double h;
h= Math.sqrt((a*a)+(b*b));
return h;
}
Variable Local del
calcularHipotenusa
método
Algoritmia y programación
Universidad del Valle
Slide 40
41. EJEMPLO
Desarrollemos el ejemplo de la reforestación,
usando variables globales y métodos que no
reciben parámetros
Algoritmia y programación
Universidad del Valle
Slide 41
42. EJEMPLO
public class Reforestacion{
static int n;
n: Variable Global
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);
}
Algoritmia y programación
Universidad del Valle
Slide 42
43. EJEMPLO
public class Reforestacion{
static int n;
n: Variable Global
public static void hallarCantidades(){
int cant_pino, cant_oyamel, cant_cedro;
final int hectarea=10000;
if ( (n*hectarea) > 1000000){
Método hallarCantidades no
recibe parámetros
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);
}
Algoritmia y programación
Universidad del Valle
Slide 43
44. EJEMPLO
public class Reforestacion{
static int n;
n: Variable Global
public static void hallarCantidades(){
int cant_pino, cant_oyamel, cant_cedro;
final int hectarea=10000;
if ( (n*hectarea) > 1000000){
Método hallarCantidades no
recibe parámetros
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;
Como
n
es
global
es
reconocida
dentro
del
método hallarCantidades sin
haber sido pasada como
parámetro
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);
}
Algoritmia y programación
Universidad del Valle
Slide 44
45. 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
Algoritmia y programación
Universidad del Valle
Slide 45
46. 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.
Algoritmia y programación
Universidad del Valle
Slide 46
47. EJERCICIOS
Un comerciante se dedica a la venta de sillas. Vende tres tipos de sillas:
Tipo
Precio
1
$5.000
2
$7.000
3
$10.000
Por cada cinco sillas compradas se obtiene un descuento, de acuerdo a la tabla
Tipo
Descuento
1
3%
2
5%
3
10%
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.
Algoritmia y programación
Universidad del Valle
Slide 47
48. CLASE DECIMALFORMAT
import java.text.DecimalFormat;
Se debe importar la clase
DecimalFormat
DecimalFormat formateador = new DecimalFormat("####.####");
double numero= 3.43242383;
Se
debe
declarar
una
variable que contenga el
formato que se le quiera
aplicar al número
// Esto sale en pantalla con cuatro decimales, es decir, 3,4324
System.out.println (formateador.format (numero));
En el momento de imprimir,
se coloca la variable a la que
se le quiere dar el formato
dentro del método format
Algoritmia y programación
Universidad del Valle
Slide 48