You are on page 1of 48

FUNCIONES O MTODOS

Algoritmia y Programacin

CONTENIDO
Funciones/mtodos
Definicin
Partes de una funcin
Ejemplos
mbito de variables
Variables Locales
Variables Globales

Algoritmia y programacin
Universidad del Valle

Slide 2

DEFINICIN
Una funcin mtodo es una porcin de cdigo
(sub-algoritmo) que forma parte de un algoritmo
principal, el cual se encarga de resolver una tarea
especfica.

Algoritmia y programacin
Universidad del Valle

Slide 3

DEFINICIN
Una funcin mtodo es una porcin de cdigo
(sub-algoritmo) que forma parte de un algoritmo
principal, el cual se encarga de resolver una tarea
especfica.
Divide y vencers: Es una estrategia para
resolver
problemas grandes, dividindolo en
problemas ms pequeos

Algoritmia y programacin
Universidad del Valle

Slide 4

DEFINICIN
Los mtodos 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
(mtodos), ellos realizan una tarea, y cuando
terminan le devuelven el resultado y control al jefe.

Algoritmia y programacin
Universidad del Valle

Slide 5

VENTAJAS DE USAR MTODOS


Los problemas pequeos son ms fciles de
entender, de desarrollar y de mantener (localizar
errores).

Se evita cdigo innecesario, pues los mtodos se


escriben una sola vez, y pueden ser utilizados
(llamados) desde diferentes partes del programa,
las veces que sea necesario

Algoritmia y programacin
Universidad del Valle

Slide 6

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 programacin
Universidad del Valle

Slide 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.
1. Anlisis del problema
Entrada:

a, b

Algoritmia y programacin
Universidad del Valle

Slide 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. Anlisis del problema
Entrada:

a, b

Salidas :

hipotenusa, mayor

Proceso:

??

Algoritmia y programacin
Universidad del Valle

Slide 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. Anlisis del problema
Entrada:

a, b

Salidas :

hipotenusa, mayor

Proceso:

determinar mayor de 2 nmeros


calcular hipotenusa

Algoritmia y programacin
Universidad del Valle

Slide 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. Anlisis 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 nmeros

Algoritmia y programacin
Universidad del Valle

Slide 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. Anlisis 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 programacin
Universidad del Valle

Slide 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. Anlisis del problema
Entrada:

a, b

Salidas :

hipotenusa, mayor

Proceso:

real calcularHipotenusa(a, b :entero)

Algoritmia y programacin
Universidad del Valle

Slide 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. Anlisis 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 programacin
Universidad del Valle

Slide 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. Anlisis del problema
Entrada:

a, b

Salidas :

hipotenusa, mayor

Proceso:

real calcularHipotenusa(a, b :entero) {


h: real

h=( a2+b2)
retornar h
}
Algoritmia y programacin
Universidad del Valle

Slide 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. Anlisis del problema
Entrada:

a, b

Salidas :

hipotenusa, mayor

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


h: real

h= ( a2+b2)
retornar h

Cmo se escribe
mtodo en Java?

un

}
Algoritmia y programacin
Universidad del Valle

Slide 16

PARTES DE UN MTODO
Sintaxis global es:
Modificador_de_acceso Tipo_de_retorno
{
declaracin_variables_locales

nombre(parmetros,)

cuerpo_del_mtodo
valor_de_retorno
}

Tiene un nombre,
Recibe unos parmetros o argumentos (opcionalmente),
Contiene sentencias o instrucciones para realizar algo, y
Devuelve un valor de algn Tipo de dato conocido (opcionalmente).
Tiene un modificador de acceso

Algoritmia y programacin
Universidad del Valle

Slide 17

PARTES DE UN MTODO
public double calcularHipotenusa(int a, int b)
{
double h;
h= Math.sqrt((a*a)+(b*b));
return h;
}

Algoritmia y programacin
Universidad del Valle

Slide 18

PARTES DE UN MTODO
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
mtodo
private Slo puede acceder invocarse el mtodo
desde otro mtodo de la clase.
protected - proporciona acceso pblico para las clases
derivadas y acceso privado (prohibido) para el resto de
clases.
Algoritmia y programacin
Universidad del Valle

Slide 19

PARTES DE UN MTODO
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 mtodo
debe retornar, que puede ser:
int, float, double, char, String. etc
void Indica que el mtodo no retorna ningn
valor
Algoritmia y programacin
Universidad del Valle

Slide 20

PARTES DE UN MTODO
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 programacin
Universidad del Valle

Slide 21

PARTES DE UN MTODO
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
mtodo dentro del programa. El cual debe estar
relacionado con las operaciones que va a realizar

Algoritmia y programacin
Universidad del Valle

Slide 22

PARTES DE UN MTODO
public double calcularHipotenusa(int

a, int b)

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

return h;
}

