acciones y funciones concepto una acción o una función es un conjunto de instrucciones

15
1 y funciones una función es un conjunto de instruccione las que se da un nombre que permite referir almente. ón de acciones y funciones hace que los pro ás cortos y sencillos. il construir acciones y funciones para repr e un programa que se usan más de una vez de ograma o que se repiten en distintos progra

Upload: magee

Post on 11-Jan-2016

38 views

Category:

Documents


0 download

DESCRIPTION

Acciones y funciones Concepto Una acción o una función es un conjunto de instrucciones agrupadas a las que se da un nombre que permite referirse a ellas globalmente. La utilización de acciones y funciones hace que los programas sean mucho más cortos y sencillos. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Acciones y funciones Concepto Una acción o una función es un conjunto de instrucciones

1

Acciones y funciones

Concepto

Una acción o una función es un conjunto de instrucciones agrupadas a las que se da un nombre que permite referirse a ellas globalmente. La utilización de acciones y funciones hace que los programas sean mucho más cortos y sencillos.

Suele ser útil construir acciones y funciones para representar fragmentos de un programa que se usan más de una vez dentro del mismo programa o que se repiten en distintos programas.

Page 2: Acciones y funciones Concepto Una acción o una función es un conjunto de instrucciones

2

Funciones: declaraciones y definiciones

Una función es un conjunto de instrucciones al que se asig-na un nombre. Este grupo de instrucciones se ejecuta cada vez que se invoca su nombre.

La declaración de una función especifica: • su nombre• el número de parámetros • el tipo de dato de cada parámetro• el tipo del valor que devuelve

Ejemplo: double distancia (double x, double y);

Page 3: Acciones y funciones Concepto Una acción o una función es un conjunto de instrucciones

3

La información contenida en la declaración de una función se denomina prototipo. Es la interfaz que la función pre-senta al resto de las funciones. Si otras funciones desean utilizarla, basta con que conozcan su prototipo y adapten las llamadas al mismo, es decir, pasen el número de argu-mentos especificado con los tipos adecuados.

Las variables que se usan en la declaración o en la definición de una función se denominan parámetros. El término argumentos se reserva para los valores que se dan a los parámetros en las llamadas a una función.

La definición de una función consiste en la declaración junto con el cuerpo de la función, es decir, las instruc-ciones que contiene.

Page 4: Acciones y funciones Concepto Una acción o una función es un conjunto de instrucciones

4

Ejemplo:

double distancia (double x, double y) {

double dist = (x - y);

if ( dist < 0 )

dist = -dist;

return dist;

}

La instrucción return devuelve a la función que invocó a "distancia" el control del programa junto con el valor de la distancia entre x e y.

Page 5: Acciones y funciones Concepto Una acción o una función es un conjunto de instrucciones

5

Paso de argumentos por: valor o referencia

Para que una función con parámetros pueda ejecutarse, debe recibir valores para sus parámetros. El número y tipo de los valores deben concordar con el número y tipo de los parámetros.

Recordemos que los valores que aparecen en la llamada de una función se denominan argumentos. Los parámetros son los identificadores utilizados en la definición de la función. Estos identificadores sólo están disponibles mientras se ejecuta la función.

En el siguiente ejemplo main llama a la función distancia con la siguiente lista de argumentos (p1, p2). El parámetro x recibe el argumento p1 y el parámetro y el argumento p2.

Page 6: Acciones y funciones Concepto Una acción o una función es un conjunto de instrucciones

6

#include <iostream>

using namespace std;

double distancia (double x, double y);

int main (void) {

double p1 = 2.3, p2 = -33.3, d = distancia(p1, p2);

cout << d << endl;

system("pause"); }

double distancia (double x, double y) {

double dist = (x-y);

if ( dist < 0 ) dist = -dist;

return dist; }

Page 7: Acciones y funciones Concepto Una acción o una función es un conjunto de instrucciones

7

Al llamar a una función, main le entrega el control. La si-guiente instrucción que se ejecuta es la primera instruc-ción de la función. La función devuelve el control a main mediante su instrucción return.

double distancia (double x, double y) {

double dist = (x-y);

if ( dist < 0 ) dist = -dist;

return dist; }

La función que llama puede ignorar el valor devuelto por la función llamada. En este caso, main lo guarda en la varia-ble d y lo escribe en la pantalla.

d = distancia(p1, p2);

