PDF de programación - Tema 6. ABSTRACCIÓN DE OPERACIONES. MÉTODOS

Imágen de pdf Tema 6. ABSTRACCIÓN DE OPERACIONES. MÉTODOS

Tema 6. ABSTRACCIÓN DE OPERACIONES. MÉTODOSgráfica de visualizaciones

Actualizado el 24 de Noviembre del 2018 (Publicado el 25 de Enero del 2017)
1.476 visualizaciones desde el 25 de Enero del 2017
88,6 KB
12 paginas
Creado hace 22a (07/01/2002)
PROGRAMACI ÓN

Escuela Universitaria de Informática - Curso 2001-2002
Tema 6. ABSTRACCI ÓN DE OPERACIONES.

M ÉTODOS

Alfonso Jiménez, Francisco Marqués, Natividad Prieto

Índice General

1 Introducción

2 Funciones

2.1 Definición y uso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2 Parámetros y resultado
. . . . . . . . . . . . . . . . . . . . . . . . . . .
2.3 Efecto de la llamada a una función . . . . . . . . . . . . . . . . . . . . .
2.4 Ejemplos
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3 Procedimientos

3.1 Definición y uso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2 Efecto de la llamada a un procedimiento . . . . . . . . . . . . . . . . . .
3.3 Ejemplos
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

4 Paso de parámetros por valor y por referencia

5 Ámbito de definición de los métodos

6 Problemas

1

Introducción

1

5
5
5
6
6

7
7
8
8

9

10

11

El proceso de abstracción consiste en hacer caso omiso de ciertas propiedades o cir-
cunstancias poco relevantes y enfatizar lo que realmente interesa de una situación o
enunciado.

En nuestro contexto, la abstracción de operaciones significa hacer caso omiso de

’cómo’ se realizan ciertas operaciones enfatizando el ’qué’ es lo que hacen.

En el lenguaje Java, la abstracción de operaciones se consigue a través de los llamados
métodos (que implementan operaciones dentro de una clase), de manera que unos
métodos podrán invocar a otros de los que les ineteresará únicamente qué es lo que
hacen y, en ningun caso, cómo realizan internamente la operación en cuestión.

1

1 INTRODUCCI ÓN

2

De esta manera, el repertorio de instrucciones que ofrecen los lenguajes de progra-
mación (y Java en concreto) se amplía con la posibilidad de hacer llamadas a métodos
definidos por el propio programador o por otros.

En los programas que se han realizado a lo largo del curso se han utilizado ciertos
métodos que se definen en librerias del propio lenguaje, como por ejemplo Math o en
librerias específicas, como por ejemplo input, output y format.

En concreto, se han utilizado los métodos sin y sqrt de la libreria Math, y los

métodos readint o writeln del paquete nsIO. Ejemplos de su utilización son:

// x es una variable de tipo double
double sx=Math.sin(x);

// x es una variable de tipo double y positiva
double rx=Math.sqrt(x);

input entrada = new input();
int i=entrada.readint();

output salida = new output();
salida.writeln(‘‘Hola a todos’’);

En todos los casos se observa que la utilización del método nos oculta los detalles de
cómo se realiza internamente la operación que se requiere; por ejemplo, no sabemos si la
invocación o llamada al método Math.sin(x) realizará un bucle para el cálculo del seno
mediante un determinado desarrollo en serie, realmente no nos importa, lo importante
es que cuando se invoque al método, éste realice la operación que se indica. De esta
forma, la posibilidad de definir métodos es una herramienta de gran importancia en la
programación ya que, como se ha comentado anteriormente, permite la abstracción de
operaciones.

Si se observan los ejemplos descritos más arriba, se pueden extraer algunas carac-

terísticas referentes al uso de métodos:

Todos los métodos tienen un identificador sin, sqrt, readint, writeln
Después del identificador y entre paréntesis figuran los parámetros del método.
Los métodos también pueden no tener parámetros, como el método readint, y
también puede ocurrir que algunos métodos puedan tener o no tener parámetros,
como es el caso del writeln.

Algunos métodos devuelven un resultado, por ejemplo sin o sqrt devuelven un re-
sultado de tipo double, readint devuelve un resultado de tipo int. Otros métodos
no devuelven ningún resultado explícitamente, como por ejemplo writeln.

A los métodos que devuelven un resultado explícitamente se les denomina funciones, a
los otros procedimientos.

1 INTRODUCCI ÓN

3

El programador también puede definir funciones o procedimientos propios. De hecho,
la utilización de procedimientos y funciones en el desarrollo de programas es la base del
diseño por refinamientos sucesivos y presenta las siguientes ventajas:

Ahorra esfuerzo y tiempo cuando en la resolución de un problema se repite fre-

cuentemente una misma secuencia de acciones.

Facilita la resolución de problemas complejos describiendo su solución en términos

de subproblemas más sencillos.

Incrementa la legibilidad de los programas.
A esta forma de diseñar algortimos o programas se le llama ’Diseño descendente’,
’Top Down’ o por ’refinamientos sucesivos’. Los pasos a seguir para emplear esta
metodología son:

1. Se considera el problema como un ’todo’.

