• No se han encontrado resultados

Funciones en programaci´on y condicionales I Funciones de uno o varios par´ametros

N/A
N/A
Protected

Academic year: 2021

Share "Funciones en programaci´on y condicionales I Funciones de uno o varios par´ametros"

Copied!
40
0
0

Texto completo

(1)

Funciones de uno o varios par´ ametros

Jonatan Gom´ ez Perdomo, Ph.D.

[email protected]

Arles Rodr´ıguez, Ph.D.(c)

[email protected]

Camilo Cubides, Ph.D.(c)

[email protected]

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

(2)

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

(3)

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.

(4)

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

(5)

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

2

Esta funci´ on tambi´ en podr´ıa notarse como

f = (x, x

2

) : (x ∈ R) .

(6)

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){

(7)

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;

(8)

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.

(9)

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

(10)

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

(11)

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

(12)

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

2

Para 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.

(13)

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

(14)

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;

(15)

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;

};

(16)

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

(17)

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

(18)

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++

(19)

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;

(20)

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;

};

(21)

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;

};

(22)

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.

(23)

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.

(24)

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.

(25)

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

(26)

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

(27)

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.

(28)

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

(29)

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

(30)

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){

(31)

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;

};

(32)

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.

(33)

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;

};

(34)

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;

};

(35)

Volumen de un s´ olido I

Problema

Para el s´ olido que se presenta a continuaci´ on,

r

1

r

2

h

(36)

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.

(37)

Area lateral de un vag´ ´ on I

Problema

Para el vag´ on que se presenta a continuaci´ on,

r r

b

a

(38)

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.

(39)

Area lateral de un carro I ´

Problema

Para el carro que se presenta a continuaci´ on,

r1

r2

b

1

a

1

b

2

a

2

(40)

Funciones 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

Escribir una funci´ on en C++ que implemente la funci´ on matem´ atica

previamente modelada, en la cual se utilice la composici´ on de las

funciones de suma de n´ umeros reales, area circulo y area rectangulo.

Referencias

Documento similar

Pero antes hay que responder a una encuesta (puedes intentar saltarte este paso, a veces funciona). ¡Haz clic aquí!.. En el segundo punto, hay que seleccionar “Sección de titulaciones

El contar con el financiamiento institucional a través de las cátedras ha significado para los grupos de profesores, el poder centrarse en estudios sobre áreas de interés

&#34;No porque las dos, que vinieron de Valencia, no merecieran ese favor, pues eran entrambas de tan grande espíritu […] La razón porque no vió Coronas para ellas, sería

[r]

La última de las mesas, integrada por representantes del sector privado, abordará soluciones aplicadas a situaciones reales de Datos Abiertos para que sirvan de acicate a

En cuarto lugar, se establecen unos medios para la actuación de re- fuerzo de la Cohesión (conducción y coordinación de las políticas eco- nómicas nacionales, políticas y acciones

En el capítulo de desventajas o posibles inconvenientes que ofrece la forma del Organismo autónomo figura la rigidez de su régimen jurídico, absorbentemente de Derecho público por

D) El equipamiento constitucional para la recepción de las Comisiones Reguladoras: a) La estructura de la administración nacional, b) La su- prema autoridad administrativa