UNIVERSIDAD LATINA INTRODUCCION A LA PROGRAMACION IV.- FUNCIONES.

21
UNIVERSIDAD LATINA INTRODUCCION A LA PROGRAMACION IV.- FUNCIONES.

Transcript of UNIVERSIDAD LATINA INTRODUCCION A LA PROGRAMACION IV.- FUNCIONES.

Page 1: UNIVERSIDAD LATINA INTRODUCCION A LA PROGRAMACION IV.- FUNCIONES.

UNIVERSIDAD LATINA

INTRODUCCION A LA PROGRAMACION

IV.- FUNCIONES.

Page 2: UNIVERSIDAD LATINA INTRODUCCION A LA PROGRAMACION IV.- FUNCIONES.

Tiempo de vida de los datosSegún el lugar donde son declaradas puede haber dos tipos de variables.

Globales: las variables permanecen activas durante todo el programa. Se crean al iniciarse éste y se destruyen de la memoria al finalizar. Pueden ser utilizadas en cualquier función.

Locales: las variables son creadas cuando el programa llega a la función en la que están definidas. Al finalizar la función desaparecen de la memoria.

Si dos variables, una global y una local, tienen el mismo nombre, la local prevalecerá sobre la global dentro de la función en que ha sido declarada.

Dos variables locales pueden tener el mismo nombre siempre que estén declaradas en funciones diferentes.

Page 3: UNIVERSIDAD LATINA INTRODUCCION A LA PROGRAMACION IV.- FUNCIONES.

Practica 41.- Escribe dos cifras

/* Variables globales y locales. */

#include <stdio.h>

int num1=1;

main() { int num2=10; printf("%d\n",num1);printf("%d\n",num2);}

Page 4: UNIVERSIDAD LATINA INTRODUCCION A LA PROGRAMACION IV.- FUNCIONES.

Que son las funciones

Nos referimos a las funciones definidas por el usuario

Las funciones son bloques de código utilizados para dividir un programa en partes más pequeñas, cada una de las cuáles tendrá una tarea determinada.

Su sintaxis es:

tipo_función nombre_función (tipo y nombre de argumentos){

bloque de sentencias}

tipo_función: puede ser de cualquier tipo de los que conocemos. El valor devuelto por la función será de este tipo. Por defecto, es decir, si no indicamos el tipo, la función devolverá un valor de tipo entero ( int ). Si no queremos que retorne ningún valor deberemos indicar el tipo vacío ( void ).

nombre_función: es el nombre que le daremos a la función.

tipo y nombre de argumentos: son los parámetros que recibe la función. Los argumentos de una función no son más que variables locales que reciben un valor. Este valor se lo enviamos al hacer la llamada a la función. Pueden existir funciones que no reciban argumentos.

bloque de sentencias: es el conjunto de sentencias que serán ejecutadas cuando se realice la llamada a la función.

Page 5: UNIVERSIDAD LATINA INTRODUCCION A LA PROGRAMACION IV.- FUNCIONES.

Declaración de las funciones

Al igual que las variables, las funciones también han de ser declaradas. Esto es lo que se conoce como prototipo de una función.

Los prototipos de las funciones pueden escribirse antes de la función main o bién en otro fichero. En este último caso se lo indicaremos al compilador mediante la directiva #include.

Page 6: UNIVERSIDAD LATINA INTRODUCCION A LA PROGRAMACION IV.- FUNCIONES.

Practica 42.- Escribe dos numeros

/* Declaración de funciones. */

#include <stdio.h>

void funcion(void); /* prototipo */

int num=5; /* variable global */

main() {

int num=10; /* variable local */

printf("%d\n",num);funcion(); /* llamada */

}

void funcion(void){

printf("%d\n",num);}

En el ejemplo adjunto podremos ver la declaración de una función ( prototipo ). Al no recibir ni retornar ningún valor, está declarada como void en ambos lados. También vemos que existe una variable global llamada num. Esta variable es reconocible en todas las funciones del programa. Ya en la función main encontramos una variable local llamada num. Al ser una variable local, ésta tendrá preferencia sobre la global. Por tanto la función escribirá los números 10 y 5.

Page 7: UNIVERSIDAD LATINA INTRODUCCION A LA PROGRAMACION IV.- FUNCIONES.

Paso de parámetros a una función

