Sie sind auf Seite 1von 51

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 (subalgoritmo) que forma parte de un algoritmo principal y 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 (subalgoritmo) que forma parte de un algoritmo principal y 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: Salidas : Proceso: a, b hipotenusa, mayor ??

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: Salidas : Proceso: a, b hipotenusa, mayor calcular hipotenusa determinar mayor de 2 nmeros

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: Salidas : Proceso: a, b hipotenusa, mayor real calcularHipotenusa(a, b :entero)

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: Salidas : Proceso: a, b hipotenusa, mayor real calcularHipotenusa(a, b :entero) a y b son datos necesarios para calcular la hipotenusa

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: Salidas : Proceso: a, b hipotenusa, mayor real calcularHipotenusa(a, b :entero) { h: real h=( a2+b2) }
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: Salidas : a, b hipotenusa, mayor

Proceso:

entero determinarMayor(a, b :entero) { m: entero SI a>b


m= a SINO

m=b }
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 h: real h= ( a2+b2) }
Algoritmia y programacin
Universidad del Valle Slide 15

Proceso: real calcularHipotenusa(a, b :entero) { Cmo se escribe mtodo en Java? un

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

nombre(parmetros,)

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
Slide 16

Algoritmia y programacin
Universidad del Valle

PARTES DE UN MTODO
public static double calcularHipotenusa(int a, int b)
{ double calculo;

calculo = Math.sqrt((a*a)+(b*b)); return calculo; }

Algoritmia y programacin
Universidad del Valle Slide 17

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

return calculo; }

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 18