Page 8: Acciones y funciones Concepto Una acción o una función es un conjunto de instrucciones

8

Existen dos formas de pasar argumentos a una función:

Por valor: las instrucciones de la función no operan con el argumento que se les pasa, sino con una copia local del mismo que se elimina una vez ejecutada la función. El argumento no queda alterado como resultado de la ejecu-ción de la función.

Por referencia: las instrucciones de la función operan directamente con el argumento que se les pasa.

Lo habitual es que las funciones hagan copias locales de sus argumentos, i.e., el paso de argumentos por valor. Para conseguir que una función opere sobre una variable y no sobre una copia de la misma, hay que pasarle su dirección. Los cambios que se hagan sobre los datos a través de su dirección persistirán después de la ejecución de la función.

Page 9: Acciones y funciones Concepto Una acción o una función es un conjunto de instrucciones

9

#include <iostream> using namespace std;

void intercambio (double& a, double& b);

int main (void) { double x=2.3, y=-33.3; cout << "x = " << x << " y = " << y << endl; intercambio(x, y); cout << "x = " << x << " y = " << y << endl; system("pause"); }

void intercambio (double& a, double& b) { double temp; temp = a; a = b; b = temp; }

Page 10: Acciones y funciones Concepto Una acción o una función es un conjunto de instrucciones

10

Los parámetros de la acción intercambio son referencias a variables de tipo double. Cuando se realiza el paso de ar-gumentos por referencia se copia la dirección de los argu-mentos en los parámetros de modo que las variables x y a apunten a la misma dirección de memoria, y las variables b e y apunten a la misma dirección de memoria. Esto es, los parámetros de la acción (las variables a y b) son refe-rencias a las variables utilizadas como argumentos en la llamada (las variables x e y).

Los parámetros que se pasan por referencia se marcan con el símbolo & detrás del tipo en la primera línea de la defini-ción de una acción y en su prototipo, pero no en el cuerpo de la acción ni en las llamadas a ésta.

Page 11: Acciones y funciones Concepto Una acción o una función es un conjunto de instrucciones

11

Acciones y Funciones

Las funciones se caracterizan porque sólo aceptan argumen-tos que se pasan por valor y siempre devuelven un valor.

• Toda definición de una función contiene al menos una ins-trucción del tipo return expresion.

• Las funciones generan expresiones (es decir, datos).

Las acciones se caracterizan porque no devuelven ningún valor, y aceptan argumentos que se pasan por valor o por referencia.

• Las acciones modifican el estado del programa o produ-cen efectos.

Page 12: Acciones y funciones Concepto Una acción o una función es un conjunto de instrucciones

12

Recursividad

Una definición es recursiva si el concepto definido forma parte de la definición.

Por ejemplo, la potencia de un número se puede definir de forma recursiva. Sea b un número entero y e un número entero mayor o igual que 2. Se define b elevado a e como:

– b multiplicado por b elevado a e-1, si e > 2; – b multiplicado por b, si e = 2.

Page 13: Acciones y funciones Concepto Una acción o una función es un conjunto de instrucciones

13

#include <iostream>

using namespace std;

int pot(int base, int exponente);

int main (void) {

int b=2, e=3;

cout << pot(b,e) << endl;

system("pause"); }

int pot (int base, int exponente) {

if (exponente == 2)

return (base*base);

else

return (base * pot(base, exponente-1)); }

Page 14: Acciones y funciones Concepto Una acción o una función es un conjunto de instrucciones

14

Vamos a analizar la siguiente llamada "pot(2,3)". La función definida ejecuta la instrucción

return (2 * pot(2,2));

El control no se devuelve a main debido a la nueva llamada a “pot” en el argumento de return. Esta segunda llamada ejecuta la instrucción

return (2*2);

Esta instrucción sí devuelve el control, pero no a main, sino a pot(2,3). Esta última función, a su vez, devuelve el control a main en la instrucción

return (2*4);

Page 15: Acciones y funciones Concepto Una acción o una función es un conjunto de instrucciones

15

#include <iostream>

using namespace std;

int pot(int base, int exponente);

int main (void) {

int x=2, e=3; cout << pot(x,e) << endl; system("pause");}

int pot (int base, int exponente) {

int res, i;

if (exponente == 2) res = base*base;

else { res = base;

for (i=1; i < exponente; i++) res *= base;

}

return res; }