Las funciones pueden retornar un valor. Esto se hace mediante la instrucción return, que finaliza la ejecución de la función, devolviendo o no un valor.

En una misma función podemos tener más de una instrucción return. La forma de retornar un valor es la siguiente:

return ( valor o expresión );

El valor devuelto por la función debe asignarse a una variable. De lo contrario, el valor se perderá.

Page 9: UNIVERSIDAD LATINA INTRODUCCION A LA PROGRAMACION IV.- FUNCIONES.

Pseudocódigo general//definir prototipos de las funcionesint menu ();int suma (int,int);int resta (int,int);

main(){ do { opcion=menu (); switch (opcion) { case 1: printf ("La opcion elegida es la suma\n"); printf ("Introduce los dos numeros a sumar: "); scanf ("%i",&num1); scanf ("%i",&num2); resultado=suma (num1,num2); printf ("El resultado de la suma %i+%i es: %i",num1,num2,resultado); break; case 2: --- --- }// switch }while (opcion!=3);}// main

// Desglose de funciones

// funcion menu()

// funcion suma()

// funcion resta()

// Otras funciones

Page 10: UNIVERSIDAD LATINA INTRODUCCION A LA PROGRAMACION IV.- FUNCIONES.

Pseudocódigo de las funciones

//Funcion Menuint menu (){int opcion;printf ("\n");printf ("\nElige una opcion de la calculadora:\n");printf ("1. Suma\n");printf ("2. Resta\n");printf ("3. Salir\n");printf ("\n");printf ("Introduce el numero de la opcion elegida: ");scanf ("%i",&opcion);return opcion;}

//Funcion Sumaint suma (int num1, int num2){int resultado;resultado=num1+num2;return resultado;}

//Funcion Restaint resta (int num1, int num2){int resultado;resultado=num1-num2;return resultado;}

Page 11: UNIVERSIDAD LATINA INTRODUCCION A LA PROGRAMACION IV.- FUNCIONES.

Tipos de función

Una función puede: 1 – Recibir datos y 2 – Retornar datos. De esto surgen los cuatro tipos de funciones:

1.No reciben ni retornan 2.Reciben y no retornan 3.No reciben y retornan 4.Reciben y retornan Vamos a hacer un programa que sume dos números, usando los cuatro tipos de funciones:

Page 12: UNIVERSIDAD LATINA INTRODUCCION A LA PROGRAMACION IV.- FUNCIONES.

No reciben ni retornan

Para usarlas sólo tenemos que saber cómo crearlas y cómo llamarlas. Una función se crea de esta forma general:

tipo nombre(){}

El ‘tipo’ se refiere al tipo de dato (int, float, void, char) y en las funciones que no retornan siempre es void. El ‘nombre’ es el nombre de la función: cualquiera que empiece con una letra, que sea significativo y que no sea una palabra reservada. Para llamarlas sólo hay que escribir el nombre de la función seguido de sus paréntesis y un punto y coma (;). nombre();

Page 13: UNIVERSIDAD LATINA INTRODUCCION A LA PROGRAMACION IV.- FUNCIONES.

Así nuestro programa sería en versión C++:

#include<iostream>

using namespace std; void sumar(){ int num1, num2, r; cout << "Numero 1: "; cin >> num1; cout << "Numero 2: "; cin >> num2; r = num1 + num2; cout << "La suma es " << r;} int main(){ sumar();}

Como ven, todo lo que habríamos puesto en nuestro main mejor los pusimos en una función y desde el main la llamamos. En este caso la función va antes del main. Una función de este tipo que hemos usado muchas veces es getch();

Page 14: UNIVERSIDAD LATINA INTRODUCCION A LA PROGRAMACION IV.- FUNCIONES.

Reciben y No Retornan¿Cómo haríamos para pedir los dos números en el main y que la función haga la suma? Para eso tenemos que hacer una función capaz de recibir datos, entonces la sintaxis cambia un poco:

tipo nombre(tipo_var1 nombre_var1, tipo_var2 nombre_var2){} ‘tipo’ y ‘nombre’ se refieren a lo mismo y como no retorna el tipo siempre es void. Dentro del paréntesis tenemos otros aspectos: ‘tipo_var1′ se refiere al tipo de la variable que nuestra función va a recibir. ‘nombre_var1′ se refiere al nombre de esa variable. Si queremos recibir una variable hasta ahí es suficiente, si queremos otra variable ponemos una coma (,) y declaramos la siguiente variable. Para llamar la función hay que poner la variables que vamos a enviar dentro del paréntesis en el mismo orden en que las declaramos en la función: nombre(var1, var2);

Page 15: UNIVERSIDAD LATINA INTRODUCCION A LA PROGRAMACION IV.- FUNCIONES.

Así nuestro programa sería en versión C++:

#include<iostream>

using namespace std; void sumar(int num1, int num2){ int r; r = num1 + num2; cout << "La suma es " << r;} int main(){ int num1, num2; cout << "Numero 1: "; cin >> num1; cout << "Numero 2: "; cin >> num2; sumar(num1, num2);}

Pedimos los dos números en el main, los enviamos a la función, ésta los suma y los muestra.

Page 16: UNIVERSIDAD LATINA INTRODUCCION A LA PROGRAMACION IV.- FUNCIONES.

Retornan y No Reciben¿Y si ahora queremos lo contrario? Pedir los números en la función, pero mostrar el resultado en el main. Para eso necesitamos una función que retorne. Recibir es enviar datos del main a la función. Retornar es enviar datos de la función al main. Para retornar datos hay que hacer dos cosas: no usar void como tipo y usar return. De forma general: tipo nombre() { return var; } El ‘tipo’ tiene que ser del tipo de variable que queremos retornar, si nuestra variable retorna una variable int, pues el tipo de la función es int. Para indicar qué variable estamos retornando usaremos la palabra return seguido de la variable. Usualmente esto va al final de la función. Para llamar a la función hay que preparar un colchón en donde caiga la variable que está retornando. var = nombre(); La variable que está retornando nuestra función se va a almacenar en la variable ‘var’. Este es un buen momento para recordarles que las variables declaradas entre dos llaves {} únicamente existen entre esas dos llaves. O sea que la variable ‘var’ de la función no es la misma que la variable ‘var’ de la función; sin embargo la var del main está adquiriendo el valor de la var del main. Un poco confuso lo se, no se preocupen.

Page 17: UNIVERSIDAD LATINA INTRODUCCION A LA PROGRAMACION IV.- FUNCIONES.

Así nuestro programa sería en versión C++:

#include<iostream>using namespace std; int sumar(){ int num1, num2, r; cout << "Numero 1: "; cin >> num1; cout << "Numero 2: "; cin >> num2; r = num1 + num2; return r;} int main(){ int r; r = sumar(); cout << "La suma es " << r;}

Page 18: UNIVERSIDAD LATINA INTRODUCCION A LA PROGRAMACION IV.- FUNCIONES.

Reciben y Retornan

Ahora queremos que nuestra función únicamente sume, el main se va a encargar de pedir los números y sumar los resultados. Para eso necesitamos que nuestra función reciba las variables y además retorne el resultado.

Es sólo cuestión de combinar las funciones que reciben y no retornan con las que retornan y no reciben.

Page 19: UNIVERSIDAD LATINA INTRODUCCION A LA PROGRAMACION IV.- FUNCIONES.

Así nuestro programa sería en versión C++:

#include<iostream>using namespace std; int sumar(int num1, int num2){ int r; r = num1 + num2; return r;} int main(){ int num1, num2, r; cout << "Numero 1: "; cin >> num1; cout << "Numero 2: "; cin >> num2; r = sumar(num1, num2); cout << "La suma es " << r;}

Las funciones de la librería math.h son en su mayoría de este tipo. sqrt(); pow(); sin();

Page 20: UNIVERSIDAD LATINA INTRODUCCION A LA PROGRAMACION IV.- FUNCIONES.

Versión optimizada de la última función:

##include<iostream>using namespace std; int sumar(int num1, int num2){ return num1 + num2;} int main(){ int num1, num2; cout << "Numero 1: "; cin >> num1; cout << "Numero 2: "; cin >> num2; cout << "La suma es " << sumar(num1, num2);}

Page 21: UNIVERSIDAD LATINA INTRODUCCION A LA PROGRAMACION IV.- FUNCIONES.

Resolver el siguiente problema:

Si 12 discos compactos cuestan $600.00 pesosCuanto costarán 18.Hacer un programa en C++ con una función que reciba valores y retorne el resultado.