PARTES DE UN MTODO
public static { double calculo; calculo = Math.sqrt((a*a+(b*b));

double

calcularHipotenusa(int a, int b)

return calculo; }

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 19

PARTES DE UN MTODO
public static { double calculo; calculo = Math.sqrt((a*a+(b*b));

double

calcularHipotenusa(int a, int b)

return calculo; }

Tipo de dato del valor que devuelve Valor que devuelve

Algoritmia y programacin
Universidad del Valle Slide 20

PARTES DE UN MTODO
public static double { double calculo; calculo = Math.sqrt((a*a+(b*b));

calcularHipotenusa(int

a, int b)

return calculo; }

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 21

PARTES DE UN MTODO
public static double calcularHipotenusa(int { double calculo; calculo = Math.sqrt((a*a+(b*b));

a, int b)

return calculo; }

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 22

PARTES DE UN MTODO
public static double calcularHipotenusa(int { double calculo; calculo = Math.sqrt((a*a+(b*b));

a, int b)

return calculo; }

Este mtodo recibe 2 argumentos de tipo entero

Algoritmia y programacin
Universidad del Valle Slide 23

PARTES DE UN MTODO
public static double calcularHipotenusa(int { double calculo; calculo = Math.sqrt((a*a+(b*b));

a, int b)

return calculo; }

Cmo llamar a un mtodo desde el programa principal?

Algoritmia y programacin
Universidad del Valle Slide 24

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
leer (a) leer (b)

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

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


imprimir(hipotenusa, mayor)

Fin
Algoritmia y programacin
Universidad del Valle Slide 25

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 26

LLAMADO

DE MTODOS
Inicio a,b,mayor : entero hipotenusa : real

public static void main (String args[]){

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 27

EJEMPLO
Desarrollar una aplicacin en Java (usando mtodos), que reciba un entero correspondiente a una categora y el total de ventas de un empleado y retorne la comisin que recibe. Tome en cuenta la siguiente tabla.

categora
1 2

Comisin
10% 20%

3
4

35%
45%

5
6
Algoritmia y programacin
Universidad del Valle

50%
60%

Slide 28

EJEMPLO
1. Anlisis del problema

Entradas: categoria, ventas Salidas: comision Proceso: determinar Comisin

Algoritmia y programacin
Universidad del Valle Slide 29

EJEMPLO
2. Disear el algoritmo y escribirlo en pseudocdigo real determinarComision(int cat, real ven){
com: real; Segn sea cat opcion 1: com = ven * 0.1 opcion 2: com = ven * 0.2 opcion 3: com= ven * 0.35 opcion 4: com= ven * 0.45 opcion 5: com = ven * 0.5 opcion 6: com = ven * 0.6

} inicio
categoria: entero ventas, comision: real leer(categoria) leer(ventas)
comision = determinarComision(categoria, ventas) Imprimir (comision)

Fin
Algoritmia y programacin
Universidad del Valle Slide 30

EJEMPLO
public class ComisionEmpleado{
public static double determinarComision(int cat, double ven){

double com =0; switch(cat) { case 1: com = ven * 0.1; break; case 2: com = ven * 0.2; break; case 3: com = ven * 0.35; break; case 4: com = ven * 0.45; break; case 5: com= ven * 0.5; break; case 6: comi= ven * 0.6; break; } return com; }

real determinarComision(int cat, real ven) {


com: real; Segn sea cat opcion 1: com = ven * 0.1 opcion 2: com = ven * 0.2 opcion 3: com= ven * 0.35 opcion 4: com= ven * 0.45 opcion 5: com = ven * 0.5 opcion 6: com = ven * 0.6

Algoritmia y programacin
Universidad del Valle Slide 31

EJEMPLO
public static void main(String args[]) { int categoria; double ventas, comision; categoria =Integer.parseInt(JOptionPane.showInputDialog(Ingrese categora:)); ventas =Double.parseDouble(JOptionPane.showInputDialog(Ingrese venta:)); comision= determinarComision(categoria, ventas); JOptionPane.showMessageDialog( null,la comision es + comision); } }
inicio categoria: entero ventas, comision: real leer(categoria) leer(ventas) comision = determinarComision(categoria, ventas) Imprimir (comision) Fin
Algoritmia y programacin
Universidad del Valle Slide 32

PROBLEMA
Se dese 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% 20%

Pino Oyamel

10%

Cedro

Si la superficie del terreno es menor o igual a 1000.000m2 entonces se siembra as:


% superficie Tipo de rbol

50%
30% 20%

Pino
Oyamel 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 33

EJEMPLO
1. Anlisis del problema
Entrada: Salidas : n cantidad_pinos, cantidad_oyameles, cantidad_cedros

Proceso: hallarCantidades

Algoritmia y programacin
Universidad del Valle Slide 34

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 35

EJEMPLO
1. Disear el algoritmo y escribirlo en pseudocdigo

Inicio
n: entero leer(n) hallarCantidades( n)

Fin

Algoritmia y programacin
Universidad del Valle Slide 36

EJEMPLO
public class Reforestacion{
hallarCantidades(n: entero){

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_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_oyamel = (((n*hectarea) *0.2)/15)*15;


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

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);

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 37

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;

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.

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 38

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 39

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 40

VARIABLES GLOBALES

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 41

VARIABLES GLOBALES

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 42

VARIABLES GLOBALES
x,y : entero
c : entero

LOCALES

mbito de c

w,p : real
mbito de w,p
Ambito de x,y

Algoritmia y programacin
Universidad del Valle Slide 43

VARIABLES GLOBALES

LOCALES

public static double calcularHipotenusa(int a, int b)


{ double calculo;

calculo = Math.sqrt((a*a)+(b*b)); return calculo; }

Variable Local del calcularHipotenusa

mtodo

Algoritmia y programacin
Universidad del Valle Slide 44

EJEMPLO

Desarrollemos el ejemplo de la reforestacin, usando variables globales y mtodos que no reciben parmetros

Algoritmia y programacin
Universidad del Valle Slide 45

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

n: Variable Global

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 46

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

n: Variable Global

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 47

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

n: Variable Global

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 48

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 49

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 de 1.60, la dosis ser la siguiente: 30% de la

estatura y 70% de su peso. Si es mujer, y su estatura es mayor de 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 mayor a 65 kilos, ser: 35% de la estatura y 65% de su peso.

Algoritmia y programacin
Universidad del Valle Slide 50

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

Precio
$5.000 $7.000

$10.000

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


Tipo 1 Descuento 3%

2
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.

Algoritmia y programacin
Universidad del Valle Slide 51

Das könnte Ihnen auch gefallen