440 likes | 876 Views
Funciones. Programación en C para electrónicos. Índice. Funciones en C. Variables y parámetros. Devolución de resultados. Paso de parámetros. Por referencia. Por valor. Parámetros de la función main. Funciones en C. Programación en C para electrónica. Función.
E N D
Funciones Programación en C para electrónicos
Índice • Funciones en C. • Variables y parámetros. • Devolución de resultados. • Paso de parámetros. • Por referencia. • Por valor. • Parámetros de la función main. Funciones en C - David Carmona 2010
Funciones en C Programación en C para electrónica. Funciones en C - David Carmona 2010
Función • Una función en C, es un conjunto de sentencias identificadas por un nombre. • Una función realiza determinadas tareas sobre un conjunto de datos. • Las tareas que realiza la función siempre son las mismas. • Los datos obre los que opera la función pueden cambiar de una ejecución a otra. Funciones en C - David Carmona 2010
Función main • Todo programa en C dispone de una o más funciones; una de las cuales debe llamarse main. • main es la función principal del programa. • La ejecución del programa comienza en la función main. • Desde la función main se puede “llamar” a otras funciones, ya sean de librería o creadas por el programador. Funciones en C - David Carmona 2010
Definición de funciones • La definición de una función consta de dos partes: • Cabecera: • Indica el nombre de la función, datos que recibe y tipo de resultado que devuelve. • Cuerpo: • Conjunto de sentencias encerradas entre llaves. Funciones en C - David Carmona 2010
Sintaxis: tipoNombreFuncion (tipo1par1,…,tipoNparN) { sentencia_1; … sentencia_N; } Cabecera Cuerpo Funciones en C - David Carmona 2010
Sintaxis: • tipo: • Tipo de dato que devuelve la función como resultado. • Por defecto es int. • NombreFuncion: • Identificador que se utilizará para llamar a la función. • tipo_ipar_i: • Tipo y nombre de cada uno de los parámetros que recibe la función. • Lista de parámetros encerrados entre paréntesis y separados por comas. • Cuerpo: • Sentencias que se ejecutan en la función. • Incluyen declaración de variables, llamadas a otras funciones, etc… Funciones en C - David Carmona 2010
Prototipos de función • Para poder llamar a una función esta debe haber sido definida previamente. • Esto obliga a definir todas las funciones antes de poder ser llamadas. • El prototipo de una función permiten al compilador conocer el tipo de resultado y el numero y tipo de parámetros de una función sin necesidad de escribir todo el código de la función. Funciones en C - David Carmona 2010
Sintaxis • El prototipo de una función, coincide con su cabecera finalizada con punto y coma (;). • El prototipo de una función, siempre se escribe fuera del cuerpo de cualquier función y antes de la primera llamada a la función que representa. tipoNombreFuncion (tipo1par1,…,tipoNparN); Funciones en C - David Carmona 2010
Ejemplo Funciones en C - David Carmona 2010
Llamada • La llamada se hace utilizando el nombre de la función y una lista de parámetros entre paréntesis.(si son necesarios) • La llamada termina en punto y coma (;). • La lista de parámetros de la llamada debe coincidir en numero, orden y tipo con los indicados en la definición de la función. • Pueden ser variables, constantes o expresiones. • Ejemplo: suma (a+3,1.59); Funciones en C - David Carmona 2010
Llamada • Cuando se llama a una función, la ejecución del programa “salta” a la primera sentencia de la función. • Si llamamos a una función desde main, dejaremos de ejecutar el código de main para ejecutar el código de la función. • La función termina de ejecutarse cuando se llega al final del cuerpo de la función o se ejecuta la sentencia return. • Cuando se termina la función, se vuelve a la parte del programa desde donde se llamó a la función. • La siguiente sentencia en ser ejecutada es la siguiente a la llamada de la función. Funciones en C - David Carmona 2010
Variables y parámetros Programación en C para electrónica. Funciones en C - David Carmona 2010
Ámbito de variables • El ámbito de una variable es la parte del programa desde la cual es accesible. • El ámbito de una variable depende de en que parte del programa se declara la variable. • Clasificación: • Variables locales. • Variables globales. Funciones en C - David Carmona 2010
Clasificación de variables Funciones en C - David Carmona 2010
Variables locales • Una variable local se declara al principio del cuerpo de una función. (incluida main) • Las variables locales solo son accesibles mientras se ejecuta el código de la función en la que son declaradas. • El espacio de memoria que ocupan, se reserva en la declaración y se libera cuando se sale de la función (con return). Funciones en C - David Carmona 2010
Variables globales • Se declaran fuera del cuerpo de toda función, al principio del archivo de código principal. • Son accesibles desde cualquier función del programa. • Se crean (reserva espacio de memoria) al iniciar la ejecución del programa y se destruyen al finalizar la ejecución. Funciones en C - David Carmona 2010
Parámetros • La lista de variables declaradas en la definición de la función se conocen como parámetros formales. • El ámbito de los parámetros formales es el mismo que el de una variable local a la función. • Existen solo mientras dura la ejecución de la función. • Se pueden declarar variables locales con el mismo nombre en distintas funciones, pero no pueden coincidir con el nombre de ninguna variable global. Funciones en C - David Carmona 2010
Devolución de resultados Programación en C para electrónica. Funciones en C - David Carmona 2010
Devolución de resultados • Cuando termina la ejecución de una función, la ejecución vuelve a la zona del programa desde donde se llamó a la función. • La ejecución de la función finaliza con la sentencia return. • Si no hay ningún return, la función finaliza en la llave que cierra el cuerpo. • Cuando el tipo valor devuelto por la función no es void, la sentencia return especifica el valor que devolverá la función. Funciones en C - David Carmona 2010
Ejemplo Funciones en C - David Carmona 2010
Ejemplo • Ejemplo de llamada: Funciones en C - David Carmona 2010
Paso de parámetros Programación en C para electrónica. Funciones en C - David Carmona 2010
Paso de parámetros • Los parámetros son variables que actúan de enlace entre el programa desde donde se llama a la función y el cuerpo de la misma. • Los parámetros formales, se crean y reciben sus valores al entrar en la función (en la llamada) y se destruyen al finalizar la función. • Hay dos formas de pasar valores a la función: • Por valor. • Por referencia. Funciones en C - David Carmona 2010
Paso por valor • En la llamada de la función, los parámetros formales reciben una copia de los valores utilizados en la llamada. • Las expresiones utilizadas en la llamada como valores pasados a la función se conocen como parámetros reales. Funciones en C - David Carmona 2010
Diferencias Parámetros formales Parámetros reales Parámetros formales Funciones en C - David Carmona 2010
Ejemplo Funciones en C - David Carmona 2010
Paso por referencia • En el paso de parámetros por valor, la función recibe copias de los datos, por lo tanto no puede modificar los parámetros reales. • Para que una función pueda modificar el contenido de las variables que se le pasan como parámetro real, debemos utilizar el paso de parámetros por referencia. • El paso de parámetros por referencia hace uso de punteros y de los operadores * y & (dirección e indirección). • También permite que una función devuelva mas de un resultado. Funciones en C - David Carmona 2010
Paso por referencia • En el paso por referencia, los parámetros formales de la función son punteros. • Lo que recibe la función es la dirección de la variable que contiene el dato. • Modificando el contenido de esa dirección de memoria estaremos modificando el valor del parámetro real. • En la llamada a la función se utiliza como parametro real la dirección de la variable (&variable) Funciones en C - David Carmona 2010
Ejemplo Funciones en C - David Carmona 2010
Ejemplo Funciones en C - David Carmona 2010
Funciones y vectores • Los elementos de un vector se pueden pasar como parámetros a una función tanto por valor como por referencia. • De esta forma se pasa a la función una copia del valor o de la dirección del elemento en cuestión. • Ejemplo: Resultado = cuadrado (vector[6]); • El vector completo (todos los elementos) solo se puede pasar por referencia. Funciones en C - David Carmona 2010
Funciones y vectores • En el paso de vectores como parámetro no se utilizan los operadores & y *. • El nombre del vector actúa como referencia (puntero) al primer elemento de la tabla. • El parámetro formal de la función que recoja el vector debe definirse como un puntero del mismo tipo que el vector. • Este puntero recogerá la dirección del primer elemento del vector. Funciones en C - David Carmona 2010
Ejemplos de definición float media (float*vector); float media (floatvector[]); • No hay diferencia entre definir el parámetro como puntero o como vector. • Si la función solo va a tratar con vectores de tamaño constante, este se puede indicar en la declaración. float media (floatvector[size]); Funciones en C - David Carmona 2010
Ejemplo Funciones en C - David Carmona 2010
Ejemplo Funciones en C - David Carmona 2010
Parámetros de main Programación en C para electrónica. Funciones en C - David Carmona 2010
Argumentos de main • Es posible pasar parámetros a la función main desde la línea de comandos. • Sintaxis: intmain(intargc, char*argv[]); • La función main tiene dos argumentos: • argc: Valor entero que indica la cantidad de parametros dados a main incluido el nombre del programa. • argv: Vector de punteros a cadenas que contiene los argumentos especificados en la línea de comandos. Funciones en C - David Carmona 2010
Ejemplo • si nuestro programa se llama "programa", y lo ejecutamos con la siguiente línea de comandos: programa arg1arg2arg3arg4 • argc valdrá 5, ya que el nombre del programa también se cuenta como un argumento. • argv[] contendrá la siguiente lista: "programa", "arg1", "arg2", "arg3" y "arg4". Funciones en C - David Carmona 2010