Funciones de uno o varios par´ ametros
Jonatan Gom´ ez Perdomo, Ph.D.
Arles Rodr´ıguez, Ph.D.(c)
Camilo Cubides, Ph.D.(c)
Grupo de investigaci´on en vida artificial – Research Group on Artificial Life – (Alife) Departamento de Ingenier´ıa de Sistemas e Industrial
Facultad de Ingenier´ıa Universidad Nacional de Colombia
Funciones de un par´ametro de entrada
Agenda
1
Funciones de un par´ ametro de entrada Cuadrado de un n´ umero
Area de un c´ırculo ´
2
Compilaci´ on y ejecuci´ on de funciones
3
Funciones con m´ as de un par´ ametro de entrada
Area de un rect´ ´ angulo
Definici´ on de funciones de un par´ ametro
En programaci´ on, as´ı como en matem´ aticas, para las funciones definidas como f : A → B, al conjunto A se le denomina dominio y al conjunto B como rango. A partir de estos objetos se construye el encabezado de las funciones de programaci´ on.
Sobre esta funci´ on se tiene que f corresponde al nombre de la funci´ on, el
conjunto A corresponde al tipo de los argumentos de dicha funci´ on y el
conjunto B que es el rango corresponder´ a al valor de retorno de dicha
funci´ on.
Funciones de un par´ametro de entrada Cuadrado de un n´umero
Agenda
1
Funciones de un par´ ametro de entrada Cuadrado de un n´ umero
Area de un c´ırculo ´
2
Compilaci´ on y ejecuci´ on de funciones
3
Funciones con m´ as de un par´ ametro de entrada
Area de un rect´ ´ angulo
Cuadrado de un n´ umero I
Ejemplo
Se definir´ a una funci´ on que eleve un n´ umero al cuadrado. Para expresar una funci´ on que calcul´ e esta operaci´ on, en primera instancia se construye la expresi´ on f : R → R que define la funci´on tiene como entrada (dominio) un n´ umero real y como salida (rango) un n´ umero real. La declaraci´ on de la funci´ on junto con su cuerpo quedar´ a de la siguiente forma
f : R → R (x ) 7→ x
2Esta funci´ on tambi´ en podr´ıa notarse como
f = (x, x
2) : (x ∈ R) .
Funciones de un par´ametro de entrada Cuadrado de un n´umero
Cuadrado de un n´ umero II
Ejemplo (continuaci´ on)
Dicha funci´ on se traduce en lenguaje C++ paso a paso de la siguiente forma:
Primero se escribe el tipo de retorno (rango). Como es real, el tipo de dato es double.
double
Posteriormente se escribe el nombre de la funci´ on f.
double f
Entre par´ entesis se coloca el tipo y la variable de las variables del dominio. En este caso solamente se tiene la variable x quedando double x y se coloca una llave abierta {.
double f(double x){
Cuadrado de un n´ umero III
Ejemplo (continuaci´ on)
En las siguientes l´ıneas se escribe la definici´ on de la funci´ on entre las llaves terminando con punto y coma ; cada linea de la funci´ on. Dicha definici´ on de funci´ on corresponde al algoritmo ´ o computo, para generar la imagen calculada de la funci´ on se utiliza la palabra clave return, de la siguiente manera
double f(double x){
return x * x;
Funciones de un par´ametro de entrada Cuadrado de un n´umero
Cuadrado de un n´ umero IV
Ejemplo (continuaci´ on)
Despu´ es de escribir la funci´ on se cierra la llave } seguida de un punto y coma ;.
double f(double x){
return x * x;
};
Para el caso del cuadrado, este no se puede calcular directamente, pues la potencia no es una operaci´ on matem´ atica b´ asica; por lo que se puede escribir el cuadrado como el resultado de realizar la multiplicaci´ on x * x.
En el tema de recursividad se definir´ a la potenciaci´ on como una funci´ on.
Cuadrado de un n´ umero V
Ejemplo (continuaci´ on)
Otra posible definici´ on de esta funci´ on podr´ıa escribirse almacenando el valor del producto x * x en una variable de tipo double y retorn´ andolo as´ı:
double f(double x){
double y;
y = x * x;
return y;
};
Esto es similar al caso cuando se utiliza la notaci´ on
f (x ) = y
Funciones de un par´ametro de entrada Area de un c´ırculo´
Agenda
1
Funciones de un par´ ametro de entrada Cuadrado de un n´ umero
Area de un c´ırculo ´
2
Compilaci´ on y ejecuci´ on de funciones
3
Funciones con m´ as de un par´ ametro de entrada
Area de un rect´ ´ angulo
Area de un c´ırculo I ´
Ejemplo
Para el desarrollo de esta funci´ on lo primero es determinar el nombre. La funci´ on se llamar´ a area circulo cuyo dominio es el conjunto de los n´ umeros reales (para el radio) y cuyo rango pertenece al conjunto de los n´ umeros reales (el valor de retorno que corresponde al ´ area del c´ırculo).
Teniendo en cuenta que el algoritmo para el c´ alculo del ´ area de un c´ırculo depende del valor de su radio, entonces, el ´ area del c´ırculo est´ a dada por la expresi´ on A
c= πr
2, donde las variables est´ an definidas as´ı:
r := Radio del c´ırculo
A
c:= ´ Area del c´ırculo de radio r
Funciones de un par´ametro de entrada Area de un c´ırculo´
Area de un c´ırculo II ´
Ejemplo (continuaci´ on)
entonces, el planteamiento matem´ atico de la funci´ on solicitada ser´ a el siguiente
area circulo : R → R (r ) 7→ πr
2Para utilizar el valor de π se debe tomar una aproximaci´ on, ya que π es un n´ umero irracional, esta aproximaci´ on podr´ıa ser el valor 3.14159265.
Para el caso del cuadrado del radio, este de nuevo se calcula como un
producto, por lo que se puede escribir como r * r.
Area de un c´ırculo III ´
Ejemplo (continuaci´ on)
Esta funci´ on se traduce al lenguaje C++ paso a paso de la siguiente forma:
Primero se escribe el tipo de retorno en este caso el conjunto que corresponde al tipo de dato del ´ area del c´ırculo, como es real el tipo de dato es double.
double
Posteriormente se escribe el nombre de la funci´ on area_circulo.
double area_circulo
obs´ ervese que la palabra circulo en el nombre de la funci´ on se
escribe sin tilde, ya que ´ unicamente se pueden utilizar car´ acteres del
alfabeto ingl´ es
Funciones de un par´ametro de entrada Area de un c´ırculo´
Area de un c´ırculo IV ´
Ejemplo (continuaci´ on)
Entre par´ entesis se coloca el tipo y la variable de las variables del dominio. En este caso solamente se tiene la variable r de tipo double r y se coloca una llave abierta {.
double area_circulo(double r){
En las siguientes l´ıneas se escribe el c´ alculo del ´ area del c´ırculo y se retorna el valor calculado.
double area_circulo(double r){
return 3.14159265 * r * r;
Area de un c´ırculo V ´
Ejemplo (continuaci´ on)
Despu´ es de escribir la funci´ on se cierra la llave } seguida de un punto y coma ;.
double area_circulo(double r){
return 3.14159265 * r * r;
};
Funciones de un par´ametro de entrada Area de un c´ırculo´
Area de un c´ırculo VI ´
Ejemplo (continuaci´ on)
Otra posible definici´ on de la funci´ on podr´ıa escribirse almacenando el valor del ´ area del c´ırculo en una variable de tipo double y retorn´ andolo as´ı
double area_circulo(double r){
double area;
area = 3.14159265 * r * r;
return area;
};
Esto es similar al caso cuando se utiliza la notaci´ on
area circulo(r ) = area
Agenda
1
Funciones de un par´ ametro de entrada Cuadrado de un n´ umero
Area de un c´ırculo ´
2
Compilaci´ on y ejecuci´ on de funciones
3
Funciones con m´ as de un par´ ametro de entrada
Area de un rect´ ´ angulo
Compilaci´on y ejecuci´on de funciones
La funci´ on principal main() I
Para el desarrollo de programas en este libro se utilizar´ a como lenguaje de programaci´ on el lenguaje C++. En esta primera parte del libro se definir´ an las funciones en el mismo archivo fuente. Los archivos de C++
corresponden a la extensi´ on *.cpp.
Para la generaci´ on de archivos ejecutables se utilizar´ a la salida y entrada est´ andar de la consola definida en la librer´ıa iostream, y para el manejo de las funciones del sistema se utilizar´ a la librer´ıa cstdlib.
Todo programa ejecutable elaborado en C++ tiene una funci´ on principal
que realiza los llamados a las distintas funciones tanto del lenguaje como
las definidas por el programador. Se utilizar´ a el siguiente esqueleto para
definir dichas funciones en C++
La funci´ on principal main() II
#include<iostream>
#include<cstdlib>
using namespace std;
/*
En esta parte se definen las funciones
*/
int main(){
/*
En esta parte se realiza la lectura de datos, y los llamados a las funciones
*/
cout << endl;
system("pause"); //windows return EXIT_SUCCESS;
Compilaci´on y ejecuci´on de funciones
La funci´ on principal main() III
Para el caso del ´ area del c´ırculo, el archivo fuente en C++ ser´ıa el
siguiente, en el cual se han separado el encabezado del archivo, la funci´ on del c´ alculo del ´ area y la funci´ on principal
#include<iostream>
#include<cstdlib>
using namespace std;
double area_circulo(double r){
return 3.1415965 * r * r;
};
La funci´ on principal main() IV
int main(){
double radio;
cout << "radio del circulo? = ";
cin >> radio;
cout << "El area del circulo es: ";
cout << area_circulo(radio);
cout << endl;
system("pause"); //windows return EXIT_SUCCESS;
};
Compilaci´on y ejecuci´on de funciones
La funci´ on principal main() IV
Como se aprecia en el programa anterior, se utilizan las funciones cin y cout que pertenecen a la librer´ıa de entrada y salida de flujos de datos iostream. Las dos primeras l´ıneas de c´ odigo permiten al compilador incluir las definiciones de estas funciones en el programa principal.
La funci´ on cout lo que hace es mostrar una cadena de caracteres (texto) en la consola. La instrucci´ on cout << endl, hace que se oblige a generar una nueva l´ınea en la consola.
La funci´ on cin lo que hace es asignar el valor que sea digitado en la
consola a la variable de la parte de la izquierda del operador <<. En la
instrucci´ on cin >> radio; se asigna a la variable radio el valor
digitado por el usuario.
La funci´ on principal main() V
system("pause") lo que hace es ejecutar el comando pause de
Windows que permite pedirle al usuario que presione una tecla para
continuar la ejecuci´ on del programa o en este caso por estar antes del
retorno o fin de la funci´ on principal para salir de ´ el devolviendo al
sistema operativo un valor de EXIT_SUCCESS para indicar que
ejecuci´ on del programa fue satisfactoria, es decir, que en este caso el
programa se ejecut´ o correctamente.
Compilaci´on y ejecuci´on de funciones
La funci´ on principal main() VI
El programa anterior pide al usuario digitar el radio del c´ırculo y almacena
el valor de la lectura en la variable radio. Posteriormente despliega un
mensaje y se realiza el llamado a la funci´ on area_circulo. N´ otese que
los nombres de variables (en este caso radio) en el programa principal no
necesariamente deben coincidir con los de la declaraci´ on de la funci´ on (en
este caso la funci´ on recibe un valor de tipo double llamado r), sin
embargo se debe notar que su tipo de dato s´ı debe ser el mismo.
Agenda
1
Funciones de un par´ ametro de entrada Cuadrado de un n´ umero
Area de un c´ırculo ´
2
Compilaci´ on y ejecuci´ on de funciones
3
Funciones con m´ as de un par´ ametro de entrada
Area de un rect´ ´ angulo
Funciones con m´as de un par´ametro de entrada Area de un rect´´ angulo
Agenda
1
Funciones de un par´ ametro de entrada Cuadrado de un n´ umero
Area de un c´ırculo ´
2
Compilaci´ on y ejecuci´ on de funciones
3
Funciones con m´ as de un par´ ametro de entrada
Area de un rect´ ´ angulo
Area de un rect´ ´ angulo I
Las funciones est´ an definidas de la forma f : A → B, siendo A y B conjuntos. Esta definici´ on nos permite utilizar productos cartesianos generalizados como dominio en la declaraci´ on de las funciones.
Ejemplo
La funci´ on que calcula el ´ area de un rect´ angulo es una funci´ on que tiene como par´ ametros de entrada el ancho y el largo del rect´ angulo que son valores de tipo real y retorna como salida el ´ area del rect´ angulo. Lo que puede escribirse como
area rectangulo : R × R → R.
Funciones con m´as de un par´ametro de entrada Area de un rect´´ angulo
Area de un rect´ ´ angulo II
Ejemplo (continuaci´ on)
Para el calculo del ´ area de un rect´ angulo es necesario conocer el largo y el ancho del rect´ angulo, a partir de los cuales el ´ area del rect´ angulo est´ a dada por la expresi´ on A
r= l ∗ a, donde las variables est´ an definidas as´ı:
l := Largo del rect´ angulo a := Ancho del rect´ angulo
A
r:= ´ Area del rect´ angulo de largo l y ancho a
entonces, la funci´ on matem´ atica queda definida de la siguiente forma area rectangulo : R × R → R
(l , a) 7→ l ∗ a
Area de un rect´ ´ angulo III
Ejemplo (continuaci´ on)
Para traducir a lenguaje C++ se toman las mismas reglas de traducci´ on:
Primero se escribe el tipo de retorno en este caso el conjunto que corresponde al tipo de dato del ´ area del rect´ angulo, como es real el tipo de dato es double.
double
Posteriormente se escribe el nombre de la funci´ on area_rectangulo.
double area_rectangulo
Funciones con m´as de un par´ametro de entrada Area de un rect´´ angulo
Area de un rect´ ´ angulo IV
Ejemplo (continuaci´ on)
Entre par´ entesis se colocan el conjunto de cada variable del dominio y el nombre de la variable separados por comas. En este se tienen las variables l y a correspondientes al largo y al ancho del rect´ angulo y se coloca una llave abierta.
double area_rectangulo(double l, double a){
Area de un rect´ ´ angulo V
Ejemplo (continuaci´ on)
En las siguientes l´ıneas se escribe el c´ alculo del ´ area del rect´ angulo, se retorna el valor calculado y se cierra la definici´ on de la funci´ on.
double area_rectangulo(double l, double a){
return l * a;
};
Funciones con m´as de un par´ametro de entrada Area de un rect´´ angulo
Area de un rect´ ´ angulo VI
Ejemplo (continuaci´ on)
Otra posible escritura de la funci´ on puede ser
double area_rectangulo(double l, double a){
double area;
area = l * a;
return area;
};
Esto es similar al caso cuando se utiliza la notaci´ on area rectangulo(l , a) = area
para expresar la funci´ on, las variables independientes y la dependiente.
Area de un rect´ ´ angulo VII
Ejemplo (continuaci´ on)
Para el llamado de la funci´ on se podr´ıa tener el siguiente programa principal:
#include<iostream>
#include<cstdlib>
using namespace std;
double area_rectangulo(double l, double a){
return l * a;
};
Funciones con m´as de un par´ametro de entrada Area de un rect´´ angulo
Area de un rect´ ´ angulo VIII
Ejemplo (continuaci´ on) int main(){
double largo;
double ancho;
cout << "largo? = ";
cin >> largo;
cout << "ancho? = ";
cin >> ancho;
cout << "El area del rectangulo es: ";
cout << area_rectangulo(largo, ancho);
cout << endl;
system("pause");
return EXIT_SUCCESS;
};
Volumen de un s´ olido I
Problema
Para el s´ olido que se presenta a continuaci´ on,
r
1r
2h
Funciones con m´as de un par´ametro de entrada Area de un rect´´ angulo
Volumen de un s´ olido II
Problema (continuaci´ on)
1
Establecer el modelo matem´ atico (funci´ on matem´ atica) que permita calcular el volumen del s´ olido anteriormente mostrado.
2
Escribir una funci´ on en C++ que implemente la funci´ on
anteriormente modelada, en la cual se defina π como una constante de programaci´ on.
3
Para los valores r
1= 3, h = 9/2 y r
2= 4, calcule (a mano o con
calculadora) el volumen del s´ olido y comp´ arelo con el resultado
obtenido a partir de la evaluaci´ on de la funci´ on anteriormente
implementada.
Area lateral de un vag´ ´ on I
Problema
Para el vag´ on que se presenta a continuaci´ on,
r r
b
a
Funciones con m´as de un par´ametro de entrada Area de un rect´´ angulo
Area lateral de un vag´ ´ on II
Problema (continuaci´ on)
1
Establecer el modelo matem´ atico (funci´ on matem´ atica) que permita calcular el ´ area lateral del vag´ on.
2
Escribir una funci´ on en C++ que implemente la funci´ on
anteriormente modelada.
Area lateral de un carro I ´
Problema
Para el carro que se presenta a continuaci´ on,
r1
r2
b
1a
1b
2a
2Funciones con m´as de un par´ametro de entrada Area de un rect´´ angulo
Area lateral de un carro II ´
Problema (continuaci´ on)
1
Establecer el modelo matem´ atico (funci´ on matem´ atica) que permita calcular el ´ area lateral del carro.
2
Escribir una funci´ on en C++ que implemente la funci´ on anteriormente modelada.
3