Parmetros / argumentos
Hay mtodos que reciben algunos valores para poder
hacer operaciones con ellos. Si son varios se separan
con comas ,
Algoritmia y programacin
Universidad del Valle

Slide 23

PARTES DE UN MTODO
public double calcularHipotenusa(int

a, int b)

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

return h;
}

Este mtodo recibe 2


argumentos de tipo
entero

Algoritmia y programacin
Universidad del Valle

Slide 24

PARTES DE UN MTODO
public double calcularHipotenusa(int

a, int b)

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

return h;
}

Cmo llamar a un
mtodo desde el
programa principal?

Algoritmia y programacin
Universidad del Valle

Slide 25

LLAMADO DE MTODOS
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. Disear el algoritmo y escribirlo en pseudocdigo
Inicio
a,b,mayor : entero
hipotenusa : real

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

leer (a)
leer (b)
hipotenusa = calcularHipotenusa(a,b)
mayor = determinarMayor(a,b)
imprimir(hipotenusa, mayor)
Fin
Algoritmia y programacin
Universidad del Valle

Slide 26

LLAMADO DE MTODOS
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 programacin
Universidad del Valle

Slide 27

LLAMADO DE MTODOS
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 programacin
Universidad del Valle

Slide 28

PROBLEMA
Se desea reforestar un bosque que mide un nmero n de hectreas. Si la
superficie del terreno excede a 1000.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 1000.000m2 entonces se


siembra as:
% superficie

Tipo de rbol

50%

Pino

30%

Oyamel

20%

Cedro

Se desea saber el nmero 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 programacin
Universidad del Valle

Slide 29

EJEMPLO
1. Anlisis del problema
Entrada:

Salidas :

cant_pinos, cant_oyamel, cant_cedro

Proceso: hallarCantidades

Algoritmia y programacin
Universidad del Valle

Slide 30

EJEMPLO
1. Disear el algoritmo y escribirlo en pseudocdigo

Inicio
n: entero

leer(n)
hallarCantidades( n)

Fin

Algoritmia y programacin
Universidad del Valle

Slide 31

EJEMPLO
1. Disear el algoritmo y escribirlo en pseudocdigo
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 programacin
Universidad del Valle

Slide 32

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 programacin
Universidad del Valle

Slide 33

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
mtodo no va a devolver
ningn valor a quin lo
llam, sino que va a realizar
alguna operacin e imprimir
su resultado dentro del
mismo mtodo.

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 programacin
Universidad del Valle

Slide 34

EJEMPLO
public static void main(String args[])
{
int n;
n=Integer.parseInt(JOptionPane.showInputDialog(Ingrese el nmero de hectreas:));
hallarCantidades(n);

Inicio
}
}

n: entero
leer(n)
hallarCantidades( n)

Fin
Algoritmia y programacin
Universidad del Valle

Slide 35

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 programacin
Universidad del Valle

Slide 36

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 mtodo. Estas variables
solamente son reconocidas dentro de ese mtodo
donde fueron creadas, y su valor se pierde al
finalizar la ejecucin del mismo.

Algoritmia y programacin
Universidad del Valle

Slide 37

VARIABLES GLOBALES Y LOCALES

Variables Globales: Son aquellas variables que se


crean en el programa principal, por fuera de
cualquier mtodo. stas son reconocidas en todo
lugar del programa.

Algoritmia y programacin
Universidad del Valle

Slide 38

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 programacin
Universidad del Valle

Slide 39

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

mtodo

Algoritmia y programacin
Universidad del Valle

Slide 40

EJEMPLO

Desarrollemos el ejemplo de la reforestacin,


usando variables globales y mtodos que no
reciben parmetros

Algoritmia y programacin
Universidad del Valle

Slide 41

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 programacin
Universidad del Valle

Slide 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){

Mtodo hallarCantidades no
recibe parmetros

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 programacin
Universidad del Valle

Slide 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){

Mtodo hallarCantidades no
recibe parmetros

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
mtodo hallarCantidades sin
haber sido pasada como
parmetro

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 programacin
Universidad del Valle

Slide 44

EJEMPLO
public static void main(String args[])
{
n=Integer.parseInt(JOptionPane.showInputDialog(Ingrese el nmero de
hectreas :));
hallarCantidades();
}
}

Inicio
leer(n)

hallarCantidades()

Fin

Algoritmia y programacin
Universidad del Valle

Slide 45

EJERCICIOS
Usando mtodos, 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 programacin
Universidad del Valle

Slide 46

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

Precio

$5.000

$7.000

$10.000

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


Tipo

Descuento

3%

5%

10%

El resto de sillas se cobran a precio normal. Disee 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 almacn slo vende UN tipo de silla a cada cliente.
Algoritmia y programacin
Universidad del Valle

Slide 47

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 nmero

// 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 mtodo format
Algoritmia y programacin
Universidad del Valle

Slide 48

You might also like