Publicado el 5 de Enero del 2019
1.049 visualizaciones desde el 5 de Enero del 2019
2,7 MB
15 paginas
Creado hace 11a (11/11/2013)
Fundamentos de la programación
2
Grado en Ingeniería Electrónica y Comunicaciones
Pilar Sancho Thomas
Luis Hernández Yáñez
Facultad de Informática
Universidad Complutense
s
o
r
e
t
s
e
l
l
a
B
s
á
v
r
e
H
l
e
u
q
a
R
/
z
e
ñ
á
Y
z
e
d
n
á
n
r
e
H
s
i
u
L
Fundamentos de la programación: Tipos e instrucciones I
Página 82
tipo nombre(parámetros) // Cabecera
{
// Cuerpo
}
Los programas pueden incluir otras funciones además de main()
Forma general de una función en C++:
Tipo de dato que devuelve la función como resultado
Parámetros para proporcionar datos a la función
Declaraciones de variables separadas por comas
Cuerpo: secuencia de declaraciones e instrucciones
¡Un bloque de código!
Fundamentos de programación: Tipos e instrucciones I
Página 83
s
o
r
e
t
s
e
l
l
a
B
s
á
v
r
e
H
l
e
u
q
a
R
/
z
e
ñ
á
Y
z
e
d
n
á
n
r
e
H
s
i
u
L
Datos locales: declarados en el cuerpo de la función
Datos auxiliares que utiliza la función (puede no haber)
Parámetros: declarados en la cabecera de la función
Datos de entrada de la función (puede no haber)
Ambos son de uso exclusivo de la función y no se conocen fuera
double f(int x, int y) {
// Declaración de datos locales:
double resultado;
// Instrucciones:
resultado = 2 * pow(x, 5) + sqrt(pow(x, 3)
/ pow(y, 2)) / abs(x * y) - cos(y);
return resultado; // Devolución del resultado
yxf
,(
x
y
×
2
x
−
3
2
)
=
5
+
cos(
y
)
x
y
s
o
r
e
t
s
e
l
l
a
B
s
á
v
r
e
H
l
e
u
q
a
R
/
z
e
ñ
á
Y
z
e
d
n
á
n
r
e
H
s
i
u
L
}
Fundamentos de programación: Tipos e instrucciones I
Página 84
Llamada a una función con parámetros
Nombre(Argumentos)
Al llamar a la función:
— Tantos argumentos entre los paréntesis como parámetros
— Seguir el orden de declaración de los parámetros
— Cada argumento: mismo tipo que su parámetro
— Cada argumento: expresión válida (se pasa el resultado)
Se copian los valores resultantes de las expresiones
en los correspondientes parámetros
Llamadas a la función: en expresiones de otras funciones
int valor = f(2, 3);
Fundamentos de programación: Tipos e instrucciones I
Página 85
s
o
r
e
t
s
e
l
l
a
B
s
á
v
r
e
H
l
e
u
q
a
R
/
z
e
ñ
á
Y
z
e
d
n
á
n
r
e
H
s
i
u
L
Se copian los argumentos en los parámetros
int funcion(int x, double a) {
...
}
int main() {
int i = 124;
double d = 3;
funcion(i, 33 * d);
...
return 0; // main() devuelve 0 al S.O.
i
d
x
a
Los argumentos no se modifican
Memoria
124
3.0
...
...
124
99.0
...
s
o
r
e
t
s
e
l
l
a
B
s
á
v
r
e
H
l
e
u
q
a
R
/
z
e
ñ
á
Y
z
e
d
n
á
n
r
e
H
s
i
u
L
}
Fundamentos de programación: Tipos e instrucciones I
Página 86
Dadas las siguientes declaraciones:
Los argumentos y las variables se
pueden llamar igual o no
Nº de argumentos ≠ Nº de parámetros
¡Argumento double para parámetro int!
Nº de argumentos ≠ Nº de parámetros
¡Argumento double para parámetro int!
int i;
double d;
int func(int x, double a);
¿Qué pasos de argumentos son correctos? ¿Por qué no?
func(3, i, d);
func(i, d);
func(3 * i + 12, d);
func(d, i);
func(3.5, d);
func(i);
Fundamentos de programación: Tipos e instrucciones I
Página 87
s
o
r
e
t
s
e
l
l
a
B
s
á
v
r
e
H
l
e
u
q
a
R
/
z
e
ñ
á
Y
z
e
d
n
á
n
r
e
H
s
i
u
L
La función ha de devolver un resultado
La función termina su ejecución devolviendo un resultado
La instrucción return (sólo una en cada función)
— Devuelve el dato que se pone a continuación (tipo de la función)
— Termina la ejecución de la función
El dato devuelto sustituye a la llamada de la función:
int main() {
cout << 2 * cuad(16);
return 0;
}
256
int cuad(int x) {
return x * x;
x = x * x;
}
Esta instrucción
no se ejecutará nunca
Fundamentos de programación: Tipos e instrucciones I
Página 88
s
o
r
e
t
s
e
l
l
a
B
s
á
v
r
e
H
l
e
u
q
a
R
/
z
e
ñ
á
Y
z
e
d
n
á
n
r
e
H
s
i
u
L
¿Son correctas las llamadas a funciones del programa?
¿Qué funciones hay en el programa?
Colocaremos las funciones después de main()
— ¿Existe la función?
— ¿Concuerdan los argumentos con los parámetros?
Prototipos tras las inclusiones de bibliotecas
Prototipo de función: Cabecera de la función terminada en ;
int cuad(int x);
main() es la única función
que no hay que prototipar
double f(int x, int y);
int funcion(int x, double a)
...
Fundamentos de programación: Tipos e instrucciones I
Página 89
s
o
r
e
t
s
e
l
l
a
B
s
á
v
r
e
H
l
e
u
q
a
R
/
z
e
ñ
á
Y
z
e
d
n
á
n
r
e
H
s
i
u
L
#include <iostream>
using namespace std;
#include <cmath>
// Prototipos de las funciones (excepto main())
bool par(int num);
bool letra(char car);
int suma(int num);
double formula(double x, double y);
int main() {
int numero;
char caracter;
double x = 3.5, y = 2.2;
cout << "Entero: ";
cin >> numero;
//Se muestra si el número es par o impar
if (par(numero)) {
cout << "Par";
}
...
Fundamentos de programación: Tipos e instrucciones I
Página 90
s
o
r
e
t
s
e
l
l
a
B
s
á
v
r
e
H
l
e
u
q
a
R
/
z
e
ñ
á
Y
z
e
d
n
á
n
r
e
H
s
i
u
L
else {
cout << "Impar";
}
cout << endl;
//Si el número es mayor que 1 se hace el sumatorio de 1 a numero
if (numero > 1) {
cout << "Sumatorio de 1 a " << numero << ": "
<< suma(numero) << endl;
}
cout << "Carácter: ";
cin >> caracter;
//Se muestra si el carácter introducido es una letra
if (!letra(caracter)) {
cout << "no ";
}
cout << "es una letra" << endl;
cout << "f(x, y) = " << formula(x, y) << endl;
// Los argumentos pueden llamarse igual o no que los parámetros
return 0;
} ...
Fundamentos de programación: Tipos e instrucciones I
Página 91
s
o
r
e
t
s
e
l
l
a
B
s
á
v
r
e
H
l
e
u
q
a
R
/
z
e
ñ
á
Y
z
e
d
n
á
n
r
e
H
s
i
u
L
// Implementación de las funciones propias
bool par(int num) {
bool esPar;
if (num % 2 == 0) {
esPar = true;
}
else {
esPar = false;
}
return esPar;
}
...
Fundamentos de programación: Tipos e instrucciones I
Página 92
s
o
r
e
t
s
e
l
l
a
B
s
á
v
r
e
H
l
e
u
q
a
R
/
z
e
ñ
á
Y
z
e
d
n
á
n
r
e
H
s
i
u
L
esLetra = false;
if (carMayus <= 'Z')
bool letra(char car) {
bool esLetra;
char carMayus = toupper(car);
if (carMayus >= 'A') {
esLetra = true;
else
}
else {
esLetra = false;
}
return esLetra;
}
...
Fundamentos de programación: Tipos e instrucciones I
Página 93
s
o
r
e
t
s
e
l
l
a
B
s
á
v
r
e
H
l
e
u
q
a
R
/
z
e
ñ
á
Y
z
e
d
n
á
n
r
e
H
s
i
u
L
funciones.cpp
int suma(int num) {
int sum = 0, i = 1;
while (i < num) {
sum = sum + i;
i++;
}
return sum;
}
double formula(double x, double y) {
double f;
f = 2 * pow(x, 5) + sqrt(pow(x, 3) / pow(y, 2))
/ abs(x * y) - cos(y);
return f;
}
Fundamentos de programación: Tipos e instrucciones I
Página 94
s
o
r
e
t
s
e
l
l
a
B
s
á
v
r
e
H
l
e
u
q
a
R
/
z
e
ñ
á
Y
z
e
d
n
á
n
r
e
H
s
i
u
L
Licencia CC (Creative Commons)
Este tipo de licencias ofrecen algunos derechos a terceras personas
bajo ciertas condiciones.
Este documento tiene establecidas las siguientes:
Reconocimiento (Attribution):
En cualquier explotación de la obra autorizada por la licencia
hará falta reconocer la autoría.
No comercial (Non commercial):
La explotación de la obra queda limitada a usos no comerciales.
Compartir igual (Share alike):
La explotación autorizada incluye la creación de obras derivadas
siempre que mantengan la misma licencia al ser divulgadas.
Material original elaborado por Luis Hernández Yáñez, con
modificaciones de Raquel Hervás Ballesteros.
Fundamentos de la programación: Tipos e instrucciones I
Página 95
s
o
r
e
t
s
e
l
l
a
B
s
á
v
r
e
H
l
e
u
q
a
R
/
z
e
ñ
á
Y
z
e
d
n
á
n
r
e
H
s
i
u
L
Comentarios de: Fundamentos de programación - Tipos e instrucciones I (0)
No hay comentarios