Académique Documents
Professionnel Documents
Culture Documents
Estructura y Contenidos
5.1. SUBPROGRAMAS COMO ABSTRACCIN DE OPERACIONES.
5.2. LAS FUNCIONES EN C / C++.
5.2.1. Definicin de funciones. Parmetros formales y valor de retorno
5.2.2. Llamadas a funciones. Parmetros reales o actuales.
5.2.3. Declaracin o prototipos de funciones.
5.3. USO DE PARMETROS: DE ENTRADA, SALIDA Y ENTRADA / SALIDA.
5.4. PASO DE PARMETROS: POR VALOR Y POR REFERENCIA.
5.5. LOCALIDAD, ANIDAMIENTO, MBITO Y VISIBILIDAD.
5.6. FUNCIONES MATEMTICAS.
Fundamentos de Informtica
ETSI Industrial
1 Universidad de Mlaga
Tema 5: Subprogramas
OBJETIVOS
Establecer la necesidad de la subprogramacin
Implementar subprogramas en C / C++: las funciones
Diferenciar los conceptos de definicin, declaracin y llamada
de funciones
Diferenciar los distintos pasos de argumentos: por valor y por
referencia
Crear nuestras propias libreras de funciones
En definitiva, descomponer problemas complejos en problemas
ms simples mediante la subprogramacin
Fundamentos de Informtica
ETSI Industrial
2 Universidad de Mlaga
Tema 5: Subprogramas
Estructura y Contenidos
5.1. SUBPROGRAMAS COMO ABSTRACCIN DE OPERACIONES.
5.2. Las funciones en C / C++.
5.2.1. Definicin de funciones. Parmetros formales y valor de retorno
5.2.2. Llamadas a funciones. Parmetros reales o actuales.
5.2.3. Declaracin o prototipos de funciones.
5.3. Uso de parmetros: de entrada, salida y entrada / salida.
5.4. Paso de parmetros: por valor y por referencia.
5.5. Localidad, anidamiento, mbito y visibilidad.
5.6. Funciones matemticas.
Fundamentos de Informtica
ETSI Industrial
3 Universidad de Mlaga
ETSI Industrial
4 Universidad de Mlaga
Divide y vencers!
Abstraccin
QU
escribir_cuadrado
CMO
Separacin
Implementacin
Fundamentos de Informtica
ETSI Industrial
5 Universidad de Mlaga
Definicin
nica
control
retorno
Expansin de Cdigo:
Reutilizable, pero poco
flexible: subtarea fija
Fundamentos de Informtica
ETSI Industrial
6 Universidad de Mlaga
...
escribir_cuadrado(4)
...
escribir_cuadrado(5)
...
escribir_cuadrado(8)
...
Subprograma:
Trozo de cdigo que
resuelve una subtarea de
forma parametrizada
Fundamentos de Informtica
ETSI Industrial
7 Universidad de Mlaga
Tema 5: Subprogramas
Estructura y Contenidos
5.1. Subprogramas como abstraccin de operaciones.
5.2. LAS FUNCIONES EN C / C++.
5.2.1. Definicin de funciones. Parmetros formales y valor de retorno
5.2.2. Llamadas a funciones. Parmetros reales o actuales.
5.2.3. Declaracin o prototipos de funciones.
5.3. Uso de parmetros: de entrada, salida y entrada / salida.
5.4. Paso de parmetros: por valor y por referencia.
5.5. Localidad, anidamiento, mbito y visibilidad.
5.6. Funciones matemticas.
Fundamentos de Informtica
ETSI Industrial
8 Universidad de Mlaga
ETSI Industrial
9 Universidad de Mlaga
Variable local
Cuerpo de la
funcin
Fundamentos de Informtica
Lista de Parmetros
Formales separados
por comas
Tipos compatibles
Valor devuelto
ETSI Industrial
10 Universidad de Mlaga
ETSI Industrial
11 Universidad de Mlaga
Llamada
La funcin A llama a la B
La instruccin de llamada provoca la ejecucin de la funcin B sobre
los valores (parmetros) que le indiquemos
Al acabar la funcin B, puede que nos devuelva unos resultados
ETSI Industrial
12 Universidad de Mlaga
ETSI Industrial
13 Universidad de Mlaga
Parmetros formales
Parmetros reales
Fundamentos de Informtica
int num=3;
/*correctas*/
escribir_tabla(5);
escribir_tabla(num);
escribir_tabla(num+4);
/*incorrectas*/
num=escribir_tabla(4);
escribir_tabla(2,3);
escribir_tabla(a);
int x=3, y=-2, z;
/*correctas*/
z = mayor(x+2,y);
x = mayor(-14,5-2);
z = mayor(y,-10);
cout << mayor(2,3);
y = y + mayor(y,10);
/*incorrectas*/
mayor(-13,10);
x = mayor(2,10,34);
14 Universidad de Mlaga
ETSI Industrial
15 Universidad de Mlaga
ETSI Industrial
16 Universidad de Mlaga
17 Universidad de Mlaga
EJEMPLOS
Desarrolla los siguientes programas como ejemplo:
a) Se piden dos nmeros naturales m y n. El programa mostrar todas las
parejas de nmeros amigos que hay en el intervalo [m,n]. Dos nmeros
son amigos si la suma de los divisores del primero (sin contarse el mismo)
coincide con el segundo y viceversa. Nota: usa una funcin que, dado un
nmero, devuelva la suma de sus divisores (sin contarse el mismo).
b) Se piden dos nmeros naturales N e i. El programa mostrar el dgito
de N que ocupa la -sima posicin empezando por el dgito menos
significativo. En caso de no poder obtenerlo (por que se salga del rango)
mostrar -1. Nota: usa dos funciones, una que determine el nmero de
dgitos de un nmero y otra que, dado un nmero y una posicin, devuelva
el dgito que ocupa esa posicin dentro del nmero.
c) Se pide un nmero natural n y se imprimen por pantalla los n primeros
nmeros primos. El programa pregunta si se quiere repetir de nuevo el
proceso. Nota: usa una funcin que, dado un nmero natural, devuelva 1
si es primo, 0 si no lo es.
Fundamentos de Informtica
ETSI Industrial
18 Universidad de Mlaga
Tema 5: Subprogramas
Estructura y Contenidos
5.1. Subprogramas como abstraccin de operaciones.
5.2. Las funciones en C / C++.
5.2.1. Definicin de funciones. Parmetros formales y valor de retorno
5.2.2. Llamadas a funciones. Parmetros reales o actuales.
5.2.3. Declaracin o prototipos de funciones.
5.3. USO DE PARMETROS: DE ENTRADA, SALIDA Y ENTRADA / SALIDA.
5.4. Paso de parmetros: por valor y por referencia.
5.5. Localidad, anidamiento, mbito y visibilidad.
5.6. Funciones matemticas.
Fundamentos de Informtica
ETSI Industrial
19 Universidad de Mlaga
Datos de salida
de la funcin
Fundamentos de Informtica
ETSI Industrial
20 Universidad de Mlaga
Parmetros de Salida:
La funcin llamante llamante no pasa un valor, slo lo recibe
El parmetro formal SLO DEBE aparecer en la parte izquierda de una
asignacin dentro de la definicin de la funcin
Cualquier cambio en el parmetro formal (dentro de la definicin de la
funcin) se reflejar en el parmetro real de la llamada
Fundamentos de Informtica
ETSI Industrial
21 Universidad de Mlaga
a
-
x1
x2
discr
ETSI Industrial
22 Universidad de Mlaga
a
-
x1
x2
discr
ETSI Industrial
23 Universidad de Mlaga
temporal
/* intercambia valores */
temporal = a;
a = b;
b = temporal;
Intercambiar
Fundamentos de Informtica
ETSI Industrial
24 Universidad de Mlaga
Tema 5: Subprogramas
Estructura y Contenidos
5.1. Subprogramas como abstraccin de operaciones.
5.2. Las funciones en C / C++.
5.2.1. Definicin de funciones. Parmetros formales y valor de retorno
5.2.2. Llamadas a funciones. Parmetros reales o actuales.
5.2.3. Declaracin o prototipos de funciones.
5.3. Uso de parmetros: de Entrada, Salida y Entrada / Salida.
5.4. PASO DE PARMETROS: POR VALOR Y POR REFERENCIA.
5.5. Localidad, anidamiento, mbito y visibilidad.
5.6. Funciones matemticas.
Fundamentos de Informtica
ETSI Industrial
25 Universidad de Mlaga
ETSI Industrial
26 Universidad de Mlaga
Fundamentos de Informtica
ETSI Industrial
27 Universidad de Mlaga
ETSI Industrial
28 Universidad de Mlaga
Fundamentos de Informtica
int main()
{
float num1, num2, num3, temp;
cin >> num1 >> num2 >> num3;
if (num1 > num2)
{
temp = num1;
num1 = num2;
num2 = temp;
}
if (num1 > num3)
{
temp = num1;
num1 = num3;
num3 = temp;
}
if (num2 > num3)
{
temp = num2;
num2 = num3;
num3 = temp;
}
cout << num1 << num2 << num3;
return 0;
}
ETSI Industrial 29 Universidad de Mlaga
ETSI Industrial
30 Universidad de Mlaga
ETSI Industrial
31 Universidad de Mlaga
32 Universidad de Mlaga
Asla
Evita efectos laterales
Permite constantes y
Desventajas
Utiliza ms memoria
expresiones como
parmetro real
Utiliza menos memoria
parmetro real
Por referencia
laterales
Fundamentos de Informtica
ETSI Industrial
33 Universidad de Mlaga
ETSI Industrial
34 Universidad de Mlaga
Tema 5: Subprogramas
Estructura y Contenidos
5.1. Subprogramas como abstraccin de operaciones.
5.2. Las funciones en C / C++.
5.2.1. Definicin de funciones. Parmetros formales y valor de retorno
5.2.2. Llamadas a funciones. Parmetros reales o actuales.
5.2.3. Declaracin o prototipos de funciones.
5.3. Uso de parmetros: de Entrada, Salida y Entrada / Salida.
5.4. Paso de parmetros: por valor y por referencia.
5.5. LOCALIDAD, ANIDAMIENTO, MBITO Y VISIBILIDAD.
5.6. Funciones matemticas.
Fundamentos de Informtica
ETSI Industrial
35 Universidad de Mlaga
ETSI Industrial
36 Universidad de Mlaga
Fundamentos de Informtica
ETSI Industrial
37 Universidad de Mlaga
ETSI Industrial
38 Universidad de Mlaga
/* variable global */
ETSI Industrial
39 Universidad de Mlaga
Tema 5: Subprogramas
Estructura y Contenidos
5.1. Subprogramas como abstraccin de operaciones.
5.2. Las funciones en C / C++.
5.2.1. Definicin de funciones. Parmetros formales y valor de retorno
5.2.2. Llamadas a funciones. Parmetros reales o actuales.
5.2.3. Declaracin o prototipos de funciones.
5.3. Uso de parmetros: de Entrada, Salida y Entrada / Salida.
5.4. Paso de parmetros: por valor y por referencia.
5.5. Localidad, anidamiento, mbito y visibilidad.
5.6. FUNCIONES MATEMTICAS.
Fundamentos de Informtica
ETSI Industrial
40 Universidad de Mlaga
FUNCIONES MATEMTICAS
int abs(int)
valor absoluto
double exp(double)
exponencial
double log(double)
logaritmo neperiano
double log10(double)
logaritmo decimal
double pow(double,double)
Potencia
double sqrt(double)
raz cuadrada
double sin(double)
seno
double cos(double)
coseno
double tan(double)
tangente
double asin(double)
arco seno
double acos(double)
arco coseno
double atan(double)
arco tangente
ETSI Industrial
Tema 5:
41 Universidad de Mlaga
Subprogramas
Fundamentos de Informtica
ETSI Industrial
42 Universidad de Mlaga