Академический Документы
Профессиональный Документы
Культура Документы
Estructura y Contenidos
5.1. SUBPROGRAMAS COMO ABSTRACCIÓN DE OPERACIONES.
5.2. LAS FUNCIONES EN C / C++.
5.2.1. Definición de funciones. Parámetros formales y valor de retorno
5.2.2. Llamadas a funciones. Parámetros reales o actuales.
5.2.3. Declaración o prototipos de funciones.
5.3. USO DE PARÁMETROS: DE ENTRADA, SALIDA Y ENTRADA / SALIDA.
5.4. PASO DE PARÁMETROS: POR VALOR Y POR REFERENCIA.
5.5. LOCALIDAD, ANIDAMIENTO, ÁMBITO Y VISIBILIDAD.
5.6. FUNCIONES MATEMÁTICAS.
Fundamentos de Informática ETSI Industrial 1 Universidad de Málaga José Antonio Gómez Ruiz
Tema 5: Subprogramas
OBJETIVOS
9 Establecer la necesidad de la subprogramación
9 Implementar subprogramas en C / C++: las funciones
9 Diferenciar los conceptos de definición, declaración y llamada
de funciones
Fundamentos de Informática ETSI Industrial 3 Universidad de Málaga José Antonio Gómez Ruiz
¡Divide y vencerás!
Separación
Fundamentos de Informática ETSI Industrial 6 Universidad de Málaga José Antonio Gómez Ruiz
SUBPROGRAMAS COMO ABSTRACCIÓN DE
OPERACIONES
Fundamentos de Informática ETSI Industrial 7 Universidad de Málaga José Antonio Gómez Ruiz
Tema 5: Subprogramas
Estructura y Contenidos
Fundamentos de Informática ETSI Industrial 8 Universidad de Málaga José Antonio Gómez Ruiz
LAS FUNCIONES EN C / C++
Algunos lenguajes de programación tienen dos tipos distintos de
subprogramas: procedimientos y funciones
Los subprogramas en el lenguaje C/C++ son sólo funciones
Un programa en C/C++ está estructurado en funciones
¾ De hecho, main es una función, la función principal del programa
¾ La función A llama a la B
¾ La instrucción de llamada provoca la ejecución de la función B sobre
los valores (parámetros) que le indiquemos
¾ Al acabar la función B, puede que nos devuelva unos resultados
Se realiza escribiendo el nombre de la función, seguido de los
parámetros sobre los que operar. Estos parámetros se denominan
parámetros reales
La llamada a una función puede hacerse en cualquier lugar donde
pueda utilizarse una expresión del tipo de devolución de la función
Fundamentos de Informática ETSI Industrial 12 Universidad de Málaga José Antonio Gómez Ruiz
LAS FUNCIONES EN C / C++
Se crea una interfaz de comunicación entre la función llamante y la
llamada, permitiendo el intercambio de información entre ellas
Los parámetros formales de una función no son obligatorios pero, si
aparecen, deben tener cierta relación con los parámetros reales de
una hipotética llamada a la misma:
¾ El número de parámetros reales debe coincidir con el de parámetros
formales
¾ El i-ésimo parámetro real se corresponde con el i-ésimo formal
¾ El tipo del i-ésimo parámetro real debe ser compatible que el del i-
ésimo formal
¾ Los parámetros de una función pueden ser de cualquier tipo
¾ Los nombres de un parámetro formal y su correspondiente real pueden
ser diferentes
Fundamentos de Informática ETSI Industrial 13 Universidad de Málaga José Antonio Gómez Ruiz
EJEMPLOS
Desarrolla los siguientes programas como ejemplo:
a) Se piden dos números naturales m y n. El programa mostrará todas las
parejas de números amigos que hay en el intervalo [m,n]. Dos números
son amigos si la suma de los divisores del primero (sin contarse el mismo)
coincide con el segundo y viceversa. Nota: usa una función que, dado un
número, devuelva la suma de sus divisores (sin contarse el mismo).
Fundamentos de Informática ETSI Industrial 19 Universidad de Málaga José Antonio Gómez Ruiz
Datos de entrada a
la función
Datos de salida
de la función
Fundamentos de Informática ETSI Industrial 20 Universidad de Málaga José Antonio Gómez Ruiz
USO DE LOS PARÁMETROS: E, S, E/S
Parámetros de Entrada:
¾ La función que llama pasa un valor que no puede ser modificado por la
función llamada, sólo puede ser utilizado
¾ El parámetro formal NO DEBE aparecer en la parte izquierda de una
asignación dentro de la función
Parámetros de Entrada y Salida:
¾ La función llamante pasa un valor que puede ser utilizado y modificado
dentro de la función llamada
¾ Cualquier cambio en el parámetro formal (dentro de la definición de la
función) se reflejará en el parámetro real de la llamada
Parámetros de Salida:
¾ La función llamante llamante no pasa un valor, sólo lo recibe
¾ El parámetro formal SÓLO DEBE aparecer en la parte izquierda de una
asignación dentro de la definición de la función
¾ Cualquier cambio en el parámetro formal (dentro de la definición de la
función) se reflejará en el parámetro real de la llamada
Fundamentos de Informática ETSI Industrial 21 Universidad de Málaga José Antonio Gómez Ruiz
? ? ? ? ?
a b c x1 x2
- discr
/* raíces ecuación 2do. grado*/
discr = b*b-4.0*a*c;
if (discr>0.0)
{
x1 = (-b+raiz(discr))/(2.0*a);
x2 = (-b-raiz(discr))/(2.0*a);
}
...
Ec2Grado
Fundamentos de Informática ETSI Industrial 22 Universidad de Málaga José Antonio Gómez Ruiz
USO DE LOS PARÁMETROS: E, S, E/S
Parámetros de Salida:
¾ Devuelven información a la función que llama
? ? ? ? ?
a b c x1 x2
- discr
/* raíces ecuación 2do. grado*/
discr = b*b-4.0*a*c;
if (discr>0.0)
{
x1 = (-b+raiz(discr))/(2.0*a);
x2 = (-b-raiz(discr))/(2.0*a);
}
...
Ec2Grado
Fundamentos de Informática ETSI Industrial 23 Universidad de Málaga José Antonio Gómez Ruiz
- -
a b
- temporal
/* intercambia valores */
temporal = a;
a = b;
b = temporal;
Intercambiar
Fundamentos de Informática ETSI Industrial 24 Universidad de Málaga José Antonio Gómez Ruiz
Tema 5: Subprogramas
Estructura y Contenidos
Fundamentos de Informática ETSI Industrial 25 Universidad de Málaga José Antonio Gómez Ruiz
Fundamentos de Informática ETSI Industrial 27 Universidad de Málaga José Antonio Gómez Ruiz
Fundamentos de Informática ETSI Industrial 28 Universidad de Málaga José Antonio Gómez Ruiz
PASO PARÁMETROS POR REFERENCIA
/* ordena tres números */
#include <iostream>
using namespace std;
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;
Fundamentos de Informática } ETSI Industrial 29 Universidad de Málaga José Antonio Gómez Ruiz
CUADRO RESUMEN
Ventajas Desventajas
• Aísla • Utiliza más memoria
• Evita efectos laterales
Por valor • Permite constantes y
expresiones como
parámetro real
Fundamentos de Informática ETSI Industrial 33 Universidad de Málaga José Antonio Gómez Ruiz
Fundamentos de Informática ETSI Industrial 34 Universidad de Málaga José Antonio Gómez Ruiz
Tema 5: Subprogramas
Estructura y Contenidos
Fundamentos de Informática ETSI Industrial 35 Universidad de Málaga José Antonio Gómez Ruiz
Fundamentos de Informática ETSI Industrial 36 Universidad de Málaga José Antonio Gómez Ruiz
LOCALIDAD, ANIDAMIENTO, ÁMBITO Y
VISIBILIDAD
Sólo permitiremos declarar variables al principio del cuerpo de
las funciones
Fundamentos de Informática ETSI Industrial 37 Universidad de Málaga José Antonio Gómez Ruiz
Tema 5: Subprogramas
Estructura y Contenidos
Fundamentos de Informática ETSI Industrial 40 Universidad de Málaga José Antonio Gómez Ruiz
FUNCIONES MATEMÁTICAS
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) raíz 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
Tema 5: Subprogramas
Fundamentos de Informática ETSI Industrial 42 Universidad de Málaga José Antonio Gómez Ruiz