2. Se divide el problema en subproblemas tal que, siendo de menor complejidad,

forman parte del problema completo.

3. Se vuelve a aplicar el paso 2 a los subproblemas obtenidos hasta llegar a problemas

de fácil solución o triviales.

4. Se solucionan los subproblemas ’triviales’ y se agregan estas soluciones para obte-

ner la solución al problema inicial.

De esta forma, el programador se concentra en solucionar problemas de menor com-
plejidad, tal que, la solución combinada de todos ellos, es la solución al problema com-
pleto. En Java, la solución a cada uno de estos problemas, se corresponde con un
método. Un programa en Java es una combinación de, al menos, 1 método. El método
que siempre existirá, en todo programa Java, es: ’main’.

En concreto, en la práctica número 4 se pedía el cálculo de la media aritmética de
los valores almacenados en un cierto vector, de todos y también de una serie de valores
consecutivos, y hacíamos:

double suma24h=0;

for (int i=0;i<72;i++) {

suma24h+=p_sisto[i];

}
m_sisto_24h=suma24h/72;

double sumad=0;

for (int i=24;i<69;i++) {

1 INTRODUCCI ÓN

sumad+=p_sisto[i];

}
m_sisto_d=sumad/45;

4

Se observa que el cálculo que se realiza es exactamente el mismo, las únicas diferencias
son: la posición inicial del vector y el número de valores que participan en el cálculo,
o la posición del último. Estos serán los parámetros de la operación que serán de tipo
el del índice del vector, esto es de tipo int. El resultado será la media aritmética que
será de tipo real double. Para efectuar el cálculo es necesaria la variable sobre la que
se acumula la suma de los valores que será una variable local de la función, variable que
será del mismo tipo que los valores que se suman y por lo tanto entera, int. En Java
está función se escribe de la manera siguiente:

//Calcula la media aritmética de n valores de p_sisto a partir del
índice inicio
double media (int inicio, int n) {

double suma=0;
for (int i=inicio;i<(ini+n);i++) {

suma+=p_sisto[i];

}

return (suma/n);

}

Si el segmento de programa anterior se reescribe haciendo uso de esta definición de

la función media quedaría:

m_sisto_24h=media(0,72);
m_sisto_d=media(24,45);

En el programa propuesto en la práctica 4 también se calculaban los valores de las
medias para el vector de medidas de presión diastólica. Para favorecer la reutilización
de esta función media se puede añadir un parámetro que sea el vector donde están
almacenadas las medidas que se van a analizar. Así:

//Calcula la media aritmética de n valores de v a partir del
índice inicio
double media (int v[], int inicio, int n) {

double suma=0;
for (int i=inicio;i<(ini+n);i++) {

suma+=v[i];

}

return (suma/n);

}

Y el segmento de código quedaría:

2 FUNCIONES

5

m_sisto_24h = media(p_sisto,0,72);
m_sisto_d

= media(p_sisto,24,45);

m_diasto_24h= media(p_diasto,0,72);
m_diasto_d = media(p_diasto,24,45);

2 Funciones

2.1 Definición y uso

Una función es un método que define el cálculo de un determinado valor. Distinguiremos
entre la definición de la función y la llamada a la función. La definición de una función
consta de una cabecera, una parte de declaraciones de variables locales y el bloque de
instrucciones que indican el cálculo a realizar. El resultado de la función será devuelto
mediante la instrucción return.

2.2 Parámetros y resultado

La cabecera de la función contiene la siguiente información:

El tipo del valor que devuelve la función.
El nombre de la función.
Entre paréntesis los nombres de los parámetros y los tipos de los mismos.
La sintaxis de la cabecera de una función en Java es:

static tipoResultado nombreFuncion (tipo1 param1, tipo2 param2,..)

Los parámetros que se usan en la definición de la función (param1 y param2) se llaman
parámetros formales. Son nombres genéricos que serán sustituidos por los valores que
se indiquen en la llamada a la función; a éstos se les denomina parámetros reales. En el
momento de la llamada, ambos tipos de parámetros han de coincidir en número y tipo
(según orden de aparición).

El resultado que devuelve la función es el que se indica en la instrucción return y
ha de ser del tipo especificado en la cabecera tipoResultado. En una función sólo se
ejecutará una instrucción ’return’, aunque en el cuerpo de la misma aparezcan varias.
Por ejemplo:

static int mayor (int x, int y) {

if (x>=Y) return x;
else return y;

}

2 FUNCIONES

6

El modificador de Java static es necesario para indicar que la función no está
asociada a un objeto, sino que es accesible como parte de la clase donde se define. En
el tema siguiente se explicará detalladamente lo que esto significa.

2.3 Efecto de la llamada a una función

Una llamada a una función se puede realizar siempre que el contexto sea válido para el
resultado que devuelve la función. Por ejemplo, si una función devuelve un resultado de
tipo int, puede ser llamada formando parte de una expresión aritmética, y en general
en la parte derecha de una instrucción de asignación sobre una var
  • Links de descarga
http://lwp-l.com/pdf2121

Comentarios de: Tema 6. ABSTRACCIÓN DE OPERACIONES. MÉTODOS (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad