Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptx
Acciones funciones
1. 1
2 Acciones y funciones
2.1 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 frag-
mentos de un algoritmo que se usan más de una vez dentro de un
mismo algoritmo o que se repiten en distintos algoritmos.
2. 2
2.2. Acciones y funciones
Ejemplo de definición de una función:
función distancia(x, y: real): real
devuelve (x2
+ y2
)1/2
;
ffunción
Cuando un algoritmo utiliza una acción o una función decimos que el algoritmo
llama (o invoca) a la acción o a la función correspondiente.
Tanto las definiciones de las acciones y funciones como las llamadas a éstas en los
algoritmos deben especificar sus parámetros. Los parámetros representan los da-
tos que manipula el algoritmo implementado por la acción o la función correspon-
diente.
Ejemplos de llamadas:
x := distancia(1,2);
y := distancia(3,4);
3. 3
l orden de los parámetros es importante. Los parámetros utilizados en las llamadas a
na función o a una acción deben escribirse en el mismo orden que los parámetros de
u definición.
(x,y) = (x2
– y2
)1/2
f(3,2) = 51/2
f(2,3) = (-5)1/2
Vamos a distinguir dos tipos de parámetros:
. Parámetros formales o simplemente parámetros: son los que se utilizan
en la definición de una función o de una acción.
. Parámetros reales o argumentos: son los utilizados en las llamadas a una
función o a una acción.
n el ejemplo anterior “x” e “y” son parámetros formales, mientras 3 y 2 son
arámetros reales.
ada llamada a una función o a una acción tiene unos parámetros reales distintos.
:= f(3,2) → los parámetros reales de esta llamada a la función f son 3 y 2.
:= f(5,4) → los parámetros reales de esta llamada a la función f son 5 y 4.
4. 4
Los parámetros pueden clasificarse de acuerdo con otros criterios. A continuación
introducimos una segunda clasificación:
1. Parámetros de entrada (ent): representan datos que necesita conocer el algo-
ritmo. Su valor no se modifica durante la ejecución del algoritmo.
2. Parámetros de salida (sal): representan los resultados del algoritmo. El algo-
ritmo modifica su valor durante la ejecución de manera que reflejen los resul-
tados obtenidos.
3. Parámetros de entrada y salida (ent/sal): representan datos cuyo valor ini-
cial es necesario para el algoritmo, pero cuyo valor queda modificado duran-
te la ejecución de éste.
Las acciones utilizan parámetros de estos tres tipos: entrada, entrada/salida y
salida.
Las funciones sólo utilizan parámetros de entrada y se caracterizan porque
siempre devuelven un valor.
5. 5
2.3. Definición de funciones
Las funciones se caracterizan porque sólo tienen parámetros de entrada y siempre
devuelven un valor.
En la definición de las funciones se especifica el tipo de valores que puede tomar
cada parámetro y el tipo de valor que devuelve la función. Toda definición de una
función contiene al menos una instrucción del tipo “devuelve expresión”.
función Mínimo(x, y: entero): entero
var r: entero fvar
si x < y entonces
r := x;
si no
r := y;
fsi
devuelve r;
ffunción
6. 6
función Factorial(n: entero): entero
var r, i: entero fvar
r:=1;
si n > 1 entonces
para i:=2 hasta n hacer
r := r*i;
fpara
fsi
devuelve r;
ffunción
Ejemplos de llamadas correctas a estas funciones:
algoritmo Minimo y tabla de factoriales
var x, y, k, n: entero fvar
Escribir(“Introduzca dos enteros: “); LeerEntero(x); LeerEntero(y);
Escribir(“El mínimo es: “); EscribirEntero(Mínimo(x,y));
Escribir(“Introduzca un entero: “); LeerEntero(n);
para k:=0 hasta n hacer
Escribir(“El factorial de “); Escribir(k); Escribir(“ es “);
Escribir(Factorial(k)); Escribir(‘n’);
fpara
falgoritmo
7. 7
2.4. Definición de acciones
En la definición de las acciones se indica para cada parámetro si es de entrada
(ent), salida (sal) o entrada/salida (ent/sal), el nombre del parámetro y el tipo
de valores que puede tomar.
acción saludo( )
Escribir(“Hola. ¿Qué tal?“);
facción
acción escribir_resultado(ent resultado: real)
Escribir(“El resultado es “); EscribirReal(resultado);
facción
acción leer_real_positivo(sal x: real)
LeerReal(x);
mientras ( x < 0 ) hacer
LeerReal(x);
fmientras
facción
8. 8
acción intercambiar(ent/sal x, y: real)
var auxiliar: real fvar
auxiliar := x;
x := y;
y := auxiliar;
facción
Ejemplos de llamadas correctas a estas acciones:
algoritmo
var x, y: real fvar
x=2; y=3;
saludo( );
escribir_resultado(x+y);
leer_real_positivo(y);
Escribir(“x = “); EscribirReal(x); Escribir(“ y = “); EscribirReal(y);
intercambiar(x,y);
Escribir(“x = “); EscribirReal(x); Escribir(“ y = “); EscribirReal(y);
falgoritmo
9. 9
Ejemplo: Algoritmo que utiliza acciones y funciones.
algoritmo Máximo par de una lista de N números positivos.
const N: entero = 10 fconst
var x, máximo: real; i, contador : entero fvar
máximo:=0.0; contador=0;
para i:=1 hasta N hacer
leer_real_positivo(x);
si par(x) entonces
contador := contador + 1;
máximo := max(máximo,x)
fsi
fpara
si (contador > 0) entonces
Escribir(“El máximo número par introducido es “); Escribir(máximo);
si no
Escribir(“No se ha introducido ningún número par.”);
fsi
falgoritmo
10. 10
acción leer_real_positivo(sal número: real)
LeerReal(número);
mientras número < 0 hacer
LeerReal(número);
fmientras
facción
función max(a, b: real): real
var resultado: entero fvar
si a > b entonces
resultado := a;
si no
resultado := b;
fsi
devuelve resultado;
ffunción
función par(a: real): booleano
devuelve ( RealAEntero(a) mod 2 = 0);
ffunción
11. 11
Acciones y funciones en C
Las acciones y funciones se definen después del programa principal (i.e., main).
En C se distinguen dos tipos de parámetros, en lugar de los tres tipos (entrada,
salida y entrada-salida) que se consideran en la notación algorítmica.
1. Parámetros que se pasan por valor: la función o acción trabaja con una copia
de ellos y no modifica su valor.
2. Parámetros que se pasan por variable o referencia: la acción trabaja con una
referencia (tipo&) a la variable original y modifica realmente su valor. Estos
parámetros se marcan con el símbolo & detrás del tipo en la primera línea de
la definición de una acción y en su prototipo.
El prototipo de una acción o función se coloca en la cabecera del programa, antes
de la definición de main. Los prototipos de las distintas acciones y funciones que
se usan en un programa se escriben en líneas separadas y se recomienda que apa-
rezcan en el mismo orden que las definiciones de las acciones y funciones.
12. 12
Definición de funciones
Es necesario preceder la definición de una función con una declaración del tipo de
valor que devuelve la función. La expresión “devuelve exp;” que aparece siempre
en el cuerpo de una función, se traduce por “return exp;”. Las variables locales se
definen en primer lugar, antes que las instrucciones de la función.
función Mínimo(x, y: real): real
var resultado: real fvar
si x < y entonces resultado := x si no resultado := y fsi
devuelve resultado
ffunción
double Minimo(double x, double y) {
double resultado;
if (x < y) {resultado = x;} else {resultado = y;}
return resultado;
}
El prototipo de una funcción se obtiene sustituyendo “{“ por “;” en la primera línea
de su definición:
double Minimo(double x, double y);
13. 13
función Factorial(n: entero): entero
var r, i: entero fvar
r:=1;
si n > 1 entonces
para i:=2 hasta n hacer
r:=r*i;
fpara
fsi
devuelve r;
ffunción
int Factorial(int n) {
int r=1, i;
if (n > 1) {
for (i=2; i <= n; i++) {
r = r*i;
}
}
return r;
}
14. 14
#include <stdlib.h>
#include <iostream>
using namespace std;
int factorial(int n); /* Prototipo*/
int main (void) {
int i, N;
cout << “Este programa escribe la tabla de los N primeros factoriales” << endl;
cout << “Introduzca N: “;
cin >> N;
for (i=0; i<N; i++) {
cout << “El factorial de “ << i << “ es “ << factorial(i) << endl; } /* Llamada */
system(“pause”);
}
int factorial(int n) { /* Definición */
int r=1, i;
if (n > 1) {
for (i=2; i <= n; i++) { r = r*i; }
}
return r;
}
15. 15
Definición de acciones
En la definición de una acción se utiliza la palabra clave void para indicar que no
devuelve ningún valor.
acción escribir_resultado(ent resultado: real)
Escribir(“El resultado es “); EscribirReal(resultado);
facción
void escribir_resultado(double resultado) {
cout << “ El resultado es “ << resultado;
}
Los parámetros que se pasan por variable o referencia se indican utilizando el sím-
bolo & después de su tipo en la cabecera de la acción y en su prototipo, pero no en
el cuerpo de la acción ni en las llamadas a ésta.
acción leer_real_positivo(sal x: real)
Escribir(“Numero positivo: ”); Leer(x);
mientras ( x < 0 ) hacer
Escribir(“Numero positivo: ”);
Leer(x);
fmientras
void leer_real_positivo(double& x) {
cout << “Numero positivo: ”; cin >> x;
while (x<0) {
cout << “Numero positivo: “; cin << x;
}
}
16. 16
Los parámetros que se pasan por variable o referencia se indican utilizando el sím-
bolo & después de su tipo en la cabecera de la acción y en su prototipo, pero no en
el cuerpo de la acción ni en las llamadas a ésta.
acción intercambiar(ent/sal x, y: entero)
var auxiliar: entero fvar
auxiliar := x; x := y; y := auxiliar;
facción
void intercambiar(int& x, int& y) {
int auxiliar;
auxiliar = x; x = y; y = auxiliar;
}
Las variables locales se definen en primer lugar, antes que las instrucciones de la
ac-
ción.
El prototipo de una acción se obtiene sustituyendo “{“ por “;” en la primera línea de
su definición:
void intercambiar(int& x, int& y);
17. 17
Si una acción no tiene parámetros se indica colocando la palabra clave void en
lugar
de éstos en su definición.
acción saludo( )
Escribir(“Hola. ¿Qué tal?“);
facción
void hello(void) {
cout << “Hola!”;
}
18. 18
Utilización de las acciones y funciones
Las funciones o acciones pueden ser utilizadas en la función principal (i.e., main) de
un programa o en otras acciones y funciones definidas dentro del programa siempre
que sus prototipos se hayan declarado antes de la definición de main.
Cuando esto ocurre se dice que existe una llamada a la función o acción correspon-
diente. Una llamada a una función o acción simplemente contiene el nombre de la
función o acción seguido de los parámetros reales a los que se quiere aplicar.
Ilustramos la utilización de acciones y funciones con una implementación en C del
algoritmo que calcula el máximo número par de una lista de N números positivos.
#include <stdlib.h>
#include <iostream>
#define N 10
using namespace std;
/* Prototipos de las funciones y acciones utilizadas en el programa. */
void leer_real_positivo(double& x);
bool par(double x);
double max(double x, double y);
19. 19
int main(void) {
double numero, maximo=0.0;
int i, contador=0;
for (i=1; i <= N; i++) {
leer_real_positivo(numero);
if ( par(numero) ) {
contador++;
maximo = max(maximo, numero);
}
}
if (contador > 0) {
cout << “El maximo numero par introducido es “ << maximo << endl;
} else {
cout << “No se ha introducido ningún número par.” << endl;
}
system(“pause”);
}