Funciones (introducción) ● Las funciones se pueden clasificar en dos tipos: – Intrínsecas. Funciones que todo C debe tener y que fueron programadas por alguien mas. ● – Ejemplos, funciones matemáticas, funciones de entrada/salida. Funciones declaradas por el usuario. ● El programador puede formar funciones, de hecho es MUY recomendable hacerlo. Funciones (cont.) ● Las funciones en programación nos ayudan a: – Dividir tareas grandes en varias más pequeñas. – Reusar código escrito por nosotros o por alguien mas. 2 Funciones (Reglas de uso) ● ● Un programa puede contener tantas funciones como sea necesario. Para crear una función se debe tener claro: – – – – Lo que la función tiene que hacer. Cuales y de que tipo son los argumentos de entrada. La necesidad o no de usar argumentos de salida. De que tipo es el valor de salida. 3 Funciones (sintaxis) ● Hay dos partes que se tienen que escribir al hacer una función: – Declaración de la función, o también llamada prototipo o encabezado: tipo_de_dato nombre_funcion(vacio, void, o lista de argumentos con su tipo de dato, con o sin nombres); ● ● Por ejemplo: int hora(); int fecha(void); double area_circulo(double); int min(int x, int y); Aquí solo se indica el tipo de dato de salida, el nombre de la función y el o los tipos de argumentos 4 usados. Funciones (sintaxis, cont.) – Definición de la función, o también llamado implementación: tipo_de_dato nombre_funcion(vacio, void, o lista de argumentos con su tipo de dato y nombres) { cuerpo de la función; //El valor de regreso debe coincidir en tipo //con el declarado en la función. return valor_de_regreso; } ● ● ● Note que el ; de la primera linea no aparece, esto es distinto a la declaración. En este caso los nombres de los argumentos son obligatorios Los parámetros en la declaración y en la definición DEBEN coincidir en número y en tipo. Los nombres no tienen por que ser los mismos. 5 Funciones (llamadas a) ● Para invocar (o llamar) a una función la sintaxis es la siguiente: <nombre_de_variable>=nombre_funcion(lista de variables, constantes, expresiones o funciones); – Ejemplos: x=sin(y); x=tan(1.2); x=cos(fabs(y)); asin(x); ● El número, tipo y orden de argumentos DEBE coincidir con los indicados en la declaración, si no coinciden el compilador indicará un error. 6 Funciones intrínsecas: ● Agrupadas por “temas”, al agrupamiento se le llama biblioteca. – Bibliotecas: ● ● ● ● stdio.h math.h string.h stdlib.h estandar I/O. matemáticas. manejo de cadenas de caracteres. manejo de memoria dinámica. 7 Funciones intrinsecas de matemáticas (math.h) Función Arg entrada Arg sal. acos(x) double double asin(x) double double atan(x) double double atan2(y,x) double double cos(x) double double cosh(x) double double sin(x) double double sinh(x) double double tan(x) double double tanh(x) double double ceil(x) double double exp(x) double double fabs(x) double double floor(x) double double fmod(x) double double log(x) double double log10(x) double double pow(x,y) double double rand() int int sqrt(x) double double srand(i) unsigned int nada salida arco coseno de x, salida en radianes. arco seno de x, salida en radianes. arco tangente de x, salida en radianes. arco tangente, salida entre +-Pi coseno de x (x expreseada en radianes). coseno hiperbólico de x (x expreseada en radianes). seno de x (x expreseada en radianes). seno hiperbólico de x (x expreseada en radianes). tangente de x (x expreseada en radianes). tangente hiperbólica de x (x expreseada en radianes). El numero entero más pequeño menor o igual a x. e^x. valor absoluto de x. El numero entero más pequeño mayor o igual a x. residuo de x/y. logaritmo natural de x. logaritmo base 10 de x. x^y numero pseudoaleatorio entre [0,RAND_MAX] Raíz cuadrada de x. Reinicialización de la semilla para rand() Funciones intrínsecas de entrada/salida (stdio.h) Función fclose fflush fgets fopen fprintf fscanf printf scanf sprintf Arg entrada Arg sal. FILE * int FILE * int char*, int, FILE * char * char *, char* FILE * variable int variable int variable int variable int variable int salida Cierra un arch. Regresa un 0 con exito, EOF si no. Limpia una entrada.Regresa un 0 con exito, EOF si no. Obtiene una cadena de un archivo. Apuntador a cadena Abre un arch. Regresa un apuntador con exito, EOF si no. Esc. salida con formato a un archivo. Regresa # caract. impresos Lee de un archivo de texto. Regresa # valores leidos. Esc. salida con formato a pantalla. Regresa # caract. impresos Lee desde el teclado con formato. Regresa # valores leidos. Esc. salida con formato a buffer. Regresa # caract. impresos